1. 程式人生 > >實現Linux和QNX雙系統啟動

實現Linux和QNX雙系統啟動

前陣子要測試QNX6.5, 於是拿出一臺機房的機器來, 重新設計了一下分割槽, 給QNX單獨開了一個分割槽, 畢竟QNX不是天天用, 所以沒有必要只裝一個系統. 其他系統我是預留給Ubuntu的.

安裝完QNX並測試了一段時間, 我打算在該機上再裝一個Ubuntu10.10. 本以為Ubuntu的grub2能夠自動識別出已經安裝的QNX, 誰知不行, grub中根本沒有相應條目. 

於是, 根據https://help.ubuntu.com/community/Grub2 , 修改了一下grub的條目, 將/etc/grub.d/40_custom改為一下內容:

  1. #!/bin/sh
  2. exec tail -n +3 $0
  3. # This file provides an easy way to add custom menu entries. Simply type the
  4. # menu entries you want to add after this comment. Be careful not to change
  5. # the 'exec tail' line above.
  6. menuentry "QNX6.5" {
  7. set root=(hd0,msdos1)
  8. chainloader +4
  9. boot
  10. }
需要注意的是, grub2與grub不同, 已經沒有rootnoverify命令, 而且命名分割槽的方式也發生了變化, 所以前的命令 "rootnoverify(hd1,1)"是錯誤. 其他grub2語法不累述.

而後執行update-grub重啟, 但是卻依然沒有看到grub的選單就直接進入Linux了. 後發現是grub設定的問題.

在我的/etc/grub/grub.cfg中, 預設的條目是0, 即Linux的條目, 且設定GRUB_HIDDEN_TIMEOUT_QUIET為TRUE來阻止產生一個計時, GRUB_HIDDEN_TIMEOUT為0使得不提供任何機會來進行條目選擇.

GRUB_DEFAULT=0
GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""

於是我把該內容改為顯示計時以便進行條目選擇. 

GRUB_DEFAULT=0
GRUB_HIDDEN_TIMEOUT=20
#GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=60
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""

執行update-grub更新grub後, 再重啟, 就看到了grub的選單, 裡面有QNX的條目, 可以選擇性的啟動QNX了. 如果沒有任何動作的話, 在20+60秒後, 系統仍將預設進入Ubuntu.