聚會時間公告: 因應COSCUP 2011, Kalug 8月份休會一次

十一月 18, 2012
» 自訂 Grub2 on Ubuntu 9.10+

從 Ubuntu 9.10 開始,凍仁就沒什麼調校過開機選單,畢竟 Grub 與 Grub2 的差異真的不小,記得以前只要修改 /boot/grub/menu.lst 一個檔案即可,可現在的卻會動態產生這個檔案,也就是實際可編寫的設定檔改了位置也改了規則

不過 Grub2 最棒的地方是它會搜尋所有分割區上的作業系統,並納入開機選單,這點可是讓 Ubuntu 更人性化不少呢!至於 Grub2 不完美的部份嘛,那就自己小小調校一下了。

1. 一般設定

[ jonny@precise ~
$ sudo vi /etc/default/grub [Enter]
# 隱藏 grub 開機選單。
GRUB_HIDDEN_TIMEOUT=0

# 使用文字模式開機,裝上 NVIDIA 顯卡驅動的圖形化開機不夠美觀
GRUB_CMDLINE_LINUX_DEFAULT=""

# 自訂解析度。
GRUB_GFXMODE=800x600

1.2. 更新開機選單。
[ jonny@precise ~
$ sudo update-grub [Enter]
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-3.2.0-24-generic-tp
Found initrd image: /boot/initrd.img-3.2.0-24-generic-tp
Found linux image: /boot/vmlinuz-3.2.0-24-generic
Found initrd image: /boot/initrd.img-3.2.0-24-generic
Found memtest86+ image: /boot/memtest86+.bin
Found Windows 7 (loader) on /dev/sda1
Found Windows 7 (loader) on /dev/sda2
Found Windows 7 (loader) on /dev/sdb1
Found Ubuntu 10.04.4 LTS (10.04) on /dev/sdb6
done

2. 進階設定

以下章節需對開機選單分割區系統配置觀念,搞砸也甭擔心,把 os-prober 啟用並更新開機選單即可。

2.1. 建立自訂選單

2.1.1. 參考 /boot/grub/grub.cfg 編寫 /etc/grub.d/40_custom,以下為凍仁自訂的開機選單。
[ jonny@precise ~ ]
$ sudo vi /etc/grub.d/40_custom [Enter]
 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
7 # - Ubuntu 10.04 on /dev/sdb6
8 menuentry "# ----" --class gnu-linux --class gnu --class os {
9 insmod part_msdos
10 insmod ext2
11 set root='(hd2,msdos6)'
12 search --no-floppy --fs-uuid --set=root 3c4b2a07-a099-4e2a-8f35-c46162389986
13 chainloader +1
14 }
15
16 # - Windows 7 on /dev/sda1
17 menuentry "Windows 7 (/dev/sda1)" --class windows --class os {
18 insmod part_msdos
19 insmod ntfs
20 set root='(hd1,msdos1)'
21 search --no-floppy --fs-uuid --set=root 9440E68540E66E04
22 chainloader +1
23 }
24
25 # - Windows XP on /dev/sdb1
26 menuentry "Windows XP (/dev/sdb1)" --class windows --class os {
27 insmod part_msdos
28 insmod ntfs
29 set root='(hd2,msdos1)'
30 search --no-floppy --fs-uuid --set=root 2CDCBD4CDCBD1156
31 chainloader +1
32 }
33
34 # - Ubuntu 10.04 on /dev/sdb6
35 menuentry "Ubuntu 10.04 (/dev/sdb6)" --class gnu-linux --class gnu --class os {
36 insmod part_msdos
37 insmod ext2
38 set root='(hd2,msdos6)'
39 search --no-floppy --fs-uuid --set=root 3c4b2a07-a099-4e2a-8f35-c46162389986
40 #linux /boot/vmlinuz-2.6.32-41-generic-tp root=UUID=3c4b2a07-a099-4e2a-8f35-c46162389986 ro
41 #initrd /boot/initrd.img-2.6.32-41-generic-tp
42 chainloader +1
43 }
44

2.1.2. 停用 os-prober,也就是往後使用 update-grub 指令時將不會自動產生其他作業系統的設定。
[ jonny@precise ~
$ sudo vi /etc/default/grub [Enter]
GRUB_DISABLE_OS_PROBER=true

2.1.3. 更新開機選單。
[ jonny@precise ~
$ sudo update-grub [Enter]
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-3.2.0-24-generic-tp
Found initrd image: /boot/initrd.img-3.2.0-24-generic-tp
Found linux image: /boot/vmlinuz-3.2.0-24-generic
Found initrd image: /boot/initrd.img-3.2.0-24-generic
Found memtest86+ image: /boot/memtest86+.bin
done

相關連結:
os-prober
grub2 如何更改選單中的開機順序 ? | 酷學園

資料來源:
GRUB 2 中文指南 - Ubuntu 正體中文 Wiki

一月 27, 2012

小惡魔AppleBOY
AppleBOY
小惡魔 – 電腦技術 – 工作筆記 – AppleBOY is about »

tag cloud

» 用 Ubuntu 10.10 Live CD 重新安裝 GRUB 2 到 Bootloader

logo-Ubuntu

今天起床打開電腦,Ubuntu 跳出 Warning 訊息,boot 磁區剩下 84MB,所以我手殘進去 /boot/ 目錄,把舊的 Kernel 清除,不小心砍掉 initrd.img-2.6.35-32-generic Linux Image 開機所需要的檔案,結果之後開機出現

You need to load the kernel first

大家好像都是升級 Kernel 之後才會出現上述狀況,網路上找到的解答都不符合我的需求,所以我又往 GRUB2 開機 Boot 去瞭解,新的 GRUB 2 跟原先的 GRUB 的解法已經完全不同了,沒有 /boot/grub/menu.list,而被 /boot/grub/grub.cfg 取代,所以不應該在手動編輯此檔案。grub.cfg 會在有更新 Kernel 版本時,手動執行 update-grub 的時候被修改覆寫。這次發生的原因是在我把舊版 Kernel 刪除,而忘記執行 update-grub,這時候的最佳解法就是透過 Live CD 來救援。

Ubnutu Live CD 救援

先把 Ubuntu Live CD 放入,直接先選 Try Ubuntu,接著就會進入桌面,將 Terminal 打開 (Applications -> Accessories -> Terminal),之後只要按照底下步驟就可以成功還原 boot loader。

1. 首先確定系統的根目錄以及 boot 磁區代號,大致上都是 sda1, sda5 等等,可以透過 fdisk -l 來瞭解這些資訊。

$ fdisk -l

輸出底下結果

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13       96256   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              13       38914   312471553    5  Extended
/dev/sda5              13         499     3905536   82  Linux swap / Solaris
/dev/sda6             499        5362    39061504   83  Linux
/dev/sda7            5362       38914   269502464   83  Linux

2. 將 / 跟 /boot mount 到任意目錄

$ sudo mkdir /mnt/root
$ sudo mount -t ext4 /dev/sda6 /mnt/root
$ sudo mount /dev/sda1 /mnt/root/boot

建立 /mnt/root 目錄,用來掛載自己的 Linux 系統,/dev/sda6 是原先 / 磁區,而 /dev/sda1 則是 /boot 區域

3. 掛載 critical virtual filesystems,請執行底下 command

$ for i in /dev /dev/pts /proc /sys; do sudo mount -B $i /mnt/root$i; done

4. 用 chroot 指令切換到 system device

$ chroot /mnt/root /bin/bash

5. 重新將 Kernel 安裝

$ sudo apt-cache search linux-image

找到您要的版本後重新安裝

$ sudo apt-get install linux-image-x.x.x-xx

6. 更新 /boot/grub/grub.cfg

$ update-grub

7. 重新安裝 GRUB 2

$ grub-install /dev/sda

8. 重新確認是否安裝成功

$ grub-install --recheck /dev/sda

9. 按 CTRL-D 離開 chroot

10. 卸載全部虛擬系統

$ for i in /sys /proc /dev/pts /dev; do sudo umount /mnt/root$1; done

卸載 boot 及 / 系統

$ sudo umount /mnt/root/boot
$ sudo umount /mnt/root

11. 重新開機

$ sudo reboot

結論

因為不小心砍一個系統開機檔案,所以花了一些時間找資料,以及瞭解 GURB2,這樣也是不錯啦 XD,底下是參考的一些資料

Reference:
[SOLVED] Can’t start ubuntu (WUBI) : You need to load the kernel first
Clean up your grub menu and the kernels you do not use
Ubuntu Wiki Grub2
How to Restore Grub 2 As The Main Bootloader
How to create edit/extract initrd in Ubuntu/Debian and Redhat/Fedora Linux ?
Howto: Upgrade Linux Kernel
Clean Up the New Ubuntu Grub2 Boot Menu

Related View

十二月 22, 2010
» Grub fix on CentOS 5

More about 電腦備份王2:Clonezilla live
凍仁近來翻到 電腦備份王2:Clonezilla live 一書中有提到若使用 Clonezilla 還原 MBR 後會與原先的畫面有所不同,其實這是因為找不到 splash.xpm.gz 的關係,整體使用上而言是不會有什麼影響,倘若想美化一下,可參照書中的方法改用文字介面的方式來呈現。

# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making
# changes to this file
# NOTICE: You have a /boot partition. This means
#                 that all kernel and initrd paths are relative
#                 to /boot/, eg.
#                 root (hd0,0)
#                 kernel /vmlinuz-version ro root=/dev/hda2
#                 initrd /initrd-version.img
#boot=/dev/hda

default=0
timeout=5
# splashimage=(hd0,0)/grub/splash.xpm.gz
color cyan/red white/red
hiddenmenu
title CentOS (2.6.18-194.17.1.el5)
                root (hd0,0)
                kernel /vmlinuz-2.6.18-194.17.1.el5 ro root=LABEL=/
                initrd /initrd-2.6.18-194.17.1.el5.img

話說改完以後的介面跟 Debian lenny 的 Grub 一樣簡潔有力!

資料來源:
電腦備份王2:Clonezilla live - aNobii

三月 12, 2008
» 【Grub】恢復開機選單最簡單的方法

重灌 Windows 時會把 MRB開機選單 中的 Grub 洗掉,這時不妨試試以下的恢復方法..準備工具:有光碟機的電腦、Ubuntu光碟(liveCD)x1

恢復方法:

1.使用光碟開機 → 出現選單後先按F2選擇繁體中文 → 啟動或安裝 Ubuntu (S)

2.進入live界面後,點application → 附屬應用程式 → 終端機

3.輸入sudo -so,以root用戶操作

4.輸入grub,進入gru配置界面

5.輸入root (hdx,y) ####注意!這裡的(hdx,y)是你的Ubuntu的安裝位置!如果你不知道的話,輸入find /boot/grub/stage1 可以顯示出來

6.輸入setup (hd0),將grub寫入硬碟

7.輸入quit,退出,重啟,GRUB選單就會出現囉

資料來源:
賽迪網 - sixth - 恢復Ubuntu系統下GRUB引導的最簡單辦法

» 【Grub】縮短開機選單讀秒時間

凍仁是個 Ubuntu + XP 的使用者,在開機時都會有4個選項.. 每天都要等10秒中才能近 Ubuntu,這10秒並不多,不過對有些只使用 Ubuntu 的人來講可能會想縮短 Grub 等候的時間..

方法有兩種
1.修改 /boot/grub/menu.lst 中的 timeout16 ## timeout sec
17 # Set a timeout, in SEC seconds, before automatically booting the default entry
18 # (normally the first entry defined).
19 timeout 10

2.使用 StartUp Manager 套件

延伸閱讀:
【Ubuntu】Grub - 隱藏開機選單
【Ubuntu】Grub - 更改預設的開機作業系統

資料來源:
Ubuntu 正體中文站 - 請問開機選單可不可以改成不要倒數讀秒?

» 【Grup】StartUpManager - 開機選單管理軟體

相信不少剛開始使用 Ubuntu 的朋友對 Grup(開機選單) 不熟,透過這個套件就可以簡易的更改設定囉,不過想開啟他等需要 root 的權限才行呢 Orz.

安裝方法有二
  1. 在 終端機 下命令# sudo apt-get install startupmanager

  2. 使用 GUI(Synaptic 套件管理程式) 安裝
    應用程式 → 添加/刪除 → 輸入StartUp-Manager 搜尋並安裝
執行方法
直接在終端機下指令# sudo startupmanager
設定說明
Boot oprions:設定畫面,修改等待時間、預設的選項、解析度、要不要有 Splash ..
Appearance:設定選單背景、Usplash、或使用簡單的色彩..

資料來源:
阿駕零零壹 © 學習筆記 - [Linux] 管理Grub的好工具 - StartUp Manager
相關連結:
StartUp Manager 官網

» 【Grub】隱藏開機選單

今天我們不需要雙系統或者是開機選單時,可修改 grub 的設定來隱藏開機選單。也可透過 StartUpManager 套件來幫我們修改。

在終端機輸入以下指令# sudo vi /boot/grub/menu.ls之後將 #hiddenmenu 的 # 刪除即可。 21 ## hiddenmenu
22 # Hides the menu by default (press ESC to see the menu)
23 #hiddenmenu


延伸閱讀
【Ubuntu】Grub - 更改預設的開機作業系統
【Ubuntu】Grub - 縮短開機選單讀秒時間
【Ubuntu】StartUpManager - Grup管理套件

資料來源:
Ubuntu 正體中文站 - 請問開機選單可不可以改成不要倒數讀秒?

» 【Grub】更改預設的開機作業系統

在 Ubuntu 裡預設的開機 OS(作業系統) 是 Ubuntu,如果想換成其他的 OS,則可以修改 grub 的 menu.lst 來更換預設的 OS。當然也可以透過 StartUpManager GUI(圖形化介面) 來達到此目的。

在終端機輸入以下指令# sudo vi /boot/grub/menu.lst之後在06 ## default num
07 # Set the default entry to the entry number NUM. Numbering starts from 0, and
08 # the entry number 0 is the default if the command is not used.
09 #
10 # You can specify 'saved' instead of a number. In this case, the default entry
11 # is the entry saved with the command 'savedefault'.
12 # WARNING: If you are using dmraid do not use 'savedefault' or your
13 # array will desync and will not let you boot your system.
14 default  0
找到 default,並修改後面的數字為其餘 OS 的代號。

延伸閱讀:
【Ubuntu】Grub - 縮短開機選單讀秒時間
【Ubuntu】Grub - 隱藏開機選單
【Ubuntu】StartUpManager - Grup管理套件

資料來源:
Ubuntu 正體中文站 - 請問開機選單可不可以改成不要倒數讀秒?

support:

biggo.com.tw

A Django site.