快轉到主要內容

用虛擬機安裝Linux From Scratch + Systemd + UEFI開機

· 民國114年乙巳年
·
切換繁體/簡體
分類   Linux系統 Linux系統安裝教學
標籤   Linux From Scratch Systemd QEMU-KVM
目錄

Linux From Scratch (LFS) 是一個教你從頭打造Linux系統的教科書,它不太算發行版,但有提供教材,讓你跟著書中的內容一步步編譯出自己的Linux系統。

這篇文章Ivon將討論在虛擬機裡面安裝LFS的作法。

做出了一個基本可用的GNU/Linux系統,使用Systemd當init系統,UEFI開機。LFS版本12.3。

從htop輸出的開機時間計算,這次在虛擬機安裝LFS大約花了22小時,比上一次2022年在實機安裝LFS要快了一些些。

安裝完成後記得在LFS官網登記名字,並寫上第一次安裝的版號!

1. LFS是否能在虛擬機安裝?
#

雖然LFS官方不推薦在虛擬機裡面安裝,建議實機操作,除了能夠加倍折磨自己之外,也能在debug硬體驅動的時候學到更多東西。不過硬要在虛擬機裝的話其實是可以的。

使用虛擬機的好處當然就是方便練習,也不怕搞壞電腦檔案。方便保存LFS編譯的結果,稍作修改就可以安裝到實機上繼續使用。還有,透過虛擬機與宿主機共享剪貼簿,直接複製LFS書上的指令,在終端機貼上,不需要全程手打。

LFS的問題在於,官方不提供任何開機映像檔。即使是像Gentoo這類什麼都沒有的發行版,至少也有提供名為stage3的檔案系統與LiveUSB給使用者可以進行bootstrap,讓使用者能夠跳過建立檔案系統這一步。但LFS連bootstrap都沒有,就是得要從頭建立檔案系統,再來組裝其餘的Linux系統組件。

這下知道拼圖的logo怎麼來的了吧。

為此,安裝LFS需要一個Linux系統環境,才能夠在硬碟上建立新的檔案系統,並chroot進去將LFS剩餘的組件編譯完成。

從這個方向去思考的話,那麼只要建立一個Linux虛擬機,再於虛擬機裡面新增一塊空的虛擬磁碟,就能安裝LFS。

2. 準備Linux虛擬機
#

  1. 關於虛擬機軟體,使用Virt Manager或VirtualBox都可以,只要能夠額外新增虛擬磁碟並掛載上去。我這裡是在Ubuntu上使用Virt Manager

  2. 安裝一個Ubuntu虛擬機,以UEFI開機,分配至少8GB RAM,還有64GB虛擬磁碟空間。

  3. 安裝工具共享宿主機與虛擬機剪貼簿,例如Virt Manager就是安裝Spice Tools。然後關閉自動休眠。

  4. 安裝完成後關機。新增一個空的虛擬硬碟,至少64GB。例如Virt Manager就是點選虛擬機 → 新增硬體 → 新增儲存空間,新增一個叫做linuxfromscratch.qcow2的磁碟映像檔。為防止驅動問題,使用SATA類型的磁碟。

  5. 在虛擬機開機之後,用lsblk指令確認,這塊未使用的空間就是能夠安裝LFS的地方。

  6. 如果要閱讀LFS教材,除了在虛擬機內開啟LFS網頁之外,也可以選擇從宿主機SSH連線到虛擬機內部。這樣更方便貼上指令。

3. 格式化虛擬磁碟
#

  1. 關於LFS的EFI與GRUB的安裝位置,我是直接安裝在新的虛擬磁碟,也就是LFS所在的磁碟,而非與Ubuntu虛擬機的EFI裝在一起,這樣它能夠自己獨立開機。因為我準備要安裝GRUB在這個新的磁碟,所以要建立兩個分區。虛擬機RAM夠大所以不建立SWAP。

  2. 使用fdisk工具分割硬碟。

  3. lsblk指令確定虛擬磁碟裝置代號,我這裡是/dev/sda,因此用這個指令選取:

sudo fdisk /dev/sda
  1. 建立EFI分區
# 使用GPT硬碟分割表
g
#輸入d刪除全部分區
d
#寫入
w
fdisk /dev/sda
#新增EFI分區
n
1
Fisrt sector: Enter
Last Sector: +512M
t
#修改標籤為EFI
uefi
  1. 建立根目錄分區
#新增根目錄分區
n
2
Fisrt sector: Enter
Last Sector: Enter
# 寫入變更
w
  1. 格式化EFI分區
sudo mkfs.vfat -F32 /dev/sda1
  1. 格式化根目錄分區,選取EXT4檔案系統
sudo mkfs.ext4 /dev/sda2
  1. 現在新的硬碟已經可以使用,將其掛載到/mnt/LFS,這是LFS手冊裡面環境變數$LFS使用的路徑。
sudo mkdir /mnt/lfs

sudo mount /dev/sda2 /mnt/lfs

sudo chown root:root /mnt/lfs

sudo chmod 755 /mnt/lfs
  1. 如果不想每次執行指令都加sudo,使用su root切換為root帳號,再來建立LFS系統。

  2. 在安裝好LFS系統之後,再新建一個空的UEFI開機的虛擬機,就可以用裝有LFS的虛擬磁碟開機。

4. 開始安裝LFS系統
#

參考官網手冊指示安裝:Linux From Scratch Systemd Stable

照著步驟走就行,到最後一章登出LFS的chroot系統,將Ubuntu虛擬機關機。然後把裝有LFS的虛擬磁碟掛接到另外一個虛擬機,應該能夠順利開機。

當然了,LFS一開始很難自力更生,要往後讀BLFS的內容。你可能還是需要用Ubuntu虛擬機開機,然後用chroot進入LFS安裝額外套件。這個時候就把LFS的虛擬磁碟重新掛接在Ubuntu虛擬機就行了。

5. 安裝Neofetch
#

Neofetch是印出系統資訊的小工具,因為用Bash寫的非常容易安裝。雖然已經停止維護了不過還能用。

Github將原始碼下載到/mnt/lfs/sources目錄,解壓縮,然後make install即可。

Neofetch的替代品有Screenfetch、Fastfetch等等。

相關文章

安裝Gentoo Linux筆記,Systemd + 桌面環境 + 中文化
分類   Linux系統 Linux系統安裝教學
標籤   Gentoo Systemd
安裝訣竅與心得:Linux From Scratch + SysVinit
分類   Linux系統 Linux系統安裝教學
標籤   Linux From Scratch
Fedora使用心得,GNOME桌面 + Nvidia驅動安裝 + Fcitx5中文輸入法
分類   Linux系統 Linux系統安裝教學
標籤   Fedora

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。

(留言板載入中)這是Giscus留言板,需要Github帳號才能留言。支援Markdown語法,若要上傳圖片請善用外部圖床。您的留言會在Github Discussions向所有人公開。

Click here to edit your comments.

(留言板載入中)這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用外部圖床網站。