我們先簡單搞個linux,首先掌握其骨架
1.先在一個硬碟上建立兩個分區,并且建立檔案系統,然後将兩個分區分别挂載在/mnt/boot,/mnt/myroot上。
其中/mnt/boot模仿真正linux中/boot./mnt/myroot模仿 根目錄‘/’
2.安裝grub.grub-install --root-diretctory=/mnt /dev/sdb。就會自動建立個grub目錄
這裡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,如需轉載請自行聯系原作者