㈠ linux 如何修改 Grub
要修改grub,請注意以下幾個重要文件:
1. /boot/grub/grub.cfg
此檔案中包含了GRUB選單資訊。
注意他的開頭,說明了這是由/etc/grub.d與/etc/default/grub所生成的,不要自己編輯。這個檔案還是唯讀屬性,就是要避免你直接去編輯。
若是你修改了這個檔案,只要更新核心,或是以指令更新grub選單,之前的修改就會被覆蓋掉。所以除非不得已,請不要去動這個檔案。要修改,請繼續往下看。
2. /etc/default/grub
此檔案為使用者修改grub設定的主要檔案,真的改爛了請不要急,在/usr/share/grub/default/里還有一份,復制回來即可。
要修改這個檔案,請輸入
sudo gedit /etc/default/grub
3. /etc/grub.d目錄
此目錄放置檔案,會在sudo update-grub時,合並到/boot/grub/grub.cfg中。
注意這些檔案名稱結構,前面都有數字。數字越小的,在合並時放在越前面。常有人問到,grub menu要怎麼更改選項的順序?就是更改數字的大小。
此外請你在這目錄下輸入ls -l,看一下各檔案的屬性,有沒有看到都有x屬性(可執行)?變動x屬性,可以決定這個選項要不要出現在選單內。
以下介紹 /etc/default/grub 所使用的參數,我只介紹大家比較會去修改到的。
1. GRUB_DEFAULT - 設定預設選單選項。有以下幾種作法。
GRUB_DEFAULT=0 以位置來設定預設選單選項。第一筆選單選項為 0,第二筆為 1,以此類推。
GRUB_DEFAULT="xxxx" 在此例中,選單中的位置不會有影響。例如:GRUB_DEFAULT="Ubuntu, Linux 3.11.0-13-generic"。注意要完整全稱。
GRUB_DEFAULT=saved 由儲存預設的作業系統開機。可以用grub-reboot和grub-set-default指令來設定預設作業系統。預設作業系統不會由來自選單中的互動式選擇而被設定。
sudo grub-set-default 0 以位置來設定預設選單選項。第一筆選單選項為 0,第二筆為 1,以此類推。
sudo grub-set-default "xxxx" 以選單名稱來設定
sudo grub-reboot 0 以位置來設定下次重啟開機選項。第一筆選單選項為 0,第二筆為 1,以此類推。
sudo grub-reboot "xxxx" 以選單名稱來重啟開機
2. GRUB_HIDDEN_TIMEOUT - 此設定用來決定GRUB選單會有多長時間不被顯示。
GRUB_HIDDEN_TIMEOUT=0 在單一作業系統電腦中,會立刻以預設作業系統開機。在只有一個作業系統狀況下,這是預設的設定。假如還是要顯示選單,請在這行前加上 # 注銷掉,並確認 GRUB_TIMEOUT 設定為正整數。
GRUB_HIDDEN_TIMEOUT=X x為秒數,空白畫面幾秒後,系統將會依照預設開機,不會出現選單。當螢幕是空白時,使用者可以按下任何鍵以顯示選單。
3. GRUB_HIDDEN_TIMEOUT_QUIET - 在空白畫面時,是否顯示倒數計時器
GRUB_HIDDEN_TIMEOUT_QUIET=true '不'顯示計時器
GRUB_HIDDEN_TIMEOUT_QUIET=fault 顯示計時器
4. GRUB_TIMEOUT - 選單顯示多久之後自動以預設作業系統開機
GRUB_TIMEOUT=10 10秒後以預設系統開機
GRUB_TIMEOUT=-1 持續顯示選單,直到使用者選擇
5. GRUB_GFXMODE - 設定grub選單顯示的解析度。一般是註解掉。
GRUB_GFXMODE=640x480 以640x480模式顯示。
除非開機時選單顯示就有問題,不然不要啟用這個參數,據說會影響進入grub選單的時間。真的要啟用,後面的數值請依照你顯卡可以支援的模式填入,如1280x1024x16,800x600x24,640x480
6. GRUB_DISABLE_LINUX_RECOVERY - 救援模式要不要顯示?
你在選單中是不是都有看到救援模式(recovery mode)?假如你的電腦一向穩定,而且你不太會去動到系統,可以考慮去除 # 註解
GRUB_DISABLE_LINUX_RECOVERY=true '不' 顯示救援模式
7. GRUB_DISABLE_OS_PROBER - 對其他分割區作業系統的檢查
大家應該都知道sudo update-grub可以找到在其他分割區的作業系統,製成選單。但有時我就是不想要他顯示到選單內,那怎麼辦?那注銷掉這一行就可以不檢查其他分割區有沒有作業系統。
GRUB_DISABLE_OS_PROBER=true '不'檢查其他作業系統
8. GRUB_BACKGROUND - 背景影像所在。這個參數,需要自行加入。
GRUB_BACKGROUND= 以/usr/share/background/xxx.jpg當作選單背景。可以.png, .jpg, 或.tga等格式
㈡ 如何修改新內核linux下的grub配置
sudo gedit /boot/grub/grub.cfg
gedit可以換成nano,vim等看你用什麼文本編輯器了。
grub.cfg是新版grub。以前版本的是menu.list(lst??)
㈢ Linux啟動時顯示Grub命令行及修改
1、在啟動linux系統時,如果/boot/grub/grub.cfg文件損壞或者不存在時,啟動linux時,就會有Grub命令行的提示。
如下操作,將系統自帶的grub.cfg文件改名。
2、重新啟動系統後,發現和自己預想的一樣,沒有出現引導菜單。
3、在grub命令提示符下,可以使用一些命令載入內核和文件系統,設置根目錄的分區。
有的grub使用
linux
/boot/vmlinuz-xx
有的grub使用kernel
/boot/vmlinuz-xx,可自己輸入一個首字母,按TAB鍵查看,演示的grub支持的是linux命令
4、過一會出現下面的界面。
->
sudo
update-grub
->sudo
grub-install
/dev/sda
輸入這兩個命令後,新的grub.cfg就生成了,跟之前文件的一樣(前提是沒有對文件做任何更改)。
㈣ linux下怎麼修改grub.cfg
1、grub2的啟動配置文件grub.cfg是/boot/grub/grub.cfg,而不是以前的memu.lst。
2、如果你是多系統,有Ubuntu和windows,那麼用下面的命令,可以使grub2得到所以可以啟動的系統。
sudo update-grub
實際就是讓系統自己生成合適的grub.cfg文件。
3、這個grub.cfg文件是只讀屬性,so如果你要修改它,需要許可權。sudochmod+w/boot/grub/grub.cfg 然後可以編輯grub.cfg了。
㈤ 關於ubuntu的grub2引導
步驟如下:
a 進入grub的命令模式。進入grub界面後按C鍵進入命令行界面。
b 先熟悉一下grub 的一些命令 grub>help
c 熟悉一下cat命令
d root指令來指定/boot所在的分區
e kernel指令來指定linux的內核,及所在的分區
f 用initrd命令來指定initrd文件
g boot引導系統
cat命令的用法
cat指令是用來查看文件內容的,有時不知道Linux的/boot分區,以及/根分區所在的位置,要查看/etc/fstab的內容來得知, 這時,就要用到cat (hd[0-n],y)/etc/fstab 來獲得這些內容;注意要學會用tab鍵命令補齊的功能;
grub> cat ( 按tab 鍵會出來hd0或hd1之類的;
grub> cat (hd0, 註:輸入hd0,然後再按tab鍵;會出來分區之類的;
grub> cat (hd0,6)
Possible partitions are:
Partition num: 0, Filesystem type unknown, partition type 0x7
Partition num: 4, Filesystem type is fat, partition type 0xb
Partition num: 5, Filesystem type is reiserfs, partition type 0x83
Partition num: 6, Filesystem type is ext2fs, partition type 0x83
Partition num: 7, Filesystem type unknown, partition type 0x83
Partition num: 8, Filesystem type is reiserfs, partition type 0x83
Partition num: 9, Filesystem type unknown, partition type 0x82
grub> cat (hd0,6)/etc/fstab 註:比如我想查看一下 (hd0,6)/etc/fstab的內容就這樣輸入;
LABEL=/ / ext3 defaults 1 1
/dev/devpts /dev/pts devpts gid=5,mode=620 0 0
/dev/shm /dev/shm tmpfs defaults 0 0
/dev/proc /proc proc defaults 0 0
/dev/sys /sys sysfs defaults 0 0
LABEL=SWAP-hda1 swap swap defaults 0 0
/dev/hdc /media/cdrecorder auto pamconsole,exec,noauto,
managed 0 0
主要查看/etc/fstab中的內容,主要是Linux的/分區及/boot是否是獨立的分區;如果沒有/boot類似的行,證明/boot和 Linux的/處於同一個硬碟分區;比如上面的例子中LABEL=/ 這行是極為重要的;說明Linux系統就安在標簽為LABEL=/的分區中;
如果您的Linux系統/boot和/沒有位於同一個分區,可能cat (hd[a-n],y) 查到的是類似下面的;
LABEL=/ / ext3 defaults 1 1
LABEL=/boot /boot ext3 defaults 1 2
root (hd[0-n,y) 指令來指定/boot所在的分區;
其實這個root (hd[0,n],y)是可以省略的,如果省略了,要在kerenl 命令中指定;前面已經說過 (hd[0-n],y)硬碟分區的表示方法的用途;主要是用來指定 /boot所在的分區;
eg:
grub> root (hd0,0)
kernel 指令,用來指定Linux的內核,及/所在的分區;
kernel 這個指令可能初學者有點怕,不知道內核在哪個分區,及內核文件名的全稱是什麼。不要忘記tab鍵的命令補齊的應用;
如果已經通過root (hd[0-n],y) 指定了/boot所在的分區,語法有兩個:
如果/boot和Linux的/位於同一個分區,應該是下面的一種格式;
kernel /boot/vmlinuz在這里按tab鍵來補齊,就看到內核全稱了 ro root=/dev/hd[a-z]X
如果/boot有自己獨立的分區,應該是;
kernel /vmlinuz在這里按tab鍵來補齊,就看到內核全稱了 ro root=/dev/hd[a-z]X
在這里 root=/dev/hd[a-z]X 是Linux 的/根所位於的分區,如果不知道是哪個分區,就用tab出來的來計算,一個一個的嘗試;或用cat (hd[0-n],y)/etc/fstab 中得到Linux的/所在的分區或分區的標簽;
grub> kernel /boot/在這里按tab鍵;這樣就列出/boot中的文件了;
Possible files are: grub initrd-2.6.11-1.1369_FC4.img System.map-2.6.11-1.1369
_FC4 config-2.6.11-1.1369_FC4 vmlinuz-2.6.11-1.1369_FC4 grubBAK memtest86+-1.55
.1 xen-syms xen.gz
grub> kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/
[Linux-bzImage, setup=0x1e00, size=0x18e473]
註解: root=LABEL=/ 是Linux的/所在的分區的文件系統的標簽;如果您知道Linux的/在哪個具體的分區,用root=/dev/hd[a-z]X來指定也行。比如下面的一行也是可以的;
grub> kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=/dev/hda7
也可以把/boot所在的分區的指定 root (hd[0-n],y)這行省掉,直接在kernel 中指定/boot所在的分區;所以就在下面的語法;
如果是/boot和Linux的根同處一個分區;
kernel (hd[0-n],y)/boot/vmlinuz ro root=/dev/hd[a-z]X
比如:
grub>kernel
如果是/boot和Linux所在的根不在一個分區;則是;
kernel (hd[0-n],y)/vmlinuz ro root=/dev/hd[a-z]X
grub> kernel (hd0,0)/boot/vmlinuz-2.6.11-1.1369_FC4 ro root=/dev/hda7
[Linux-bzImage, setup=0x1e00, size=0x18e473]
或下面的輸入,以cat 出/etc/fstab內容為准;
grub> kernel (hd0,0)/boot/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/
[Linux-bzImage, setup=0x1e00, size=0x18e473]
initrd 命令行來指定initrd文件;
grub> initrd /boot/initrd在這里tab 來補齊;
grub> initrd /boot/initrd-2.6.11-1.1369_FC4.img
[Linux-initrd @ 0x2e1000, 0x10e685 bytes]
如果/boot是獨立的一個分區,應該是如下樣子的語法;比如下面的;
grub> initrd /initrd在這里tab 來補齊;
grub> initrd /initrd-2.6.11-1.1369_FC4.img
[Linux-initrd @ 0x2e1000, 0x10e685 bytes]
boot 引導系統;
grub>boot
下面是在我機器上的命令:
grub> cat (hd0,0)/etc/fstab
# This file is edited by fstab-sync - see 'man fstab-sync' for details
LABEL=/ / ext3 defaults 1 1
/dev/devpts /dev/pts devpts gid=5,mode=620 0 0
/dev/shm /dev/shm tmpfs defaults 0 0
/dev/proc /proc proc defaults 0 0
/dev/sys /sys sysfs defaults 0 0
LABEL=SWAP-hda1 swap swap defaults 0 0
/dev/hdc /media/cdrecorder auto pamconsole,exec,noauto,managed 0 0
grub> root (hd0,0)
Filesystem type is ext2fs, partition type 0x83
grub> kernel /boot/在這里按tab補齊,全列出/boot所有的文件;
Possible files are: grub initrd-2.6.11-1.1369_FC4.img System.map-2.6.11-1.1369_FC4 config-2.6.11-1.1369_FC4 vmlinuz-2.6.11-1.1369_FC4
memtest86+-1.55.1 xen-syms xen.gz
grub> kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/
[Linux-bzImage, setup=0x1e00, size=0x18e473]
grub> initrd /boot/在這里按tab補齊
Possible files are: grub initrd-2.6.11-1.1369_FC4.img System.map-2.6.11-1.1369_FC4 config-2.6.11-1.1369_FC4 vmlinuz-2.6.11-1.1369_FC4 grubBAK
memtest86+-1.55.1 xen-syms xen.gz
grub> initrd /boot/initrd-2.6.11-1.1369_FC4.img 注;輸入intrd文件名的全名;
[Linux-initrd @ 0x2e1000, 0x10e685 bytes]
grub> boot