一. 简介
本文完善之前创建的根文件系统。
上一篇文章通过 设置 bootargs参数,使开发板通过 nfs服务从 ubuntu系统加载根文件系统。文章地址如下:
根文件系统初步测试-CSDN博客
二. 完善根文件系统
上一篇文章通过 设置 bootargs参数,使开发板通过 nfs服务从 ubuntu系统加载根文件系统。但是,最后根文件系统启动后,有如下错误提示信息:
所以,本文解决这个报错问题。那么,就需要完善根文件系统。接下来具体学习完善根文件系统的具体操作。
完善根文件系统
1. 创建 /etc/init.d/rcS 文件
根据上面根文件系统报错的信息,说是缺少 /etc/init.d/rcS文件。那么就需要创建 /etc/init.d/rcS 文件。没有 /etc/init.d 目录,开发板上电后,进入到根文件系统根目录下,创建 /etc/init.d 目录:
再创建 rcS文件,输入如下命令:
vi 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
第
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
文档。
注意:创建好文件
/etc/init.d/rcS
以后一定要给其可执行权限!!!
赋予
/etc/init.d/rcS文件可执行权限:
/etc/init.d # chmod 777 rcS
设置好以后就重新启动 开发板,启动后如下:
可以看到,提示找不到
/etc/fstab
文件,还有一些其他的错误,我们先把
/etc/fstab
这个错误解决了。
2. 创建 /etc/fstab 文件
上面开发板的根文件系统提示 找不到 /etc/fstab文件,这里来解决这个报错。
前面我们说了“
mount -
a
” 挂载所有根文件系统的时候需要读取
/etc/fstab
,因为
/etc/
fstab
里面定义了该挂载哪些文件。
在
rootfs
中创建
/etc/fstab
文件,
fstab 文件
在
Linux 开机以后自动配置哪些需要自动挂载的分区,fstab 文件中的内容格式如下:
<file system> <mount point> <type> <options> <dump> <pass>
<file system>
:要挂载的特殊的设备,也可以是块设备,比如
/dev/sda
等等。
<mount point>
:挂载点。
<type>
:文件系统类型,比如
ext2
、
ext3
、
proc
、
romfs
、
tmpfs
等等。
<options>
:挂载选项,在
Ubuntu
中输入“
man mount
”命令可以查看具体的选项。一般使用
defaults
,也就是默认选项,
defaults
包含了
rw
、
suid
、
dev
、
exec
、
auto
、
nouser
和
async
。
<dump>
:为
1
的话表示允许备份,为
0
不备份,一般不备份,因此设置为
0
。
<pass>
:磁盘检查设置,为
0
表示不检查。根目录‘
/
’设置为
1
,其他的都不能设置为
1
,其他的分区从
2
开始。一般不在
fstab
中挂载根目录,因此这里一般设置为
0
。
按照上述格式,在
fstab
文件中输入如下内容: