在無光驅、無 USB、無 PXE 環境下,若當前 Linux 系統仍可啟動,可通過安裝 GRUB 並配置其引導安裝程序內核 (vmlinuz + initrd.img) 實現「Linux 裝 Linux」。本文記錄 GRUB 編譯安裝、配置文件構建、啟動參數構造的完整流程。
vmlinuz、initrd.img
# 下載源碼
wget ftp://ftp.gnu.org/gnu/grub/grub-0.97.tar.gz
tar zxvf grub-0.97.tar.gz
cd grub-0.97
# 編譯安裝
./configure
make
make install
# 安裝後文件位置
# /usr/local/sbin/grub, /usr/local/sbin/grub-install
# /usr/local/share/grub/i386-pc/stage1, stage2, *.stage1_5
# 複製階段文件到 /boot/grub/
mkdir -p /boot/grub
cp /usr/local/share/grub/i386-pc/* /boot/grub/
# /boot/grub/grub.conf
default=0
timeout=5
title Install New Linux
root (hd0,0)
kernel /linuxdir/vmlinuz
initrd /linuxdir/initrd.img
# 建立軟鏈接
ln -sf /boot/grub/grub.conf /boot/grub/menu.lst
關鍵路徑說明:
root (hd0,0):GRUB 命名法,第一塊硬盤 (hd0) 第一個分區 (0),對應 /dev/sda1 或 /dev/hda1/linuxdir/:存放安裝程序內核與初始內存盤的目錄,需根據實際情況調整
# 方法一:grub-install (推薦)
grub-install /dev/sda # 安裝到 MBR
# 或指定分區
grub-install /dev/sda1 # 安裝到分區引導扇區
# 方法二:GRUB Shell 互動安裝
grub
grub> root (hd0,0)
grub> setup (hd0) # 安裝到 MBR
grub> quit
# 安裝 grub2 包 (發行版包管理器)
# 生成配置
grub2-mkconfig -o /boot/grub2/grub.cfg
# UEFI 系統
grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
# 手動添加安裝菜單項 (/etc/grub.d/40_custom)
menuentry 'Install New Linux' {
set root=(hd0,1)
linux /linuxdir/vmlinuz inst.repo=https://server/repo
initrd /linuxdir/initrd.img
}
# 重新生成配置
grub2-mkconfig -o /boot/grub2/grub.cfg
| 參數 | 示例 | 說明 |
|---|---|---|
| inst.repo | https://192.168.1.100/centos | 安裝源地址 (HTTP/FTP/NFS) |
| inst.ks | https://server/ks.cfg | Kickstart 自動應答文件 |
| ip | ip=dhcp 或 ip=192.168.1.5::192.168.1.1:255.255.255.0 | 網絡配置 |
| nameserver | nameserver=8.8.8.8 | DNS 服務器 |
| vnc | inst.vnc inst.vncpassword=secret | 遠程圖形安裝 |