為ubuntu最小鏡像mini.iso添加uefi支持


背景

Ubuntu除minimal install外一直有一種在線安裝的最小鏡像mini.iso
安裝完成20.04系統和open ssh服務磁盤占用2.1GB內存開銷86M
非常適合功能單一的服務器穩定使用,缺點官方不提供UEFI啟動支持

實踐

獲取官方20.04的mini.iso
虛擬機測試legacy安裝正常uefi模式沒有反應
掛載后證實光盤根目錄下沒有EFI文件夾

轉機

經過搜索發現官方預留了EFI啟動鏡像位於${CDROM}/boot/grub/efi.img
只需解壓到光盤根目錄即可,對於制作好的啟動盤可以手動復制EFI文件夾
個人更希望EFI寫入iso方便Ventoy或esxi使用

探索

Linux

使用linux廣泛使用的mkisofs打包,需要注意bootable參數配置,腳本如下:

#!/bin/bash
URL='http://archive.ubuntu.com/ubuntu/dists/focal/main/installer-amd64/current/legacy-images/netboot/mini.iso'
# check dependencies
hash wget 7z mkisofs &>/dev/null || 
(
    echo sudo is required to install wget, 7z, mkisofs
    sudo apt install -y wget p7zip-full genisoimage
)
# exit if download fail
wget $URL || exit
mkdir image
7z x ./mini.iso -oimage/
cd image
7z x ./boot/grub/efi.img
mkisofs -o ../mini_uefi.iso -b isolinux.bin -c boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -JR -V "Ubuntu Custom ISO" .
cd ..
# remove tmp files
rm -rf mini.iso image/
echo Output image is $PWD/mini_uefi.iso

Windows

想起Windows平台有UltraISO可以向鏡像內添加文件
鏡像大小74M未超免費限制,嘗試添加EFI保存順利啟動
具體過程不再贅述

瑕疵

成功添加EFI支持並完成安裝,啟動后系統卡住按鍵無反應

/dev/sda2: clean, 66394/622592 files, 671734/24789856 blocks

ssh可以訪問,斷定系統正常啟動,應該是分配tty終端問題
不出所料Ctrl + Alt + F1切換tty1正常login而報錯信息為tty7
考慮到服務器基本上依靠ssh不會插顯示器,可以忽略

尾聲

既知道原因,我們可以修改默認tty1正常啟動
Ubuntu默認安裝開啟圖形界面啟動splash綁定tty7
因此關閉splash並更新grub啟動配置信息即可

sudo vi /etc/default/grub
# 找到並刪除splash quiet
GRUB_CMDLINE_LINUX_DEFAULT="splash quiet"
# 修改后內容為
GRUB_CMDLINE_LINUX_DEFAULT=""
# 保存並更新grub重起生效
sudo update-grub2
sudo reboot

參考

Bug #1429030 “netboot mini.iso doesn't support UEFI boot” : Bugs : debian-installer package : Ubuntu
command line - How to check if two or more programs are installed using a bash script? - Ask Ubuntu
Edit and repack .iso bootable image
grub2 - How can I permanently remove the boot option "quiet splash"? - Ask Ubuntu


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM