今天自己利用vmwere軟件做了一個小型的linux,下面把實驗心得寫出來分享給大家。
實驗環境:使用vmwere軟件,在已經創建的一個虛擬機中再添加一塊硬盤,5G左右就已經足夠(爲了以後實驗別太吝嗇自己的空間喲)。
實驗操作:
打開此虛擬機,以root或管理員身份登錄後,使用fdisk –l命令查看硬盤分區情況,此時發現新添加的硬盤未分區(這裏我們假設第一塊硬盤是/dev/sda,第二塊硬盤是/dev/sdb),此處便是/dev/sdb未做任何處理,
然後對此塊硬盤進行分區,由於實驗需要,暫時我們將此硬盤分爲兩個分區(根分區和boot分區)/dev/sdb1及/dev/sdb2,方便操作以及後期的使用,此處我們將這兩個分區格式化爲ext3格式,
fdisk /dev/sdb
mke2fs –j /dev/sdb1
mke2fs –j /dev/sdb2
(此處硬盤規劃:將/dev/sdb1創建爲500M大小,爲以後的boot分區,/dev/sdb1創建爲512M大小爲以後的根分區/)
然後建立兩個掛載點,/mnt/boot及/mnt/sysroot,分別將先前的兩個分區掛載在這兩個掛載點上,
mkdir /mnt/boot
mkdir /mnt/sysroot
mount /dev/sdb1 /mnt/boot
然後我們就可以在第一塊分區上創建系統引導程序(這裏我們使用grub-install命令創建grub),
grub-install –root-directory=/mnt /dev/sdb
cd /mnt/boot
切換到/mnt/boot目錄下,我們就發現已經多了幾個文件,更包含grub目錄,此時grub目錄下面並沒有grub.conf配置文件,稍後我們將作配置,這時系統肯定無法啓動,
接下來我們再將系統中的vmlinuz-2.6.18-164.el5(此處因爲版本不同可能會和您的版本號不同)文件拷到/mnt/boot目錄下,
cp vmlinuz-2.6.18-164.el5.img .
此時我們需要對另外一個文件initrd-2.6.18-164.el5.img作一定的處理,切換到系統/tmp目錄中,創建一個目錄:
mkdir initrd
cp /boot/ initrd-2.6.18-164.el5.img /tmp/initrd
切換到此目錄下利用zcat和cpio命令展開此文件
zcat initrd-2.6.18-128.el5.img |cpio –id
然後編輯展開目錄下的init文件中
修改mkrootdev -t ext3 -o defaults,ro /dev/vol0/root
爲mkrootdev -t ext3 -o defaults,ro sda2
保存退出(此處sda2爲要創建文件的根目錄)
然後再將此目錄下的文件歸檔並壓縮到指定目錄,命名爲initrd.gz
rm –f initrd-2.6.18-164.el5.img
find . |cpio -H newc -o --quiet |gzip -9 > /mnt/boot/initrd.g
這時再來編輯grub配置文件grub.conf
default=0
timeout=10
title kingshuo's little linux
root (hd0,0)
kernel /vmlinuz ro root=/dev/sda2 quiet
initrd /initrd.gz
然後進入/mnt/sysroot目錄中創建系統必需的目錄
mkdir -p {boot,proc,sys,dev,home,root,etc/{rc.d,sysconfig,init.d},bin,sbin,lib,usr/{bin,sbin,lib,include},var/{log,run},tmp,mnt,opt,media
再編輯/mnt/sysroot/etc/inittab文件
id:3:initdefault:
si::sysinit:/etc/rc.d/rc.sysinit
保存退出
再編輯/mnt/sysroot/etc/rc.d/rc.sysinit文件
#!/bin/bash
echo -e echo -e "\t\tWelcome to \033[31;1mLittle\033[0m Linux..."
/bin/bash
因爲此文件是個系統初始化啓動腳本故需要添加執行權限
chmod +x /mnt/sysroot/etc/rc.d/rc.sysinit
此時系統還沒有運行環境,需要使用拷貝bash
還需要拷貝與bash運行調用的庫函數
ldd /bin/bash
cp /bin/bash /mnt/sysroot/bin/bash
cd /mnt/sysroot/bin/
cp /lib/libtermcap.so.2 /mnt/sysroot/lib/
cp /lib/libdl.so.2 /mnt/sysroot/lib/
cp /lib/libc.so.6 /mnt/sysroot/lib/
cp /lib/ld-linux.so.2 /mnt/sysroot/lib/
然後進入/mnt/boot/bash,建立鏈接
ln –sv bash sh
這時您就可以在當前虛擬機上測試了
這時您還不太相信吧,接下來您可以再新建一個虛擬機,利用現有的虛擬磁盤
準備停當後打開剛建的虛擬機,見證奇蹟的時刻到了!
當然在這個系統中不能實現過多的命令,當您想實現更多的功能,想要添加相應的命令時,按照上述命令執行相應命令及函數的拷貝,自己趕快實驗吧!
由於能力有限,可能某些細節及原理上敘述的不是很清楚,也難免有錯誤,歡迎大家指正!下面有個小腳本能夠實行小linux的創建,有興趣的話可以嘗試一下!