我在 BusyBox 中编译了一个自定义的 linux 内核。BusyBoxinit
不支持运行级别。当内核在 BusyBox 中启动时,它首先执行init
它在/etc/inittab
. BusyBoxinit
没有/etc/inittab
. 当没有inittab
找到时,它具有以下行为:
::sysinit:/etc/init.d/rcS
Run Code Online (Sandbox Code Playgroud)
这部分对我来说很清楚,但我想知道如何管理启动网络、创建串行端口或启动java
进程的守护进程。我查看了驻留在其中的脚本,/etc/init.d/
但我不明白如何管理它们。我正在寻找一个很好的教程或解决方案来自己控制这些服务,而无需像buildroot
. 我想了解这些脚本是如何工作的以及如何在中创建设备/dev/
(现在我只有console
和ttyAM0
)。
我想使用以下命令对原始磁盘映像进行分区:
#creating the blank image
$ dd if=/dev/zero of=example.img bs=1M count=50
#write the partition table
$ parted example.img mktable msdos
#creating partition but not the file system
#creating fat32 primary partition 1 to 15 MB
$ parted example.img mkpart p fat32 1 15
#creating ext3 primary partition 16 to end
$ parted example.img mkpart p ext3 16 -0
Run Code Online (Sandbox Code Playgroud)
这些命令不会创建文件系统。我怎么能那样做?我正在尝试mkfs
命令,parted
但它显示没有找到命令。如何在外部创建文件系统?
我正在制作一个嵌入式 Linux 发行版,我的开发板是 Raspberry Pi。我的内核版本是 3.2.27,没有 initramfs 和我的根文件系统如下:
/lib /* contains kernel modules */
/bin /sbin /usr/bin /usr/sbin /* contains busybox utils binaries */
/usr/lib /* contains cross-compiler tool chain libs */
linuxrc /* generated by busybox, kept in / */
/dev /* I have created console and ttyAM0 manually but added mode devices by udev */
/etc/init.d/rcS /* required by busybox init */
Run Code Online (Sandbox Code Playgroud)
内核启动后,我得到了一个控制台(我不知道它是否是 busybox 控制台)。我在下面有几个问题
/proc
)。ps -e
它时,它什么也没显示。为什么会发生这种意外行为?
我使用嵌入式 Linux,我在没有 initramfs 的情况下编译了内核,内核启动正常。但它显示我rcS
没有找到文件我已经把它放进去/etc/init.d/rcS
,我的rcS
文件看起来像
#!/bin/sh
echo "Hello world"
Run Code Online (Sandbox Code Playgroud)
内核挂载文件系统后,它会打印Hello world
.
任何人都可以告诉/解释为什么需要这个文件以及我如何按特定顺序启动这些启动脚本?
我正在使用带有 busybox 的 Raspberry Pi,它工作正常,但我在启动时卡住了。