在VMware上制作一个简单的Linux(4)

bin sbin lib etc proc sys dev boot

在制作initrd.gz是时候我们使用busybox虚拟出了各种我们所需要的binsbinusr目录下我们所需要的脚本,在制作真正的root分区的时候我们也使用同样的方法。

这些内容都在initrd.gz中提到

cp /tmp/busybox-1.20.2/_install/* /mnt/sysroot/ -a

cd /mnt/sysroot

rm linuxrc -f

mkdir -p proc sys etc/rc.d/init.d tmp dev/pts boot var/log lib/modules

mknod /mnt/sysroot/dev/console c 5 1

mknod /mnt/sysroot/dev/null c 1 3

内核初始化完成后就要进行init进程的管理,而管理init的配置文件是/etc/inittab文件,/etc/inittab定义了系统默认启动级别,操作系统的初始化,虚拟终端的启动等内容;而OS的初始化需要用到一个非常重要的配置文件,即/etc/rc.d/rc.sysinit,这个文件是操作系统能够启动的核心文件。因此我们在小linux中也要创建相对应目录下的/mnt/sysroot/etc/inittab,/mnt/sysroot/etc/fstab,/mnt/sysroot/etc/sysctl.conf,和/mnt/sysroot/etc/rc.d/rc.sysinit这些个文件

我们先来编辑/mnt/sysroot/etc/inittab文件

vim /mnt/sysroot/etc/inittab 创建inittab文件

::sysinit:/etc/rc.d/rc.sysinit 表示执行系统初始化,使用的是/etc/rc.d/rc.sysinit脚本

::respawn:-/bin/sh 表示系统一旦退出/bin/sh,则会立即重新启动/bin/sh

::shutdown:/bin/umount -a -r 表示当执行shutdown的时候,系统卸载所有的文件系统

接下来编写/mnt/sysroot/etc/fstab这个文件,它是保重系统初始化过程中挂载/etc/fstab中的所有设备

vim /mnt/sysroot/etc/fstab 创建/fstab文件

设置fstab中的各项参数

proc /proc proc defaults 0 0 表示把proc挂载至/proc,文件系统类型是proc,选项是默认选项,不备份也不检查

sysfs /sys sysfs defaults 0 0 表示把sysfs挂载至/sys,文件系统类型是sysfs,选项是默认选项,不备份也不检查

/dev/hda1 /boot ext3 defaults 0 0 表示把/dev/hda1挂载至/boot,文件系统类型是ext3,选项是默认选项,不备份也不检查

/dev/hda2 / ext3 defaults 0 0 表示把/dev/hda2挂载至/,文件系统类型是ext3,选项是默认选项,不备份也不检查

只要在/mnt/sysroot/etc/rc.d/rc.sysinit中使用mount -a的命令,就意味着,系统初始化启动的时候会自动挂载/etc/fstab中我们所设置的这些设备,并挂载到相应的位置。

之后我们来编写内核参数文件/mnt/sysroot/etc/sysctl.conf

vim /mnt/sysroot/etc/sysctl.conf 创建内核参数文件

net.ipv4.ip_forward = 1 1表示开启网络

kernel.hostname=yinshuo.linuxtest 设置主机名为 yinshuo.linuxtest

我们再按照之前寻找ext3和jbd模块的方法来复制pcnet32模块和他所依赖的mii模块,他们是VMware虚拟出的网卡驱动

cp /lib/modules/2.6.18-308.el5/kernel/drivers/net/pcnet32.ko /mnt/sysroot/lib/modules/pcnet32.ko

cp /lib/modules/2.6.18-308.el5/kernel/drivers/net/mii.ko /mnt/sysroot/lib/modules/mii.ko

现在我们来编写系统初始化脚本文件/mnt/sysroot/etc/rc.d/rc.sysinit

vim /mnt/sysroot/etc/rc.d/rc.sysinit 创建系统初始化文件

#!/bin/sh

echo -e "\t\033[31mYinShuo little Linux\033[0m" 以红色字体显示YinShuo little Linux

mount -t proc proc /proc 挂载proc到/proc,文件系统类型为proc

mount -t sysfs sysfs /sys 挂载sysfs到/sys,文件系统类型为sysfs

mount -o remount,rw / 重新以读写的方式挂载根文件系统

mdev -s 探测所有设备,并在dev下创建设备文件

mount -a 挂载/etc/fstab下的所有设备

sysctl -p 使内核参数文件/etc/sysctl.conf立即生效

insmod /lib/modules/mii.ko 装载内核模块mii

insmod /lib/modules/pcnet32.ko 装载内核模块pcnet32

ifconfig lo 127.0.0.1/8 设置本地回环ip=127.0.0.1 netmask=255.0.0.0

ifconfig eth0 172.16.106.9/16 设置网卡eth0的ip=172.16.106.9 netmask=255.255.0.0

chmod +x /mnt/sysroot/etc/rc.d/rc.sysinit 给/mnt/sysroot/etc/rc.d/rc.sysinit执行权限

至此我们的root分区的制作也制作完毕

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/20003.html