新聞中心
Linux操作系統(tǒng)在開機(jī)時(shí),需要啟動內(nèi)核,以便讓系統(tǒng)能夠正常運(yùn)行。內(nèi)核是操作系統(tǒng)的核心組件,它負(fù)責(zé)管理操作系統(tǒng)的資源,控制系統(tǒng)的運(yùn)行,處理外部設(shè)備的數(shù)據(jù)等。本文將介紹Linux開機(jī)啟動過程中如何啟動內(nèi)核。

站在用戶的角度思考問題,與客戶深入溝通,找到中山網(wǎng)站設(shè)計(jì)與中山網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、主機(jī)域名、雅安服務(wù)器托管、企業(yè)郵箱。業(yè)務(wù)覆蓋中山地區(qū)。
1. BIOS加載
在電腦開機(jī)時(shí),計(jì)算機(jī)會首先加載Basic Input/Output System(BIOS),BIOS是一種固化在主板固件中用于在開機(jī)時(shí)初始化硬件和啟動操作系統(tǒng)的程序。首先BIOS會進(jìn)行硬件自檢,然后掃描并加載硬盤上的引導(dǎo)扇區(qū)。
2. 引導(dǎo)扇區(qū)的加載
引導(dǎo)扇區(qū)是硬盤上的一個(gè)區(qū)域,它負(fù)責(zé)加載操作系統(tǒng)的引導(dǎo)程序。在Linux系統(tǒng)中,引導(dǎo)程序位于/boot/grub/目錄下的grub.cfg文件中。該文件包含了操作系統(tǒng)的啟動選項(xiàng)和引導(dǎo)順序。
當(dāng)BIOS加載了引導(dǎo)扇區(qū)后,它會掃描引導(dǎo)扇區(qū)的內(nèi)容,并將控制權(quán)交給引導(dǎo)程序。引導(dǎo)程序的主要作用是加載內(nèi)核,并將操作系統(tǒng)的控制權(quán)轉(zhuǎn)交給內(nèi)核。
3. 內(nèi)核加載
引導(dǎo)程序?qū)⒓虞d內(nèi)核的過程分為兩個(gè)階段:之一個(gè)階段和第二個(gè)階段。
之一個(gè)階段:引導(dǎo)程序會從硬盤中找到內(nèi)核文件,并將內(nèi)核文件加載到內(nèi)存中。內(nèi)存地址通常是0x100000(1MB),然后跳轉(zhuǎn)到此地址,進(jìn)入第二個(gè)階段。
第二個(gè)階段:內(nèi)核已經(jīng)在內(nèi)存中運(yùn)行,操作系統(tǒng)從此時(shí)開始啟動。內(nèi)核啟動時(shí)會執(zhí)行一些初始化操作:
1. 內(nèi)核會檢測系統(tǒng)的硬件設(shè)備,如處理器、內(nèi)存、硬盤、輸入設(shè)備等。
2. 內(nèi)核會初始化CPU,并分配CPU時(shí)間片,就像操作系統(tǒng)分配CPU時(shí)間片一樣,以便讓各個(gè)進(jìn)程可以輪流執(zhí)行。
3. 內(nèi)核還會加載一些模塊,如驅(qū)動程序等,以便系統(tǒng)能夠識別硬件設(shè)備并進(jìn)行相應(yīng)的操作。
4. 內(nèi)核會加載root文件系統(tǒng),這是Linux操作系統(tǒng)中的核心文件系統(tǒng)。root文件系統(tǒng)包含了所有操作系統(tǒng)的文件和目錄。
5. 內(nèi)核會運(yùn)行init程序,init程序是Linux操作系統(tǒng)中的之一個(gè)進(jìn)程,它會初始化操作系統(tǒng),并啟動其他服務(wù)進(jìn)程。
在Linux操作系統(tǒng)中,內(nèi)核是最重要的組件之一,它是操作系統(tǒng)的核心,并負(fù)責(zé)管理硬件資源和控制系統(tǒng)的運(yùn)行。在Linux開機(jī)啟動過程中,首先BIOS會加載引導(dǎo)扇區(qū),然后引導(dǎo)程序會加載內(nèi)核,并將控制權(quán)交給內(nèi)核。內(nèi)核會執(zhí)行一些初始化操作,包括檢測硬件、初始化CPU、加載驅(qū)動程序和root文件系統(tǒng)等。內(nèi)核會運(yùn)行init進(jìn)程,初始化操作系統(tǒng),并啟動其他服務(wù)進(jìn)程。
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián)為您提供網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁設(shè)計(jì)及定制高端網(wǎng)站建設(shè)服務(wù)!
如何使linux開機(jī)時(shí)選擇要進(jìn)入的內(nèi)核版本
開機(jī)一直按E鍵即可進(jìn)入內(nèi)核選擇界面。
找了蠻久解決方案的一個(gè)問題……
編輯 /etc/default/grub (比如命令:sudo gedit /etc/default/grub)
找到 hidden_timeout 數(shù)字改為10,保存
終端執(zhí)行命令:sudo update-grub
sudo reboot重啟 ,正常的話 會有一個(gè)
倒計(jì)時(shí)
那個(gè)時(shí)候按住shift 然后在菜單欄里選就ok了
啟動Linux操作系統(tǒng)后,按‘e’鍵進(jìn)入Grub引導(dǎo)界面,選擇指定內(nèi)核進(jìn)行引導(dǎo)。
在開機(jī)后的引導(dǎo)菜單里面用鍵盤上的上下方向鍵選擇,回車就可以了
修改grub.cfg
如何使用bochs啟動linux2.6.0版本內(nèi)核
當(dāng)然不能真正啟動就panic了,但是單步調(diào)試和理解內(nèi)核在x86平臺啟動已經(jīng)夠了灶罩逗。
bochs下運(yùn)隱賣行l(wèi)inux3.0內(nèi)核(已驗(yàn)證)
1. 構(gòu)造調(diào)試環(huán)境
由于bochs內(nèi)建調(diào)試功能, 且支持gdb, 用它調(diào)試內(nèi)核會很方便.
(文章中大部分命令的運(yùn)行需要root權(quán)限,以sudo方式運(yùn)行)
1.1 構(gòu)建磁盤鏡像
Shell代碼
dd if=/dev/zero of=hd0.img
count=$((63*16*100))
用這個(gè)命令可以構(gòu)建一個(gè)50MB左右的磁盤鏡像, 輸出結(jié)果如下:
100800+0 records in
100800+0 records out
bytes (52 MB) copied, 0.s, 70.3
MB/s
注意count必須為63*16的倍數(shù), 否則bochs識別硬盤會有問題.
1.2 掛載磁盤鏡像
Shell代碼
losetup /dev/loop0 hd0.img
這個(gè)命令可以將文件綁定到一個(gè)loop設(shè)備. 如果/dev/loop0不存悶首在, 可以嘗試 modprobe
loop.
然后進(jìn)行設(shè)備初始化:
Shell代碼
cfdisk -s63 -h16/dev/loop0
只創(chuàng)建一個(gè)主分區(qū)就可以. 寫入后, 用命令fdisk檢查結(jié)果:
Shell代碼
fdisk -lu /dev/loop0
Disk /dev/loop0: 51 MB,bytes
16 heads, 63 sectors/track, 100 cylinders, total
sectors
Units = sectors of 1 * 512 = 512 bytes
Disk identifier: 0x
Device Boot Start End Blocks Id System
/dev/loop0p368+ 83 Linux
將分區(qū)1掛載到/dev/loop1.
Shell代碼
losetup /dev/loop1 hd0.img -o
$((63*512))
格式化/dev/loop1為ext3格式.
Shell代碼
mkfs.ext3 /dev/loop1
在mnt下創(chuàng)建img目錄, 做以后維護(hù)用.
Shell代碼
mkdir -p /mnt/img
將loop1掛載到/mnt/img
Shell代碼
mount /dev/loop1 /mnt/img/
安裝引導(dǎo)程序. 因?yàn)槲铱駸醿A向于模塊化架構(gòu), 所以選擇GRUB2.
本文以grub-1.97~beta3為示例,
讀者可自行安裝其他的引導(dǎo)系統(tǒng)如lilo.
Shell代碼
mkdir /mnt/img/boot
cp -r /usr/lib/grub/i386-pc/
/mnt/img/boot/grub
生成一個(gè)core.img, biosdisk負(fù)責(zé)讀取磁盤, part_msdos負(fù)責(zé)處理MBR,
ext2負(fù)責(zé)讀取ext3分區(qū).
Shell代碼
cd /mnt/img/boot/grub/
grub-mkimage -O i386-pc -o core.img biosdisk part_msdos
ext2
Shell代碼
ls -lh core.img
-rw-r–r–1 root root 25K Sep2114:28
core.img
只有區(qū)區(qū)的25K.. 里面甚至還包含一個(gè)小的應(yīng)急shell, 不過作用不大.
安裝grub2到(hd0), 根目錄在(hd0,1)
Shell代碼
echo”(hd0) /dev/loop0″ >
./device.map
grub-setup -m ./device.map -d /mnt/img/boot/grub/ -r
‘(hd0,1)’ ‘(hd0)’
檢查一下安裝成果:
Shell代碼
hexdump -C /dev/loop0 | less
如果你能看到:
Shell代碼
d e8 2e00 cd18 eb
fe65|}…….GRUB .Ge|
f 6d6973 6b|om.Hard
Disk.Rea|
就說明安裝成功.
清理一下.
Shell代碼
cd
umount /mnt/img
losetup -d /dev/loop1
losetup -d /dev/loop0
1.3 啟動測試.
給上面的hd0.img配一個(gè)bochsrc文件, 可以拿bochs示例dlxlinux的配置文件來改,
只需將硬盤換為:
Shell代碼
ata0-master: type=disk, path=”hd0.img”, cylinders=100,
heads=16, spt=63
然后啟動Bochs, 順利的話, 你能看到傳說中的grub2 shell.
2. 從啟動到保護(hù)模式.
為我們的bochs虛擬機(jī)編譯一個(gè)內(nèi)核. 不必太復(fù)雜,
目前我們只關(guān)心啟動部分.
2.1 安裝內(nèi)核
退出bochs, 掛載hd0.img:
Shell代碼
mount hd0.img /mnt/img/ -o
loop,offset=$((63*512))
拷貝bzImage.
Shell代碼
cp /usr/src/linux/arch/i386/boot/bzImage
/mnt/img/boot/vmlinuz-3.0.00
這兩個(gè)步驟可以放到內(nèi)核的Makefile中, 以后每次編譯完成后,
自動更新到hd0.img里.
然后將下列配置寫到/mnt/img/boot/grub/grub.cfg
Shell代碼
# Timeout for menu
set timeout=10
# Set default boot entry as Entry0
set default=0
# Entry0- Load Linux kernel
menuentry”Linux-3.0.00″{
set root=(hd0,1)
linux
/boot/vmlinuz-3.0.00root=/dev/hda1
關(guān)于linux怎么啟動內(nèi)核的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
創(chuàng)新互聯(lián)-老牌IDC、云計(jì)算及IT信息化服務(wù)領(lǐng)域的服務(wù)供應(yīng)商,業(yè)務(wù)涵蓋IDC(互聯(lián)網(wǎng)數(shù)據(jù)中心)服務(wù)、云計(jì)算服務(wù)、IT信息化、AI算力租賃平臺(智算云),軟件開發(fā),網(wǎng)站建設(shè),咨詢熱線:028-86922220
新聞標(biāo)題:Linux開機(jī)啟動,如何啟動內(nèi)核?(linux怎么啟動內(nèi)核)
當(dāng)前URL:http://m.fisionsoft.com.cn/article/cdjiidc.html


咨詢
建站咨詢
