參考
- 從零開始製作一個linux iso映象 _
- 詳解:把 Linux 系統做成 Livecd
- 從零製作 Ubuntu 20.04 LiveCD
- LiveCDCustomization(ubuntu官方文件)
- 從零開始製作 Ubuntu 22.04 Live CD
- Create a Custom Debian Live Environment (CD or USB)
方法一: live-build
這是debian官方的live映象構建工具,此方法相對第二種更簡單
- 安裝:
apt install live-build
- 新建一個空資料夾,比如
liveb
,cd進去 - 進行配置:
lb config --mirror-binary https://mirrors.ustc.edu.cn/debian/ \ --mirror-binary-security https://mirrors.ustc.edu.cn/debian-security/ \ --mirror-bootstrap https://mirrors.ustc.edu.cn/debian/ \ --mirror-chroot-security https://mirrors.ustc.edu.cn/debian-security/ \ --distribution bookworm
這裡的lb就是live-build的簡寫,這個命令使用了中科大的映象,不使用映象會很慢(此處映象是一會使用lb build下載檔案時的映象),--distribution
指定了debian的版本,也可以選擇bullseye等別的版本,我選了debian12 - 此時可以自定義軟體包,在
liveb/config/package-lists/
下面新建檔案:[隨便命名].list.chroot
裡面寫上要裝的軟體包,比如:
vim
network-manager
htop
- 此方法構建的
liveb/chroot
目錄,直接chroot進去會不能聯網,要手動配置/etc/resolv.conf
,所以這裡我直接在配置檔案裡寫好要安裝的軟體包
- 在
liveb
中執行lb build
(需要root),一般十幾分鍾就會完成構建,成功的話有綠色提示,在liveb
根目錄下有生成的iso檔案,liveb/binary
下面有iso檔案的內容 - 按照方法二第11步的方法新建分割槽,然後把binary下面的東西複製進去,就可以啟動live系統了
方法二: 手動構建
此方法全程sudo su
執行即可,很多命令都要root許可權
- apt安裝
debootstrap squashfs-tools
,中間有其他需要的軟體包我忘了是什麼了,提示找不到命令自己安裝一下即可 - 使用
debootstrap
構建基本根目錄:
mkdir rootfs
debootstrap bookworm rootfs https://mirrors.ustc.edu.cn/debian/
此處的第一個引數是發行版,我仍然選擇bookworm,第二個引數是資料夾,第三個是使用的映象;大概需要10分鐘下載完成,根目錄約300MB
3. chroot rootfs
,這會切換根目錄
ubuntu官方文件裡提到了要mount一下裝置檔案,然後再chroot
,但是我測試發現不mount也沒問題,命令如下:
mount --bind /sys ./rootfs/sys
mount --bind /proc ./rootfs/proc
mount --bind /dev/pts ./rootfs/dev/pts
解除安裝(離開chroot之後再解除安裝):
umount ./rootfs/sys
umount ./rootfs/proc
umount ./rootfs/dev/pts
- 為live系統安裝核心,有很多方法,最簡單的方法是直接
apt install linux-image-6.1.0-25-amd64
,但是我對核心有特殊要求,所以自己編譯了,方法:debian核心編譯手冊,然後dpkg -i
安裝編譯好的檔案 - 安裝必要軟體包:
live-boot live-boot-initramfs-tools
這兩個軟體包是必須的!沒有將會無法啟動live系統 - 自定義系統,自己想怎麼搞都行,我的指令碼:
apt update
echo -e "deb http://mirrors.ustc.edu.cn/debian bookworm main contrib non-free non-free-firmware\ndeb http://mirrors.ustc.edu.cn/debian bookworm-updates main contrib non-free non-free-firmware\ndeb http://mirrors.ustc.edu.cn/debian bookworm-backports main contrib non-free non-free-firmware\ndeb http://mirrors.ustc.edu.cn/debian-security/ bookworm-security main contrib non-free non-free-firmware" > /etc/apt/sources.list
apt install -y lightdm
apt install -y lxqt-core
apt install -y firefox-esr
apt install -y bash-completion vim sudo htop network-manager gparted mpv nm-tray firmware-linux firmware-iwlwifi rfkill pciutils
sed -i '/# enable bash completion in interactive shells/{n;N;N;N;N;N;N;s/^#//gm}' /etc/bash.bashrc
passwd -d root
apt upgrade -y
apt autoclean
我這裡用了lxqt的桌面,有幾個坑:
- lxqt-core軟體包很小,但是不會自動安裝顯示管理器,所以要先裝一個lightdm
- debootstrap構建的根目錄很小,很多韌體都沒有,要聯網需要安裝
network-manager nm-tray firmware-iwlwifi rfkill
- 更新initrd:
update-initramfs -c -k all
必須執行,否則initrd會無法啟動 - exit命令退出chroot
- 構建uefi引導:
dd if=/dev/zero of=vefi.img bs=1M count=32 # 建立虛擬硬碟
mkfs.vfat vefi.img # 在虛擬硬碟新建fat32檔案系統
mkdir vefi-mnt
mount vefi.img vefi-mnt #掛載虛擬硬碟
mkdir vefi-mnt/boot
grub-install --boot-directory=vefi-mnt/boot --efi-directory=vefi-mnt --removable vefi.img #生成grub的bootx64.efi載入程式和grub.cfg
sed -i 's/^/# /' vefi-mnt/EFI/BOOT/grub.cfg
echo -e "menuentry \"Live system (amd64)\" {\n linux /live/vmlinuz boot=live\n initrd /live/initrd.img\n}" >> vefi-mnt/EFI/BOOT/grub.cfg # 配置grub
umount vefi.img # 解除安裝
grub-install這個命令預設選擇本機的efi和boot目錄,不要無引數執行,否則會更新本機的grub
10. 構建squashfs:mksquashfs rootfs/ filesystem.squashfs
這會在執行目錄下生成filesystem.squashfs檔案,live環境一般有manifest檔案,但是我沒加也成功了,具體怎麼生成可以參考開頭那幾個連結
11. 建立啟動u盤:確定自己的u盤已經是gpt分割槽表,不是的改一下,新建一個fat32分割槽,我的帶lxqt桌面的live系統只有1.1g,分割槽新建4g應該是夠的,這幾步用windows的diskgenius操作就行,具體操作百度即可
12. 複製檔案:我的u盤目錄結構(注意是剛才新建的fat32分割槽),initrd.img和vmlinuz是rootfs/boot
下面的兩個檔案重新命名複製來的(分別是初始檔案系統和核心映象):
main@n960kp:/media/main/linux-live$ ls -R
.:
EFI live
./EFI:
BOOT
./EFI/BOOT:
BOOTX64.CSV BOOTX64.EFI grub.cfg grubx64.efi mmx64.efi
./live:
filesystem.squashfs initrd.img vmlinuz
- EFI和boot資料夾在
vefi.img
虛擬硬碟裡,掛載之後再複製到u盤裡,不掛載看不到資料夾 live
這個資料夾名稱不固定,但是要和grub.cfg裡寫的對應
- 完成,進入電腦bios啟動吧
後記
- ubuntu那邊有一個叫
cubic
的軟體,應該比這種手動方法方便,但是debian好像沒有 - 關於啟動u盤,我只會做uefi啟動的,bios啟動的u盤製作應該更復雜;很多教程都要求燒寫u盤,其實這對於uefi啟動u盤不必要(bios啟動有要求),新建分割槽把引導檔案放進去即可,這樣還可以製作多個啟動選項的u盤
vefi-mnt/boot/grub
下面有x86_64-efi i386-efi
兩個資料夾,下面檔案很多,我也不知道有什麼用,反正沒複製他也能啟動,u盤速度慢的可以不復制live-boot live-boot-initramfs-tools
兩個軟體包會修改initrd.img,使他可以在live環境中正常啟動