学习啦>学习电脑>操作系统>Linux教程>

基本制作过程

若木分享
基本制作过程
创建目录和文件
在imgae目录下创建dev, proc , sys , etc ,mnt 四个目录
 
创建如下两个设备文件
 
 mknod  -m 600 dev/console c 5 1 
 mknod -m 600 dev/null c  1 3 
proc,dev,sys都是用来mount内核信息的。
 
etc是用来放配制文件的。
 
更详细请看“Linux 目录详解”
测试一下
加载内核信息
首先要加载内核信息。其中$INITRD为一环境变量,保存镜像文件夹的位置如“/initrd”。
 
mount -v --bind /dev $INITRD/dev
mount -vt devpts devpts $INITRD/dev/pts 
mount -vt tmpfs shm $INITRD/dev/shm 
mount -vt proc proc $INITRD/proc
mount -vt sysfs sysfs $INITRD/sys
更改根文件系统
chroot $INITRD /bin/sh 
命令进入busybox的环境。出现shell的命令提示符,可以试着输入几个命令,看看执行结果。例如,输入 fdisk -l 命令看看是否能显示
mdev自动生成/dev下的设备文件
上节用chroot方法试验busybox时,为了简单,是用“绑定”的方式把主机的/dev中的设备文件映射到image目录下的dev目录。在initramfs上,这种方法显然不能使用。
 
生成系统的设备文件,现在通常都是用udev动态生成,而initramfs为了做到通用,动态生成的要求是必须的。在busybox中有一个mdev命令,就是用来动态生成设备文件,填充到/dev目录的。
 
在系统启动时,用
 
 mdev -s 
命令可以根据内核的sysfs文件系统在/dev目录中自动生成相应的设备文件。
 
命令执行前,需要先挂载内核的proc和sysfs虚拟文件系统。
最简init文件
在image目录下写一个最简单的init脚本,这也默认我们是用initramfs制作镜像了,linuxrc文件可以删除,只有在制作initrd时都用它。
 
#!/bin/sh 
mount -t proc proc /proc 
mount -t sysfs sysfs /sys 
mdev -s 
/bin/sh 
系统最终会启动到一个shell交互环境,和测试一下中类似。前提是dev,proc,sys目录已经创建。
 
为init文件设置可执行权限,当前目录为镜像根目录:
 
chmod +x init 
有些busybox配置中,mdev命令需要读取/etc/mdev.conf文件,为了避免出错信息,我们创建一个空文件。
 
touch etc/mdev.conf 
mdev.conf文件是用 来控制mdev生成的设备文件的读写权限的,在这里我们不需要对设备文件设置特别的权限,就使用mdev缺省的660的权限设置。有关mdev的设备文件 权限的控制详细信息,可参考busybox源码树docs目录下的mdev.txt文件。 
    75378