红联Linux门户
Linux帮助

解决挂载根文件系统后的环境变量问题

发布时间:2008-03-18 10:10:19来源:红联作者:lanterns
  以前在利用友善提供的文件系统通过NFS启动后,发现其在/bin/qtopia脚本文件以及在rcS中设置的环境变量根本就没起作用,今天试了一下把这些环境变量加到/etc/profile文件中,问题解决。另外,我还试了一下删除文件系统中的linuxrc,发现删除后没什么影响。而删除/sbin/init则出现问题

  在文件系统中,配置文件主要存放在 /etc 目录里面。《基于 S3C2410 的 Linux 全线移植文档》里面介绍的文件系统由于需要加载文件系统的时候把 /mnt/etc 目录拷贝到 /etc ,所以不得不使用 /linuxrc 脚本,不过如果是这样的话需要在内核传递参数里设置 init=/linuxrc ,因为默认是启动 /sbin/init 初始化脚本的( busybox 编译安装以后生成的 linuxrc 文件是指向 /bin/busybox 的符号文件,应该把它删掉,自己重写脚本)。在我做的文件系统里不采用这种方法,所以不用设置 init=/linuxrc 。

  Busybox init 的流程在《构建嵌入式 linux 系统》这本书里面有介绍,我在这简单的说一下:如果不采用 linuxrc 的话就会执行 /sbin/init 脚本( busybox init ),它会去分析 /etc/inittab 脚本(如果没有的话就使用它默认的来代替,一般没必要自己为它编写这个脚本,用它默认的就行),然后会执行 /etc/init.d/rcS 命令(在我制作的文件系统里就把配置都写入了这个文件)。

  至于 rcS 这个目录的编写主要是安排哪些目录挂载哪些次级文件系统,比如 /proc 要挂载 proc 文件系统、 /sys 要挂载 sysfs 、 /dev/shm 要挂载 tmpfs 、 /tmp 要挂载 ramfs 等等。此外,还可以让内核重新挂载根文件系统也行,具体可以参考 rcS 这个脚本里面的内容,我的是参考友善的那个来写的。另外,可以在这个脚本里执行一些命令,比如设置 ip 地址、建立符号链接(我为 usb 设备的挂载特意建立了 /dev/sda1 的符号链接)、设置主机名等等。 Busybox init 还会调用 /etc/profile 来设置 PATH ,具体请看文件。

  在《构建嵌入式 linux 系统》提到了怎样建立和建立哪些设备文件,但因为 devfs 这个东西的存在,我们可以不再为这些设备文件而费心了。因为内核在申请设备的同时会向 devfs 申请相应的设备文件,然后 devfs 会帮我们在 /dev 目录建立相应的设备文件,做到内核使用多少设备就建立多少设备文件,不像以前那样要预先建立一大堆可以你不会用到的设备文件(不过从 2.6.12 内核开始,这个 devfs 选项从内核配置中删除,好像是用 udevfs 之类来代替了,不过很多人还是喜欢用回 devfs。
文章评论

共有 0 条评论