內核編譯程序會修改grub2
Ⅰ Fedora 16中/boot/grub2/grub2.cfg的內容是什麼
grub2和以前grub不太一樣,grub2.cfg是由腳本生成的,不需要你修改(系統也不希望你修改)
如果你要編輯grub有兩個地方可以選擇
1./etc/default/grub 可以設置默認啟動項和內核參數等等(ubuntu下有這個文件,fedora忘了)
2./etc/grub.d/
這下面你會看到 類似00_header 的文件,這就是腳本啦,前面的00應該是編譯順序,具體要修改你還是看看教程吧
修改完成
用root許可權執行 grub2-mkconfig -o /boot/grub2/grub2.cfg 更新grub (這命令是fedora的我記得很清楚,比ubuntu下的長多了= =!)
Ⅱ 如何在linux上通過GRUB添加內核參數
編輯修改grub引導配置文件,在載入內核命令(對於grub legacy,為kernel,grub2為linux)那一行後面添加需要的參數;或者直接在命令行界面輸入相應命令後面添加參數。
Ⅲ centos7.0grub2整理有什麼用
GRUB2取代了grub逐漸成為主流,引導菜單啟動從/boot自動生成,不是menu.lst手工配置。具體內容參照 /boot/grub2/grub.cfg 該文件每次執行grub2-mkconfig後自動
生成,所以修改該文件在內核升級後會失效。此外,設備是以0開始編號,分區改為1開始編號。
grub2主要關聯文件如下:
/etc/default/grub :改變引導菜單外觀的主要配置文件。
[root@localhost grub.d]# ls /etc/grub.d
00_header 01_users 20_linux_xen 30_os-prober 41_custom
00_tuned 10_linux 20_ppc_terminfo 40_custom README
各種生成grub.cfg的腳本文件。其中00-header配置初始的顯示項目,如默認選項,時間限制等,由/etc/default/grub導入,一般不需要配置。
10-linux:定位當前操作系統使用的root設備內核的位置。
30-os-prober:用來搜索linux和其他系統,此腳本中的變數用來指定 /boot/grub2/grub.cfg和grub2菜單中的名稱顯示方式。我看不懂艾。
40-custom:用來加入用戶自定義的菜單樣板,執行grub2-mkconfig時更新至grub.cfg中,加入新的系統就靠他了
網上搜索出來的雙系統共存解決方案通常直接修改/boot/grub2/grub.cfg,之前我也這么修改的,但是很多腳本我看不懂啊,其實直接修改40-custom就可以了。
#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
menuentry ' win7/8/10 xp'
set root =(hd0,1)
chainloader + 1注意看注釋啊,有3行是注釋啊,從第4行開始,不要有空行噢,否則grub選擇時也會有空行。 root後接啟動分區,注意分區是由1開始,如果你先裝的win7,那麼hd0,1,否則修改成適用的配置吧。
最後執行 grub2-mkconfig -o /boot/grub2/grub.cfg 從新生成gurb.cfg文件。有興趣的話可以備份之前的gurb.cfg文件,比較一下新舊的區別。
樓主如果想學習更多Linux系統知識,可以網路《Linux就該這么學》,不錯的一本Linux入門教程。
Ⅳ RHEL與SLES中的Linux啟動選項有哪些重大變化
當Linux伺服器啟動時,計算機首先讀取GRUB2配置去尋找哪個磁碟里包含根文件系統,以及在哪裡找到內核與initramfs文件包。如果某些配置錯誤,系統管理員就必須對其進行設置以使伺服器正常啟動。
採取以下步驟實現,當GRUB2運行到可以看見啟動選項時,單擊Esc鍵。選擇你想要設置的選項,按e鍵進入編輯模式。這將在/etc/default/grub and /etc/grub.d 中的GRUB2配置文件離顯示所有選項。
在Linux啟動選項菜單中選擇你要編輯的行,通常這個是關乎內核的。一些最重要的啟動選項在RHEL 7以及SUSE LES。Systemd.units或者systemd服務集合需要重啟,代替急救模式和應急模式。
Systemd.unit為Linux啟動選項提供許多服務,關於systemd.unit 服務這里有幾個關鍵點需要提醒所有的Linux管理員們:
● rescue.target:急救模式,為整個運營系統下載提供所需的服務,但不包括網路服務或者其他非必要的服務。急救模式可與來自初始化啟動過程的運行級1相提並論。
● emergency.target:最低級模式,不載入任何東西。你只需要一個啟動文件系統,幾乎沒有服務。這種目標能與在啟動一個初始化伺服器時通過init=/bin/bash模式相比。
● multi-user.target:替代運行級。它是默認下伺服器啟動的基本模式。
● graphical.target:運行級5的新版本,可以啟動所有的服務以及圖形界面。
● poweroff.target:舊有運行級0,用於關閉伺服器。
● reboot.target:舊運行級6,用於重新啟動伺服器。
為了在啟動中具體指定目標,將以上的模式放到GRUB2負載內核的程序行中。如此,你要麼需要指定語句systemd.unit=emergency.target,或者將選定的模式名加到負載內核的程序行末尾處。
鍵入目標啟動模式時,使用systemctl命令,語句為systemctl isolate reboot.target.。分布式供應商還會採用一些以前的命令操作以簡化這個過程。所有如果你還沒有習慣新的工作方式,使用telinit6命令可能會奏效。
當你完成提交了GRUB菜單的配置修改之後,按Ctrl+x進入啟動。這時就進入了一個特定的模式下,例如應急模式,輸入systemctl命令去查看哪一個systemd服務已經被啟動了。這將提供所有載入服務的概覽圖。在應急模式中,至少應該出現如下項
故障修復之後,使用systemctl命令後面加上你想進入的目標模式的名稱,該步驟用於重啟正常伺服器狀態,例如輸入systemctl isolate multi-user.target啟動運行級3。
修改GRUB2默認設置
如果你進入了GRUB2啟動菜單修改默認的GRUB2啟動項,你也許將設置永久的默認啟動模式配置。輸入grub2-mkconfig -o /boot/grub2/grub.cfg,這個命令將你習慣使用的啟動伺服器默認GRUB2配置文件/boot/grub2/grub.cfg進行了改寫。這個操作只有在GRUB配置包含真正的錯誤時才會生效。
改變GRUB配置改變了GRUB2的默認行為。/etc/default/grub文件夾包含了許多你不得不進行修改的GRUB2 設置。GRUB_CMDLINE_LINUX命令行包含了默認伺服器內核啟動的所有項。修改該命令行就可以永久的修改默認設置。
除了/etc/grub/default 文件以外,/etc/grub.d目錄下也包含了很少的需要修改的選項。
在提交了GRUB2配置文件的所有修改之後,使用grub2-mkconfig -o /boot/grub2/grub.cfg命令把它們寫入你的系統。
Ⅳ 請教如何用grub2引導linux內核
執行update-grub應該可以找到新內核的引導吧?如果不行,編輯grub.cfg手動添加啟動項:
menuentry "我的Ubuntu " {
linux /boot/vmlinuz-xxx
initrd /boot/initrd-xxx.lz
}
或者編輯/etc/grub.d/40_os-prober,將上面代碼添加到文件末。然後執行update-grub。
Ⅵ 如何修改新內核linux下的grub配置
進入ubuntu的請看這里。本帖是根據論壇里相應的帖子整理的。很可能有漏掉不少帖子,請使用論壇的搜索功能。
下面將給出很多種方法來解決這個問題:
1.用livecd(推薦)
2,用安裝cd
3,使用grub4dos
4,使用grub軟盤
上面的每一種方法都涉及到grub,通常,並不需要你對grub有多少了解,只要認真地讀下面的帖子,參照這些帖子去做,就能解決問題,但是,如果你想不僅知其然,還要知其所以然,那你可以看一下grub入門
1,使用livecd(推薦)
使用任何你喜歡的linux livecd
取得root許可權並在終端下運行grub
代碼:
sudo -s -H
grub
然後,使用如下指令:
oneleaf 寫道:
代碼:
grub>root (hdX,Y)
grub>setup (hd0)
root 是 /boot 分區的地址,如果不知道可以在 root (hd0, 時按Tab鍵來補全。
如果按TAB鍵後你還拿不定主意,那麼下面一段也許對你有幫助:
一般/boot就裝在你的ubuntu系統所在的分區(如果你不知道ubuntu裝在哪兒,可以用cfdisk命令查看)要小心的是hda1相當於(hd0,n-1),例如
yonsan 寫道:
如果linux安裝根分區為hda5 則執行的是root (hd0,4) 而不是 root (hd0,5)
最後,用
代碼:
grub>quit
退出grub,重啟系統。
下面是一個例子,(在這個例子中一些步驟並不是必需的——可能這些步驟是否必需取決於你的livecd 能否自動掛載你的本地硬碟的分區)
yonsan 寫道:
假定ubuntu系統安裝在hda5, 文件系統為ext3格式
使用 livecd 啟動成功後運行終端:
代碼:
sudo -s -H
mkdir -p /mnt/hda5
mount -t ext3 /dev/hda5 /mnt/hda5
mount -t proc none /mnt/hda5/proc
chroot /mnt/hda5 /bin/bash
source /etc/profile
grub
2) 在grub命令行模式下輸入:
代碼:
root (hd0,4)
setup (hd0)
2,使用ubuntu安裝cd恢復
firehare 寫道:
1. 啟動系統到 Ubuntu 安裝CD
2. 沿著屏幕上的命令直到 (千萬不要超過這一步)
[!!] Fdisk disks
3. 按 'Ctrl + Alt + F2'
4. 按 'Enter' 進入終端
5.
~ # mkdir /ubuntu
~ # fdisk -l /dev/discs/disc0/disc
~ # mount <你的Ubuntu根設備所在位置> /ubuntu/
~ # chroot /ubuntu/
sh-2.05b#
6. 假設 /dev/hda1 是 /boot 分區的地址
7. sh-2.05b# grub
grub> root (hd0,0)
grub> setup (hd0)
grub> quit
或者,你可以按照新手指南的做法
1. 用 Ubuntu 安裝 CD 開機
2. 在 "boot:" 提示號出現時, 鍵入 "rescue" 當作開機參數
boot: rescue
3. 順著屏幕上的指示跟著作
4,例如 假設 /boot 磁碟分區位在 /dev/hda
代碼:
#grub-install /dev/hda
3.1使用grub4dos重新安裝grub
下載
oneleaf 寫道:
將 grldr 復制到 C:\,編輯C:\BOOT.INI,加入一行:
C:\GRLDR="GRUB"
再手工輸入啟動命令
例如:
root (hd0,0)
kernel /vmlinuz-2.6.10-5-686 root=/dev/hdb5 ro quiet splash
initrd /initrd.img-2.6.10-5-686
savedefault
boot
進入後,重新安裝grub就好了。
重新安裝grub:
例如 假設 /boot 磁碟分區位在 /dev/hda
代碼:
# grub-install /dev/hda
3.2用grub4dos代替grub來引導系統
yonsan 寫道:
(憑記憶寫的,如有不完善請指正)
如果你的系統現在正在使用grub引導方式,請在操作之前查看一下/boot/grub/menu.lst的內容,建議將/boot/grub/menu.lst拷貝一份以備用(將它拷到fat32分區中存放就可以)!
進入window環境下
1) 下載grub020p.zip並解壓到C盤根目錄下,打開C盤查看一下是否有以下文件
C:\boot (文件夾)
C:\ChangeLog.txt
C:\compile
C:\COPYING
C:\grldr
C:\grub4lin
C:\grub-0.95-patch1-startups
C:\grub-0.95-patch2-findroot
C:\grub-0.95-patch3-ntfs
C:\grub-0.95-patch4-emulation
C:\grub-0.95-patch5-splash
C:\grub-0.95-patch6-scdrom
C:\grub-0.95-patch7-bioscdrom
C:\grub.exe
C:\grub.pif
C:\README.txt
C:\robin.xpm.gz
C:\scratchpad.txt
2) 修改C:\boot\grub\menu.lst ,用你剛才從linux系統中拷貝的menu.lst覆蓋C:\boot\grub\menu.lst
3) 進入grub命令行方式 (出現grub引導菜單時按c鍵)
> root (hd0,0)
> setup (hd0)
4) 重啟計算機
使用DOS引導盤,找到grub文件.
修改grub.conf文件。其中
「default=n」(n是個數字)是grub引導菜單默認被選中的項,n從0開始,0表示第一項,1表示第二項,依此類推。
「timeout=x」(x是一個數)是超時時間,單位是妙。也就是引導菜單顯示後,如果x秒內用戶不進行選擇,那麼grub將啟動默認項。
「splashimage =xxxxxx」,這是引導菜單的背景圖,先不理他。
其它常用項我用下面的例子來說明:
title Red Hat 8.0
root (hd1,6)
kernel /boot/vmlinuz-2.4.18-14 ro root=/dev/hdb7
initrd /boot/initrd-2.4.18-14.img
其中"Red Hat 8.0"是在啟動菜單列表裡顯示的名字
root (hdx,y)用來指定你的boot分區位置,如果你沒有分boot分區(本例就沒分boot分區),那就指向根分區就行了,hdx是linux所在硬碟,hd0是第一塊硬碟,hd1是第二塊,依此類推。y是分區位置,從0開始,也就是等於分區號減一,比如你要指向的分區是hdx7,那麼y就是6,如果是hdx1,那y就是0。注意root後面要有一個空格。
kernel /boot/vmlinuz-2.4.18-14,其中"/boot/vmlinuz-2.4.18-14"是你要用的內核路徑,如果你編譯了心內核,把它改成你的新內核的路徑就行了。
ro就不用管,寫上不會有錯。
root=/dev/hdxx指定根分區,本例是hdb7,所以root=/dev/hdb7
initrd xxxxxxxxxxxxx這行不要也行,目前我還不清楚它是做什麼用的。
上面是linux的,下面是windows的
title windows 98
rootnoverify (hd0,0)
chainloader +1
title xxxxxxx不用解釋了,上面有解釋。
rootnoverify (hdx,y)用來指定windows所在分區,x,y跟上面一樣,注意rootnoverify後有空格。
chainloader +1照抄就行,注意空格。
Ⅶ 請教Grub2的安裝
編譯:
./configure
make
sudo make install
默認路徑為 /usr/local/
安裝:
先mount上要安裝grub的分區,然後
sudo grub-install [--root-directory=DIR] /dev/hda //引導記錄安裝到mbr,[ grub文件安裝到 DIR/boot/grub/ ]
sudo grub-install [--root-directory=DIR] /dev/hda3 //引導記錄安裝到分區3,[ grub文件安裝到 DIR/boot/grub/ ]
grub-install 是一個腳本,它完成以下任務:
* 調用 grub-mkdevicemap 創建設備映像文件 /boot/grub/device.map
* 復制 *.mod *.lst *.img 文件到 /boot/grub/
* 調用 grub-probe 自動偵測文件系統類型
* 調用 grub-mkimage 生成grub2內核文件 /boot/grub/core.img
* 調用 grub-setup 安裝引導記錄到mbr或分區
創建grub菜單:
update-grub
它也是一個腳本,將根據 /usr/local/etc/grub.d/ 里的文件自動創建 /boot/grub/grub.cfg
最後對這個菜單文件手工修改成適合的樣子即可
以下是一個安裝的例子:
root@sunshine-laptop:/dev# mkdir /media/sda8
root@sunshine-laptop:/dev# mount /dev/sda8 /media/sda8
root@sunshine-laptop:/dev#
// sda8為系統 / (/boot)掛載點 指定/dev/sda 寫入mbr
root@sunshine-laptop:~# grub-install --root-directory=/media/sda8 /dev/sda
Installation finished. No error reported.
This is the contents of the device map /media/sda8/boot/grub/device.map.
Check if this is correct or not. If any of the lines is incorrect,
fix it and re-run the script `grub-install'.
(hd0) /dev/sda
root@sunshine-laptop:~#
// 如果這里/dev/sda 指定為優盤的設備就會把grub2寫入u盤,可以用該u盤引導系統。
Ⅷ 重新編譯了一下linux內核,現在系統進不去了。。。
可以用原來的內核啟動。
開機出grub選單時參考提示 (可能要按esc退出gurb圖形界面) 然後按C鍵 進入grub控制台。
>root(hdX,x) ------>你的根分區 可以 root ( 然後 tab 看看有沒有可選,一般是hd0 ,然後 root (hd0, 再tab。
>kernel 你的內核
>initrd 你的 initrd 文件
>boot
你重新編譯內核後,可能要重mkinitrdfs 重做 initrd
內核模塊變化的話,可能需要depmod -a 重新產生mole依賴
普通用戶:回答供參考 grub部分對 grub2不能保證正確 grub2沒仔細看過how-to 思路就是這樣子的,詳細參考 man 或 help
比如我的vmware里的archlinux里是這樣子的
grub選單 按C
>root (hd0,0)
>kernel /vmlinuz26
>initrd /kernel26.img
>boot
我的debian是grub2引導的還沒仔細看過 grub2 怎麼回事
===========================================================
linux內核現在一般都是 grub或別的loader 載入啟動的,最早的時候內核支持通過特殊方式寫入磁碟引導,開機bios直接jump到內核的代碼啟動,現在的版本都不用了。 如果你是通過修改 grub.cfg改的內核實際上還是通過grub引導的樣子。是不是你的timeout=0 了
以前記得grub開機好像有個熱鍵停在菜單上。很模糊,當前沒找到資料。
一點建議:ununtu是debian的引申版本, 編譯了新內核放再/boot後,應該可以 update-grub 開自動編輯grub。
=============================================================
不行就用你的安裝光碟引導系統吧,或者做個grub引導盤吧
Ⅸ debian內核解壓後怎麼編譯
下載最新的內核源代碼linux-2.6.33.1.tar.bz2,放在/liqiong/Linux內核 目錄下,liqiong是Linux OS的第一個用戶名。
2、進入Linux內核源碼所在的目錄(cd Linux內核),解壓該內核代碼到/usr/src下:
sudo tar -xjvf linux-2.6.33.1.tar.bz2 -C /usr/src
3、進入Linux內核源碼解壓後的目錄/usr/src/linux-2.6.33.1(cd /usr/src/linux-2.6.33.1)
4、sudo make mrproper 凈化解壓後的源代碼
5、sudo make menuconfig 對內核選項進行配置
在配置過程中會發生如下錯誤:
*** Unable to find the ncurses libraries or the
*** required header files.
*** 'make menuconfig' requires the ncurses libraries.
***
*** Install ncurses (ncurses-devel) and try again.
***
make[1]: *** [scripts/kconfig/dochecklxdialog] 錯誤 1
make: *** [menuconfig] 錯誤2
解決辦法:
(1)cd / 進入根目錄後,在終端輸入:sudo apt-get install ncurses
信息:
正在讀取軟體包列表... 完成
正在分析軟體包的依賴關系樹
正在讀取狀態信息... 完成
現在沒有可用的軟體包 ncurses,但是它被其它的軟體包引用了。
這可能意味著這個缺失的軟體包可能已被廢棄,
或者只能在其他發布源中找到
E: 軟體包 ncurses 還沒有可供安裝的候選者
(2)然後接著在終端輸入:sudo apt-get install libncurses*
(3)再cd /usr/src/linux-2.6.33.1進入內核所在目錄,再次輸入sudo make menuconfig就好了!
6、對於配置可選擇General Setup或者選擇其他的自定義選項保存後退出。
7、sudo make dep 建立模塊間的依賴信息
8、sudo make clean 刪除配置時留下的一些不用的文件
(7、8兩步可能對於一些PC沒有作用)
9、sudo make bzImage 編譯內核,內核較小時可以用make zImage
10、sudo make moles 編譯內核模塊
當然,在編譯內核時,可通過make-j<n>來加速內核的編譯,n一般等於CPU數量的兩倍。單核,n=2;雙核,n=4.即執行sudo make -j4就可以編譯了!
11、sudo make moles_install 安裝內核模塊
12、sudo make install 安裝內核
13、cd / 後在終端輸入:sudo mkinitramfs 2.6.33.1 -o /boot/initrd.img-2.6.33.1-generic
14、到此為止,構建內核完畢,第十二步把內核映象和System.map拷貝到/boot/下
#sudo cp /usr/src/linux-2.6.33.1/arch/i386/boot/bzImage /boot/vmlinuz-2.6.33.1-generic
#sudo cp System.map /boot/System.map-KERNEL_VERSION
#sudo ln -s /boot/System.map-KERNEL_VERSION /boot/System.map
15、
(1)修改grub配置文件
在終端輸入:sudo update-grub2,就會把剛才編譯的內核加入了Grub;(此時就可以重啟了,重啟後在Grub啟動項里多了Ubuntu, Linux 2.6.33.1-generic)
若還需修改(在Ubuntu10.04中沒有採用menu.lst,而是用的grub.cfg(/boot/grub/)),則修改grub.cfg就可以了,
在終端中輸入:sudo gedit /boot/grub/grub.cfg 用root賬戶進入grub.cfg並編輯
(或用sudo chmod +w /boot/grub/grub.cfg改變grub.cfg的許可權後在進行編輯)
如將Grub中的menuentry "Ubuntu, Linux 2.6.33.1-generic"{...}修改為menuentry "Ubuntu, Linux 2.6.33.1-liqiong"{...}(Linux 2.6.33.1-generic是我們剛才編譯的內核)
(2)修改default變數
在/boot/grub/grub.cfg中,設置set default="【某個數字】"(設置Grub啟動項里的默認啟動項)
在Grub啟動項里,從0數起,我的XP在第10項,所以set default="10",即XP就是默認的啟動項了。
最後重啟即可。
Ⅹ ubuntu下怎麼編譯linux內核
Ubuntu 系統
1. 准備工作
切換為管理員許可權,sudo –i 輸入用戶密碼 進入root 許可權
apt-get install build-essential kernel-package libncurses5-dev libqt3-headers
build-essential (基本的編程庫(gcc, make 等)
kernel-package (Debian 系統里生成 kernel-image 的一些配置文件和工具)
libncurses5-dev (meke menuconfig 要調用的)
libqt3-headers (make xconfig 要調用的)
2. 下載特定版本的內核源代碼
3. 復制源碼linux-3.2.12.tar.bz2 到/usr/src 目錄,解壓縮
命令.假設源碼存放在/home 目錄下
cp /home/linux-3.2.12.tar.bz2 /usr/src
cd /usr/src
tar xvjf linux-3.2.12.tar.bz2
解壓後生成 linux-3.2.12 目錄
4. cd linux-3.2.12
接下來配置內核選項
make menuconfig 這一步比較復雜,內核選項很多,可以使用當前內核的配置選項,
但編譯內核的時間會比較長,因為裝系統的時候使用的配置是適應大多數系統的,非定
制選項。關於內核配置選項怎麼定製,網上很多。
5. 把正在使用系統中的內核配置文件/usr/src/linux-headers-2.6.38-13-generic/.config 拷到
/usr/src/linux-3.2.12 目錄下
cp /usr/src/ linux-headers-2.6.38-13-generic/.config /usr/src/ linux-3.2.12
執行:
cd /usr/src/ linux-3.2.12
make menuconfig
終端會彈出一個配置界面
注意主菜單最後有兩項:
load a kernel configuration…
save a kernel configuration…
先選第一項load ….,意思是,利用當前的內核配置詳單來設置將要編譯的內核,然後選save 這一項保存,最後退出配置界面
6. 開如編譯安裝新內核
執行:make mrproper (清除以前曾經編譯過的舊文件,如果是第一次編譯,可不執行)
執行:make (編譯,加-j4,必須加,雙核並行編譯,速度快很多,不過使用原先配置
選項)
然後:make install
再:make moles (編譯模塊)
再:make moles_install (安裝模塊)
最後創建initrd 文件:
mkinitramfs -o /boot/initrd.img-linux-3.2.12
7. make install 以後,系統自動更新了啟動項,可以cat /boot/grub/grub.cfg 看下.之前的啟動項不能刪除,如果編譯內核不成功,之前的啟動項又不見了,系統也就跪了
8. reboot