最近為了能穩(wěn)定連接服務(wù)器而不用在Windows和Linux之間切換來切換去買了臺式專門裝Linux。Ubuntu用久了便尋思著換個發(fā)行版玩一玩(生命在于折騰嘛:-D)嗤谚,研究半天看上了LinuxMint和Manjaro怔蚌,反復(fù)琢磨也分不出個高低。剛好有兩塊硬盤就直接兩個都裝了Dual boot桦踊。
因?yàn)樵谥饔脖P里安裝的LinuxMint所以就用它的grub來引導(dǎo)兩個系統(tǒng)籍胯。然而這時候卻出現(xiàn)了問題。當(dāng)我從grub的menu中選擇了manjaro之后杖狼,屏幕上出現(xiàn)了一堆輸出并停止工作蝶涩。輸出的最后一行是:
Kernel panic - not syncing: VFS: unable to mount root fs on unknown-block(0,0)
Google了一下赠涮,發(fā)現(xiàn)這還是一個known issue暗挑,主要原因是Manjaro(Arch)的grub中有一些比較特殊的配置,因此很難從別的發(fā)行版中boot Manjaro而不產(chǎn)生錯誤垃它。比較直接的解決方案是使用Manjaro的引導(dǎo)來boot烹看。Manjaro的grub在更新搜索后可以正常boot LinuxMint。如果你想使用這種方案酱吝,請搜索改變硬盤引導(dǎo)順序的相關(guān)方法土思。如果你沒法或者不想改變硬盤引導(dǎo)順序,只想使用LinuxMint的grub來boot兩個系統(tǒng)(像我一樣)崎岂,那么本文就是來解決這個問題的闪湾。
本文的解決方案主要參考了這個和這個帖子。里面提出了許多解決方案江醇,本人基本上都試了一遍何暇,并最終成功修復(fù)。本文給出的最終方案是其中幾種方案的結(jié)合律适,也許有些操作是多余的遏插,本人并沒有測試過拿掉其中一步對系統(tǒng)的影響。本人也不是系統(tǒng)專家厂僧,寫本文的主要目的是避免自己忘記怎樣修復(fù)這個問題的了牛,并且給其他跟我一樣遇到這個問題的新手一個幫助辰妙,也歡迎大家來一同討論甫窟。
解決方案:
- 首先在LinuxMint中執(zhí)行
或sudo update-grub
以確保grub探測到了Manjaro系統(tǒng)。一般來說這一步并不能解決本文所描述的問題尔破,只是確保grub中存在Manjaro系統(tǒng)的條目浇衬。grub-mkconfig -o /boot/grub/grub.cfg
- 修改
HOOKS
value:
在Manjaro系統(tǒng)中,打開/etc/mkinitcpio.conf
胆剧,檢查其中的HOOKS
醉冤,如果你的是
那么將它改為:HOOKS="plymouth"
(這個問題不一定會存在,本人的系統(tǒng)中HOOKS="base udev autodetect modconf block resume filesystems keyboard keymap fsck usr shutdown"
HOOKS
的值就多于"plymouth",但是沒有修改的那么多辕近,個人認(rèn)為本人系統(tǒng)中的配置不是導(dǎo)致無法boot的原因移宅。當(dāng)然如果你的系統(tǒng)中的確存在這個問題,那么很可能也是導(dǎo)致無法boot的原因之一漏峰,那就按照上面說的修改浅乔。)
然后執(zhí)行:sudo mkinitcpio -P
- 在LinuxMint中,打開
/etc/default/grub
席噩,檢查其中GRUB_CMDLINE_LINUX_DEFAULT
的值贤壁,如果值中不包含splash
,比如只有quiet
脾拆,添加splash
使其成為:GRUB_CMDLINE_LINUX_DEFAULT=“quite splash"
- 在LinuxMint和Manjaro中,找到grub menu中Manjaro條目的配置文件绰上。這里有兩種方法:
- 打開
/boot/grub/grub.cfg
渔期,并找到對應(yīng)于Manjaro的部分。在本人的系統(tǒng)中疯趟,這部分由
開始信峻,緊跟一行為### BEGIN /etc/grub.d/47_custom_proxy ###
在一些配置內(nèi)容后以menuentry "Manjaro Linux (17.0) ..."
結(jié)束。### END /etc/grub.d/47_custom_proxy ###
- 使用
Grub Customizer
(推薦新手在LinuxMint下使用該方法)盹舞,在List configuration中找到Manjaro對應(yīng)的條目踢步,點(diǎn)擊右鍵-->edit(編輯),彈出的對話框內(nèi)Boot sequence下就是1中相同的配置信息获印。
- 打開
- 在LinuxMint的Manjaro條目的配置文件中兼丰,有一行為:
而在Manjaro的Manjaro條目的配置文件中,該行則為:initrd /boot/intel-ucode.img
其中黍翎,initrd /boot/intel-ucode.img /boot/initramfs-4.9-x86_64.img
initramfs-4.9-x86_64.img
會根據(jù)具體系統(tǒng)和核心的版本不同而有所變化艳丛。本人寫作本文時安裝的是64位Manjaro 17.0的kernel 4.9版。將LinuxMint中的initrd
行修改為與Manjaro中對應(yīng)行一致旺聚。隨后執(zhí)行sudo grub-update
更新grub眶蕉,重啟電腦檢查grub修復(fù)情況。
本人就是在這一步之后成功修復(fù)了Manjaro系統(tǒng)的boot碱璃。
基本上,上述的完整方案能夠覆蓋導(dǎo)致無法boot Manjaro系統(tǒng)的幾種主要原因肛真。如果你仍舊無法解決該問題爽航,或者在實(shí)現(xiàn)上述方案時有所疑惑,也歡迎留言來討論历极。最后衷佃,也希望Manjaro團(tuán)隊或其他發(fā)行版能夠早點(diǎn)解決這個問題。
By the way锄列,Manjaro是真的好用惯悠,ArchWiki也算是文檔中的楷模了。希望CUDA和CuDNN能早點(diǎn)官方支持啊筒严。