linux - Buildroot - 建了一个文件系统,如何登录?引导挂起

标签 linux embedded embedded-linux boot buildroot

有人可以帮助我了解我需要如何配置 buildroot,以便我能够成功启动我自己的文件系统并登录到它吗?

我有一个(看似)工作的内核,现在我创建了自己的文件系统(除了将控制台设置为 ttyAMA0 之外,没有真正更改构建根目录中的任何设置),但引导过程似乎没有任何问题地挂起对此:

....
[    3.130000] VFS: Mounted root (ext3 filesystem) on device 179:2.
[    3.140000] Freeing init memory: 144K
Starting logging: OK
Starting network...
ip: RTNETLINK answers: Operation not permitted
ip: SIOCSIFFLAGS: Permission denied

整个启动日志在这里可见:http://paste.ubuntu.com/1364407/

我了解到/etc/inittab 控制着启动过程,内容是这样的:

# Startup the system
null::sysinit:/bin/mount -t proc proc /proc
null::sysinit:/bin/mount -o remount,rw / # REMOUNT_ROOTFS_RW
null::sysinit:/bin/mkdir -p /dev/pts
null::sysinit:/bin/mkdir -p /dev/shm
null::sysinit:/bin/mount -a
null::sysinit:/bin/hostname -F /etc/hostname
# now run any rc scripts
::sysinit:/etc/init.d/rcS

# Put a getty on the sttyAMA0::respawn:/sbin/getty -L ttyAMA0 115200 vt100 # GENERIC_SERIAL

# Stuff to do for the 3-finger salute
::ctrlaltdel:/sbin/reboot

# Stuff to do before rebooting
null::shutdown:/etc/init.d/rcK
null::shutdown:/bin/umount -a -r
null::shutdown:/sbin/swapoff -a

关于我的配置有什么问题有什么建议吗? 关于创建我自己的 Linux 系统时所需的“通常必要配置”的良好概述的任何提示?

最佳答案

这个问题是由 Buildroot 邮件列表中的提交者提出的。解决方案是提交者直接使用 Buildroot 输出/目标目录的内容作为其根文件系统,即使 Buildroot 文档明确告诉不要这样做。这是因为 Buildroot 不以根用户身份运行,因此无法在输出/目标中正确创 build 备文件或调整权限/所有权。这些步骤是在创建根文件系统镜像时完成的,这要归功于一个名为 fakeroot 的神奇工具。

因此,如果有人想要将根文件系统提取到 SD 卡分区或类似的东西上,应该让 Buildroot 生成一个 tar 镜像,然后将其作为根文件系统提取到 SD 卡分区中。

由于这个问题很常见,我们现在在输出/目标中添加了一个名为 THIS_IS_NOT_YOUR_ROOT_FILESYTEM 的文件,其中包含有关此问题的详细信息。参见 http://git.buildroot.net/buildroot/commit/?id=9226a9907c4eb0fffab777f50e88b74aa14d1737 .

关于linux - Buildroot - 建了一个文件系统,如何登录?引导挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13429068/

相关文章:

c - 按 S_ISDIR 类型筛选 scandir

linux - 在 cat << 'EOT' 之后使用 sed 仅替换生成的脚本中的一个变量

c - 简单的中断处理/多线程程序?

linux - request_irq 成功但从未检测到中断

java - ActiveMQ 仅在必要时保留在磁盘上

python - 修复路径以便 python 可以识别 z3 模块

python - 如何修复执行器运行失败 [/bin/sh -c pip install --upgrade --force-reinstall pip==9.0.3 && pip install --upgrade 'setuptools<45'] :

c - 隐藏内部类型

c - 基于整数的传感器融合/卡尔曼滤波器

linux-kernel - 如何从 ARM v7 上的 Linux 内核空间刷新 L1 和 L2 缓存中的地址范围?