我们先简单搞个linux,首先掌握其骨架
1.先在一个硬盘上创建两个分区,并且创建文件系统,然后将两个分区分别挂载在/mnt/boot,/mnt/myroot上。
其中/mnt/boot模仿真正linux中/boot./mnt/myroot模仿 根目录‘/’
2.安装grub.grub-install --root-diretctory=/mnt /dev/sdb。就会自动建立个grub目录
上图中的initramfs-2.6...和vmlinuz赋值到/mnt/boot/中,并在/mnt/boot/grub目录中建立grub.conf文件。
这里default=0是指默认启动第一个root kernel initrd就是567行的内容。
timeout=10只等待选择启动grub菜单界面的时间。
这里kernel后面可以加个quiet或txt.分别表示系统开启时不显示,显示在txt菜单中。
3.在/mnt/myroot/目录下加入bin,boot,dev,etc/rc.d,home,lib,proc,root,sbin,sys,tmp,usr/{bin,sbin},var/log
4.把二进制程序/sbin/init复制到/mnt/myroot/sbin
把/bin/bash 赋值到/mnt/myroot/bin
5.执行init需要对应得一些库
使用ldd /sbin/init去查找init需要什么库文件,将需要的库文件拷贝到/mnt/myroot/lib中即可。
用同样的方法把/bin/bash需要的库同样拷贝进去。
6.因为redhat6的系统中与redhat5系统在init中做了修改,这里原来在/etc/inittab中的功能分割到了/etc/inittab和/etc/init目录中。因为/etc/rc.d/rc.sysinit的执行由/etc/init/rcS.conf中执行,所以必须把这个文件也要辅助过去。
7.自己建立个/mnt/myroot/etc/rc.d/rc.sysinit文件,
在里面开启/bin/bash
1 #! /bin/bash
2 #
3 echo -e "\tWelcome to \e[31msuper star \033[0m linux."
4 insmod /lib/modules/mii.ko
5 insmod /lib/modules/pcnet32.ko
6 ifconfig eth0 192.168.18.201/24
7 ifconfig lo 127.0.0.1/8
8 /bin/bash
8.建立完成之后一定要复制/etc/selinux到/mnt/myroot/selinux中。因为没有这个软件不可以正常启动init
9.注意这里还不可以,会提示你init:failed to spawn....:no such factory等等问题。这时候你需要建立一个bash的软链接/bin/sh 命令ln -s bash /mnt/myroot/bin/sh .
ps:这里说明一下/bin ,/sbin,/usr/bin,/usr/sbin的区别
1./bin目录下都是系统必备的执行程序。例如 awk cut mail bash sleep su
2./sbin放一些系统管理的必备程序。例如 ifconfig free mke2fs mkswap modinfo fsck restart fdisk
3./usr/bin目录下放置的一些应用软件的执行文档。例如 find locate free g++ renice
4./usr/sbin下放置一些关于网络管理的文档。例如
其实linux磁盘镜像文件中包含很多rpm包,可以将其挂载在/mnt/cdrom上,设置在/etc/yum.repos.d/cdrom.repo文件,将baseurl=/mnt/cdrom/Packages。就可以正常使用yum install 命令了。
注意使用sync 命令将缓冲区的内容写到磁盘中,防止一旦断电后缓冲区的内容未写入磁盘中。在使用cp之后也要使用两次。
本文转自 神迹难觅 51CTO博客,原文链接:http://blog.51cto.com/ji123/1944199,如需转载请自行联系原作者