2021-05-12 14:32:11
自製mini的Linux系統
如何打造一個小的Linux系統。這個可以當做一個很簡單的啟動盤,並使它能夠成功啟動且能有簡單的shell環境。
步驟概略:
(1)劃分一塊磁碟,用來裝系統
(2)給硬碟劃分至少兩個分割區,一個為boot引導分割區,一個為/根分割區
(3)為分割區建立檔案系統,並掛載到兩個不同目錄
(4)在掛載boot的分割區建立grub引導目錄
(5)複製核心vmlinux與initrd檔案到boot目錄下,然後根據檔案編寫grub下的引導組態檔
(6)建立根檔案系統
(7)移植bash等命令到根目錄下
(8)啟動測試
(一)劃分磁碟
製作Linux系統,就需要有硬碟來裝載它。所以我們就需要劃分一塊硬碟來裝製作的Linux檔案系統。這個硬碟不需要太大,這裡我就劃分一個20G的硬碟來裝載它吧!先用lsblk來看看這個分割區
(二)劃分分割區
既然是一個mini系統,那這裡就給它劃分兩個分割區吧!一個boot用來引導核心啟動,一個為真正的根分割區
建立分割區用fdisk這個命令、
(三)建立檔案系統
分割區建立完成,但是想要它可以裝檔案就要為它建立檔案系統。那就把它建立為ext4的檔案系統吧!
mkfs -t ext4 /dev/sdb1
mkfs -t ext4 /dev/sdb2
完成這兩步後,分割區已經建立完成。就可以把它們掛載到指定目錄下了
(四)建立grub引導目錄
Linux的啟動需要載入核心,而核心的載入就需要grub裡的組態檔來定義
grub-install --root-directory=/mnt/ /dev/sdb(這條命令就是用來生成grub引導檔案的,它會根據CentOS6的核心檔案來生成grub。然後把生成的檔案指定到目標磁碟上)
(五)複製核心與initrd到boot目錄下
複製完成後就可以來編寫grub下的引導組態檔了,它會根據組態檔來逐步引導各個程式的啟動。如下圖:1、所表示這個系統的預設的啟動核心,0就是我們所製作的這個核心。2、表示如果在三秒內未指定為哪個核心,則系統就會啟動預設核心。3、表示核心的名字。4、指明啟動時的硬碟為哪一塊硬碟。5、kernel 指明核心檔案放置的相對位置,root 指明根目錄的位置,selinux 表示把selinux這個安全策略關閉,init 表示我們要用的shell環境,這裡我們用的是bash。
注意:編寫時需要注意要把根目錄的分割區名更改為sda,因為當硬碟去引導系統時系統裡只有一塊硬碟,它會被自動識別為/dev/sda
(六)建立根檔案系統
啟動分割區準備好後就需要準備根分割區了。這個分割區的作用就是整個系統的真正的分割區,整個系統的組態檔、資料都會放置在這個分割區內。所以我們就需要在這個分割區內建立目錄來分別存放各個資料檔案。而有些系統所必須的檔案目錄我們就可以在這裡建立完畢。
建立目錄的命令如下:
cd /mnt/sysroot mkdir -pv {proc,dev,lib,bin,sbin,home,root,etc/rc.d,usr/{lib,bin,sbin},var/{log,run,lock},tmp,mnt,sys}
(七)移植命令到根下
系統建立完成後還需要複製一些基本的命令到根下,如bash、ls、cat、cd、hostname、vim等以這些命令來完成某些操作,實現基本的shell環境。所以我們需要編寫一個指令碼完成這些命令的組態檔的複製以及所依賴的庫檔案的複製。
下面這個指令碼就可以幫我們完成這個任務
這些命令複製完成後。到這裡一個mini的Linux系統已經基本建立完成了。為了看它是否能啟動我們可以先切根看看能否切進這個系統裡去
chroot /mnt/sysroot (如果切入成功,則說明系統已經基本建立完成)
(八)啟動測試
最後,我們就需要把硬碟解除安裝下來。然後用虛擬機器用這塊硬碟來重新啟動,啟動成功後執行複製的幾個簡單命令。到這裡整個Linux系統已經製作完成。
本文永久更新連結地址:http://www.linuxidc.com/Linux/2017-09/146941.htm
相關文章