主要就是再LFS編譯完成後發現的一些有關於bootloader的問題解決。 ...
LFS系統 的BOOT引導
本文首發:https://www.cnblogs.com/somata/p/LFS83BootLoaderDoubtfulSolution.html
在LFS書中寫到的BOOT引導,時直接將宿主機的BOOT分區掛載當LFS的BOOT分區中,雖然這樣也是可以實現BOOT引導的,但是我並不想這樣做,所以BOOT引導就變得有些棘手了。總結下來有如下一個難點:
- MBR引導寫入。
- initramfs的rootfs文件製作。
- grub.cfg文件配置。
註意
這裡我只是提及了這幾個問題,但是我並沒有說到操作順序需要註意。
那麼我會逐一解決這些文件。
1. MBR引導寫入
首先我們需要知道,現在的LFS是掛載在/dev/sdb
或者/dev/hdb
上的,宿主機的磁碟占用著第一個磁碟,如果需要在新的平臺環境也能引導使用,我們可以藉助DVD來完成MBR引導記錄的部署。首先創建一臺新的虛擬機,將虛擬磁碟導入到這台虛擬機然後再使用如CentosDVD光碟中的緊急救援模式完成操作。
選擇打開電源時進入固件
然後在Boot中將CD-ROM Drive移動到第一位。保存重啟即可。
選擇Troubleshooting
然後再選擇Rescue a CentOS system
開啟緊急救援模式。等待系統載入完成。
跳過,直接進入shell界面。
mount /dev/sda2 /mnt/sysimage # 直接將光碟掛載到/mnt/sysimage 下
mount /dev/sda1 /mnt/sysimage/boot
# 掛載虛擬文件系統到/mnt/sysimage下
mount -vt proc proc /mnt/sysimage/proc
mount -vt sysfs sysfs /mnt/sysimage/sys
mount -v -o bind /dev /mnt/sysimage/dev
# 切換到LFS文件系統
chroot /mnt/sysimage
# 如果配置了profile 可以使用如下命令
source /etc/profile
這樣我們就使用CDROM中的系統進入到了LFS然後再執行操作
grub-install /dev/sda # 安裝MBR引導記錄和grub啟動所需要的模塊
2. initramfs文件的製作
這裡我就直接使用dracut
軟體生成initramfs文件,當然initramfs也是可以手動生成的。但是這個實在是太麻煩了。所以我就不用了。
首先是下載:下載鏈接
然後是安裝:
同樣的是安裝3步曲:
./configure --prefix=/opt && make && make install # 這裡會應為一系列依賴關係報錯。所以我的安裝步驟並不是如此的。
dracut -> asciidoc -> python2
dracut ->libxslt -> libxml2
以上2個就是我在編譯的時候碰上的所需軟體。然後再編譯安裝的時候都碰到了問題。但是我發現,再make 報錯之後,dracut-install 和skipcpio 這2個軟體都已經編輯好了。ascii和libxslt 這2個軟體都是用於創建doc幫助文檔的,然而我並不需要,所以我就索性手動安裝一下。
mkdir /usr/lib/dracut/
cp -r dracut.conf.d /usr/lib/dracut/ # 複製配置文件
cp -r modules.d /usr/lib/dracut/ # 複製dracut模塊
cp install/dracut-install /usr/lib/dracut/ # 複製dracut-install
cp skipcpio/skipcpio /usr/lib/dracut/ # 複製skipcpio
cp *.sh /usr/lib/dracut/ # 複製所有的腳本到指定路徑
chmod +x /usr/lib/dracut/*.sh # 給所有的腳本執行許可權
然後開始創建initramfs.img
cd /usr/lib/dracut # 首先切換到dracut的安裝目錄
./dracut.sh initramfs.img 4.18.1 # 第一個參數是創建的文件,第二個是指定內核版本,註意一定要對上,否者會出錯。
# 然後再將創建號的initramfs.img移動到/boot目錄下即可。
# 當然還是楊測試一下看看文件是否都是全的
/usr/lib/dracut/lsinitrd.sh initramfs.img # 查看initramfs.img
cp initramfs.img /boot/ # 將initramfs.img 複製到/boot目錄下
lsinitrd.sh 執行命令結果
3. grub.cfg 文件配置
grub-mkconfig -o /boot/grub/grub.cfg # 導出配置文件
# 那麼這樣就完成了,grub-mkconfig會自動識別文件系統和內核,後面就可是直接重啟了。
本文經「原本」原創認證,作者乾坤盤,訪問yuanben.io查詢【10X0DOZU】獲取授權信息。