這篇文章同樣適用于重建 Grub 引導(dǎo)。
熟悉我寫作風(fēng)格的小伙伴都應(yīng)該知道,我的文章,只放干貨。
但是,不把背景交代清楚也不行,干貨就容易噎著。
不喜歡的可以直接跳到分割線以后,直接看干貨。
最近,因?yàn)橐恍┰?,?Windows 比較多,就重裝了一下,就把 Grub 引導(dǎo)覆蓋掉了。
吐槽:Windows 就是這么專橫,這也是我不喜歡它的原因之一。
也可能是我還不會(huì)裝 Windows [尷尬]
喜歡 Linux 的原因之一,就是因?yàn)樗梢?DIY,把你自己的電腦打造成你想要的樣子。
比如:
- 我想把它裝到 U 盤中;
- 我想讓它和其他 OS 并存;
- 我想把它 “閹割”,只保留我想要的功能......
——它都可以!
---------------------我是分割線---------------------
我的需求
- 當(dāng)我想打開 Linux 的時(shí)候,正常選擇想要打開的操作系統(tǒng);
- 當(dāng)我不用的時(shí)候,讓其他人打開 Windows,不想在引導(dǎo)界面看到一大堆操作系統(tǒng)的菜單。就好像 Linux 不存在一樣。
許多裝雙系統(tǒng)的小伙伴應(yīng)該都有這樣的經(jīng)歷。尤其是像我這樣的狂熱的軟件試用者 DB,我在我的 1 個(gè) G的硬盤上裝了 10 個(gè)操作系統(tǒng)(包括 Win)。
那么,如何實(shí)現(xiàn)呢?
示例說明
目標(biāo) U 盤:/dev/sdb1 # 你的可能是其他的
錯(cuò)誤的示例
# 錯(cuò)誤的示例
grub-install --target=i386-pc /dev/sdb
grub-mkconfig -o /boot/grub/grub.cfg
得到錯(cuò)誤:
error: failed to get canonical path of `overlay'.
正確的做法是:
如果你的 Grub 分區(qū)(就是你想把 Grub 安裝到的那個(gè)分區(qū))包含完整的操作系統(tǒng)安裝
sudo mount /dev/sdb1 /mnt
sudo chroot /mnt
sudo update-grub2
grub-install --target=i386-pc /dev/sdb # 注意:不是 'sdb1',沒有這個(gè) '1'。
grub-mkconfig -o /boot/grub/grub.cfg
如果 Grub 分區(qū)(在這里是我的目標(biāo) U 盤)是空的
我不得不首先將大部分系統(tǒng)引入 chroot 環(huán)境:
#!/bin/bash
mkdir /mnt/chrootdir
mount /dev/sdb1 /mnt/chrootdir
for dir in proc dev sys etc bin sbin var usr lib lib64 tmp; do
mkdir /mnt/chrootdir/$dir && mount --bind /$dir /mnt/chrootdir/$dir
# 你要是不嫌麻煩,一個(gè)一個(gè)創(chuàng)建,一個(gè)一個(gè) mount 也是可以的.
done
chroot /mnt/chrootdir
grub-install --target=i386-pc /dev/sdb # 注意:不是 'sdb1',沒有這個(gè) '1'。
grub-mkconfig -o /boot/grub/grub.cfg
# 你要是 **確定** 你的操作參數(shù),直接在上面這段代碼中更改,復(fù)制粘貼創(chuàng)建一個(gè)腳本,一鍵完成,也是可以的。
# 像我們這些新手還是建議一行一行敲代碼,掌握的實(shí)在。
用法:
- 插上 U 盤,打開你想要的系統(tǒng);
- 拔掉 U 盤,其他用戶感覺不到 Linux 的存在。
但是,你的電腦可能還達(dá)不到這樣的效果,因?yàn)?,你的雙系統(tǒng)的 Grub 引導(dǎo)還在你的硬盤上。其他用戶打開的時(shí)候,還是會(huì)看到原來的引導(dǎo)界面。
如果你想達(dá)到這樣的效果,也不是不可以,那就是用 Windows 引導(dǎo)修復(fù)工具‘修復(fù)’ Windows 引導(dǎo)(也就是用 Windows 引導(dǎo)把 Grub 引導(dǎo)覆蓋掉),這樣的工具很多,比如:某毛桃,某度。