Linux学习笔记---使用BusyBox创建根文件系统(三)

本文档详细介绍了如何在Linux环境下手动创建/etc/init.d/rcS、/etc/fstab和/etc/inittab文件,包括文件内容、作用及创建过程。通过这些配置,系统能够成功挂载根文件系统,处理热插拔设备,并设置重启、关闭等相关操作。完成配置后,系统启动和运行更加顺畅。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

创建/etc/init.d/rcS 文件

创建/etc/fstab 文件

创建/etc/inittab 文件


创建/etc/init.d/rcS 文件

通过nfs加载根文件系统成功后,在串口终端上有一个提示,不能打开'/etc/init.d/rcS'文件

因为现在还没有创建这个文件呢,所以系统提示不能打开。

现在就要手动去创建这个文件

在rootfs文件夹中创建etc文件夹,然后在etc文件夹里面继续创建init.d文件夹,然后在init.d文件夹中常见 rcS文件

在 rcS 中输入以下内容 

 #!/bin/sh

   PATH=/sbin:/bin:/usr/sbin:/usr/bin:$PATH

   LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/lib:/usr/lib

   export PATH LD_LIBRARY_PATH

 

   mount -a

   mkdir /dev/pts

   mount -t devpts devpts /dev/pts

 

  echo /sbin/mdev > /proc/sys/kernel/hotplug

  mdev -s

第 1 行,表示这是一个 shell 脚本。

第 3 行,PATH 环境变量保存着可执行文件可能存在的目录,这样我们在执行一些命令或

者可执行文件的时候就不会提示找不到文件这样的错误。

第 4 行,LD_LIBRARY_PATH 环境变量保存着库文件所在的目录。

第 5 行,使用 export 来导出上面这些环境变量,相当于声明一些“全局变量”。

第 7 行,使用 mount 命令来挂载所有的文件系统,这些文件系统由文件/etc/fstab 来指定,

所以我们一会还要创建/etc/fstab 文件。

第 8 和 9 行,创建目录/dev/pts,然后将 devpts 挂载到/dev/pts 目录中。

第 11 和 12 行,使用 mdev 来管理热插拔设备,通过这两行,Linux 内核就可以在/dev 目录

下自动创建设备节点。关于 mdev 的详细内容可以参考 busybox 中的 docs/mdev.txt 文档。

下来要给rcS文件设置可执行权限

下面就可以重启一次开发板,看看刚才提示的信息是否还存在。

在串口终端中输入 reboot 命令,重启开发板

重启之后可以看到已经不提示不能打开'/etc/init.d/rcS'文件了,但是由有了新的提示 不能读取到 /etc/fstab 文件

创建/etc/fstab 文件

接下来就要继续创建/etc/fstab文件

进入etc目录中新建fstab文件

在fstab文件中输入以下内容

   #<file system> <mount point>  <type>   <options>  <dump>  <pass>

  proc         /proc           proc    defaults    0       0  

  tmpfs        /tmp            tmpfs   defaults    0       0

  sysfs         /sys            sysfs   defaults    0       0

保存退出,然后重启开发板。

重启后这时候就没有文件打开失败的提示了。

创建/etc/inittab 文件

进入到etc文件夹中,然后新建inittab文件。

inittab 的详细内容可以参考 busybox 下的文件 examples/inittab。init 程序会读取/etc/inittab这个文件,inittab 由若干条指令组成。每条指令的结构都是一样的,由以“:”分隔的 4 个段组

成,格式如下:

<id>:<runlevels>:<action>:<process>

<id>:每个指令的标识符,不能重复。但是对于 busybox 的 init 来说,<id>有着特殊意义。对于 busybox 而言<id>用来指定启动进程的控制 tty,一般我们将串口或者 LCD 屏幕设置为控制 tty。

<runlevels> :对 busybox 来说此项完全没用,所以空着。

<action>:动作,用于指定<process>可能用到的动作。

<process> :具体的动作,比如程序、脚本或命令等。

在inittab文件中输入以下内容:

   #etc/inittab

   ::sysinit:/etc/init.d/rcS

   console::askfirst:-/bin/sh

   ::restart:/sbin/init

   ::ctrlaltdel:/sbin/reboot

   ::shutdown:/bin/umount -a -r

   ::shutdown:/sbin/swapoff -a

第 2 行,系统启动以后运行/etc/init.d/rcS 这个脚本文件。

第 3 行,将 console 作为控制台终端,也就是 ttymxc0。

第 4 行,重启的话运行/sbin/init。

第 5 行,按下 ctrl+alt+del 组合键的话就运行/sbin/reboot,看来 ctrl+alt+del 组合键用于重

启系统。

第 6 行,关机的时候执行/bin/umount,也就是卸载各个文件系统。

第 7 行,关机的时候执行/sbin/swapoff,也就是关闭交换分区

输入完成后保存退出,然后重启开发板。

可以看到系统已经成功的挂载了根文件系统。

上一篇:Linux学习笔记---使用BusyBox创建根文件系统(二)  下一篇:Linux学习笔记---使用BusyBox创建根文件系统(四)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值