//配置忽略
//修改环境变量支持交叉编译器
make
make install CONFIG_PREFIX=/home/nfs/rootfs

Linux 内核 init 进程最后会查找用户空间的 init 程序,找到以后就会运行这个用户空间的 init 程序,从而切换到用户态。如果 bootargs 设置 init=/linuxrc,那么 linuxrc 就是可以作为用户空间的 init 程序,所以用户态空间的 init 程序是 busybox 来生成的.
mkdir lib
cd */gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/arm-linuxgnueabihf/libc/lib
cp *so* *.a ~/home/nfs/rootfs/lib/ -d
cd */gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/lib
cp *so* *.a ~/home/nfs/rootfs/lib/ -d
cd */gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/
usr/lib
cp *so* *.a ~/home/nfs/rootfs/usr/lib/ -d
cd rootfs //进入根文件系统目录
du ./lib ./usr/lib/ -sh //查看 lib 和 usr/lib 这两个目录的大小
在根文件系统中创建其他文件夹,如 dev、 proc、 mnt、 sys、 tmp 和 root 等
修改uboot 里面的 bootargs 环境变量会设置“root”的值
root=/dev/nfs nfsroot=[<server-ip>:]<root-dir>[,<nfs-options>] ip=<client-ip>:<server-ip>:<gwip>:<netmask>:<hostname>:<device>:<autoconf>:<dns0-ip>:<dns1-ip>
例:
setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs nfsroot=192.168.1.250:
/home/zuozhongkai/linux/nfs/rootfs,proto=tcp rw ip=192.168.1.251:192.168.1.250:192.168.1.1:
255.255.255.0::eth0:off' //设置 bootargs
saveenv //保存环境变量
boot //启动内核
1 #!/bin/sh
2
3 PATH=/sbin:/bin:/usr/sbin:/usr/bin:$PATH
4 LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/lib:/usr/lib
5 export PATH LD_LIBRARY_PATH
6
7 mount -a //使用 mount 命令来挂载所有的文件系统,这些文件系统由文件/etc/fstab 来指定,所以一会还要创建/etc/fstab 文件。
8 mkdir /dev/pts
9 mount -t devpts devpts /dev/pts
10
11 echo /sbin/mdev > /proc/sys/kernel/hotplug //使用 mdev 来管理热插拔设备,通过这两行, Linux 内核就可以在/dev 目录下自动创建设备节点。关于 mdev 的详细内容可以参考 busybox 中的 docs/mdev.txt文档。
12 mdev -s
1 #
2 proc /proc proc defaults 0 0
3 tmpfs /tmp tmpfs defaults 0 0
4 sysfs /sys sysfs defaults 0 0
inittab 的详细内容可以参考 busybox 下的文件 examples/inittab
1 #:::
2 ::sysinit:/etc/init.d/rcS
3 console::askfirst:-/bin/sh
4 ::restart:/sbin/init
5 ::ctrlaltdel:/sbin/reboot
6 ::shutdown:/bin/umount -a -r
7 ::shutdown:/sbin/swapoff -a
| 动作 | 描述 |
|---|---|
| sysinit | 在系统初始化的时候 process 才会执行一次。 |
| respawn | 当 process 终止以后马上启动一个新的。 |
| askfirst | 和 respawn 类似,在运行 process 之前在控制台上显示“Please press Enter to activatethis console.”。只要用户按下“Enter”键以后才会执行 process。 |
| wait | 告诉 init,要等待相应的进程执行完以后才能继续执行。 |
| once | 仅执行一次,而且不会等待 process 执行完成。 |
| restart | 当 init 重启的时候才会执行 procee。 |
| ctrlaltdel | 当按下 ctrl+alt+del 组合键才会执行 process。 |
| shutdown | 关机的时候执行 process |