移植Linux:如何制作rootfs?安排!

一口Linux
关注

8、 创建其他需要的目录$ mkdir  dev  etc  mnt  proc  var  tmp  sys  root 

9、 添加库

我们安装的交叉工具链中有我们所需要的可以在开发板上使用的库, 将其拷贝到_install目录下即可:

$ cp  /home/linux/toolchain/gcc-4.6.4/arm-arm1176jzfssf-linux-gnueabi/lib/  .  -a

修改文件权限并删除静态库和共享库文件中的符号表

$chmod  +w  lib
$chmod  +w  lib
$ rm  lib.a
$ arm-none-linux-gnueabi-strip  lib

删除不需要的库,确保所有库大小不超过8M

$ du  -mh   lib/

10、 添加系统启动文件

在etc下添加文件inittab,文件内容如下:

#this is run first except when booting in single-user mode.
::sysinit:/etc/init.d/rcS
# /bin/sh invocations on selected ttys
# start an "askfirst" shell on the console (whatever that may be)
::askfirst:-/bin/sh
# stuff to do when restarting the init process
::restart:/sbin/init
# stuff to do before rebooting
::ctrlaltdel:/sbin/reboot

在etc下添加文件fstab,文件内容如下:

#device     mount-point   type      options         dump     fsck order
proc       /proc         proc      defaults       0       0
tmpfs      /tmp         tmpfs     defaults          0           0
sysfs      /sys          sysfs     defaults         0           0
tmpfs      /dev         tmpfs     defaults          0           0

【注意】这里我们挂载的文件系统有三个proc、sysfs和tmpfs。在内核中proc和sysfs默认都支持,而tmpfs是没有支持的,我们需要确保内核有tmpfs的支持。

修改内核配置:

$ make menuconfig
File systems --->
 Pseudo filesystems --->
  [*] Virtual memory file system support (former shm fs)
  [*] Tmpfs POSIX Access Control Lists

重新编译内核

在etc下创建init.d目录,并在init.d下创建rcS文件,rcS文件内容为:

#!/bin/sh
# This is the first script called by init process
/bin/mount  -a  挂载fstab制定的所有文件系统
echo  /sbin/mdev  >  /proc/sys/kernel/hotplug
/sbin/mdev  -s

为rcS添加可执行权限:

$ chmod   +x  init.d/rcS

在etc下添加profile文件,文件内容为:

#!/bin/sh
export HOSTNAME=farsight
export USER=root
export HOME=root
export PS1="[$USER@$HOSTNAME W]# "
PATH=/bin:/sbin:/usr/bin:/usr/sbin
LD_LIBRARY_PATH=/lib:/usr/lib:$LD_LIBRARY_PATH
export PATH  LD_LIBRARY_PATH
mknod dev/console c  5  1    该文件节点是必须的

重要:新制作的文件系统尺寸若超出8M,删除不需要的库文件,比如c++库等。

11. 测试

制作完毕的根文件系统可以让开发板启动后通过nfs挂载到ubuntu中,

删除原先的/source/rootfs$ sudo  rm  -rf  /source/rootfs
将我们新建的根文件系统拷贝到/source/rootfs目录下$sudo  mkdir  /source/rootfs
$ sudo  cp  _install   /source/rootfs   –a
设置uboot环境变量# setenv serverip 192.168.9.120
# setenv ipaddr 192.168.9.233
# setenv bootcmd tftp 41000000 uImage;tftp 42000000 exynos4412-fs4412.dtb;bootm 41000000  –  42000000
#setenv bootargs root=/dev/nfs nfsroot=192.168.9.120:/source/rootfs rw console=ttySAC2,115200  init=/linuxrc  ip=192.168.9.233
# saveenv

重新启动开发板,查看是否能够正常挂载,功能是否正常

声明: 本文由入驻OFweek维科号的作者撰写,观点仅代表作者本人,不代表OFweek立场。如有侵权或其他问题,请联系举报。
侵权投诉

下载OFweek,一手掌握高科技全行业资讯

还不是OFweek会员,马上注册
打开app,查看更多精彩资讯 >
  • 长按识别二维码
  • 进入OFweek阅读全文
长按图片进行保存