日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
設(shè)備樹支持下的Linux內(nèi)核啟動(dòng)過(guò)程簡(jiǎn)介(基于設(shè)備樹的內(nèi)核linux啟動(dòng))

隨著Linux在嵌入式領(lǐng)域的廣泛應(yīng)用,設(shè)備樹(Device Tree)開始成為內(nèi)核啟動(dòng)時(shí)的重要組成部分。設(shè)備樹的出現(xiàn),使得Linux內(nèi)核能夠更好地適應(yīng)不同的硬件平臺(tái),更加靈活地處理硬件資源。本文將介紹設(shè)備樹支持下的Linux內(nèi)核啟動(dòng)過(guò)程。

創(chuàng)新互聯(lián)公司從2013年成立,先為旌陽(yáng)等服務(wù)建站,旌陽(yáng)等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為旌陽(yáng)企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。

一、原理

內(nèi)核啟動(dòng)時(shí),需要對(duì)硬件進(jìn)行設(shè)備樹的枚舉與識(shí)別。設(shè)備樹是一個(gè)跨平臺(tái)的數(shù)據(jù)結(jié)構(gòu),其中描述了硬件設(shè)備的類型、地址、中斷等信息。內(nèi)核通過(guò)讀取設(shè)備樹,將硬件資源識(shí)別出來(lái),并進(jìn)行初始化。

設(shè)備樹通常由.dt或.dtb文件組成,在內(nèi)核編譯時(shí)可以選擇將設(shè)備樹編譯成二進(jìn)制格式.dtb,這樣可以減小設(shè)備樹的大小,提高內(nèi)核啟動(dòng)的效率。

二、內(nèi)核啟動(dòng)流程

1.引導(dǎo)加載器(Bootloader)執(zhí)行階段

內(nèi)核由引導(dǎo)加載器加載,并且命令行參數(shù)會(huì)傳遞給內(nèi)核啟動(dòng)。對(duì)于設(shè)備樹支持的內(nèi)核,引導(dǎo)加載器需要傳遞設(shè)備樹文件的地址以及大小給內(nèi)核。

2.內(nèi)核初始化階段

內(nèi)核啟動(dòng)后,首先進(jìn)行的是內(nèi)核初始化。此時(shí),內(nèi)核需要讀取設(shè)備樹來(lái)識(shí)別硬件資源,并初始化硬件設(shè)備驅(qū)動(dòng)。在此過(guò)程中,內(nèi)核會(huì)使用到設(shè)備樹中描述的硬件節(jié)點(diǎn)信息。

3.設(shè)備樹的解析與加載階段

內(nèi)核啟動(dòng)完成后,設(shè)備樹文件被讀取到內(nèi)存中,并進(jìn)行解析和加載。在解析過(guò)程中,內(nèi)核會(huì)以設(shè)備樹中的根節(jié)點(diǎn)為起點(diǎn),從頂向下逐層解析和加載子節(jié)點(diǎn)的信息。通常設(shè)備樹文件加載到系統(tǒng)內(nèi)存中的某個(gè)指定位置,并在內(nèi)核啟動(dòng)過(guò)程中使用該位置來(lái)訪問(wèn)設(shè)備樹。

4.設(shè)備樹的匹配階段

設(shè)備樹解析和加載完成后,內(nèi)核對(duì)硬件資源進(jìn)行匹配。此時(shí),內(nèi)核遍歷整個(gè)設(shè)備樹,對(duì)每個(gè)樹節(jié)點(diǎn)進(jìn)行匹配。匹配規(guī)則通常是從設(shè)備樹根節(jié)點(diǎn)開始,在設(shè)備樹中尋找與硬件匹配的節(jié)點(diǎn),并讀取其信息,完成硬件初始化。

5.啟動(dòng)內(nèi)核階段

設(shè)備樹匹配完成后,內(nèi)核會(huì)進(jìn)入啟動(dòng)階段。此時(shí),硬件設(shè)備已經(jīng)初始化完成,內(nèi)核可以正常運(yùn)行,并加載用戶空間進(jìn)行后續(xù)操作。

三、適用情況

設(shè)備樹的存在和廣泛使用,主要是為了適應(yīng)不同的硬件平臺(tái)和體系結(jié)構(gòu),因此對(duì)于某些嵌入式應(yīng)用來(lái)說(shuō),不需要使用設(shè)備樹也可以完成內(nèi)核啟動(dòng)。其適用通過(guò)各種引導(dǎo)程序提供的信息來(lái)識(shí)別硬件設(shè)備。

不過(guò),對(duì)于需要支持多種設(shè)備的規(guī)模更大的嵌入式系統(tǒng),使用設(shè)備樹將更加方便。通過(guò)設(shè)備樹,內(nèi)核可以將硬件設(shè)備的信息標(biāo)準(zhǔn)化,并具有更好的兼容性。

設(shè)備樹是一種優(yōu)秀的設(shè)計(jì),為內(nèi)核啟動(dòng)提供了更好的硬件資源管理機(jī)制。通過(guò)設(shè)備樹在不同平臺(tái)上更加靈活,可以更好地支持各種硬件設(shè)備,從而提高了嵌入式開發(fā)工作的效率。

相關(guān)問(wèn)題拓展閱讀:

  • linux下的五大啟動(dòng)管理程序
  • linux啟動(dòng)時(shí)怎么選擇新舊內(nèi)核

linux下的五大啟動(dòng)管理程序

分別是

1. System V:System V是一種UNIX操作系統(tǒng)的啟動(dòng)和關(guān)機(jī)腳本。

2. Upstart:Upstart是Ubuntu Linux發(fā)行版中使用的開機(jī)啟動(dòng)管理器。

3. systemd:systemd是Linux內(nèi)核下常用的開機(jī)啟動(dòng)管理工具。

4. SysVinit:SysVinit是一個(gè)Unix-like操作系統(tǒng)上常用的進(jìn)程初始化守護(hù)進(jìn)程集成工唯櫻具。

5. runit:runit 是指陵叢一個(gè)小而快速的 Unix init 系統(tǒng), 可汪衫以在多重平臺(tái)上運(yùn)行, 例如 Linux、Solaris、Mac OS X 等

linux啟動(dòng)時(shí)怎么選擇新舊內(nèi)核

1 是手動(dòng)選擇在開機(jī)時(shí)候按方上下方向鍵 界面會(huì)停留在選擇內(nèi)核的界面

2自動(dòng)選擇 系統(tǒng)默認(rèn)會(huì)選擇最新安裝的內(nèi)核.如果要更改談派斗默認(rèn)使用的內(nèi)核則修改配置文件/boot/grub/menu.lst(直接修羨蘆改grub.conf同樣可行 )下default默認(rèn)為0是表示之一個(gè)菜單選項(xiàng)(開機(jī)時(shí)的內(nèi)核含磨選擇菜單),改為1就是使用第二個(gè)菜單項(xiàng)了。timeout表示菜單等待時(shí)間,單位為秒。

已安裝內(nèi)核的新版本(例如,實(shí)現(xiàn) P 支持),那不需要下載任何代碼跳過(guò)此部分繼續(xù)下一屏。

您可以在 上找到內(nèi)核代碼。當(dāng)您進(jìn)入到那后,您將發(fā)現(xiàn)內(nèi)核的源代碼按內(nèi)核版本(v2.2、v2.3 等),被組織到多個(gè)不同的目錄中。在每個(gè)目錄中,您將發(fā)現(xiàn)文件被冠以”linux-x.y.z.tar.gz”和”linux-x.y.z.tar.bz2″。這些就是敏枯 Linux 內(nèi)核的源代碼。您也將看到冠以 “patch-x.y.z.gz” 和 “patch-x.y.z.bz2” 的文件。這些是用來(lái)更新前面完整的內(nèi)核源代碼的補(bǔ)丁包。如果您希望編譯一個(gè)新的內(nèi)核版本,您將需要下載這些”linux”文件其中之一。

內(nèi)早擾核解包

如果您已從 kernel.org 下載一個(gè)新的內(nèi)核,現(xiàn)在是要將其解包時(shí)候了。首先,cd /usr/src。如果這里有一個(gè)存在的”linux”目錄,將其改名為”linux.old” (“mv linux linux.old”,以 root 權(quán)限)。

現(xiàn)在,可以解開新的內(nèi)核包了。仍然在 /usr/src 目錄下,輸入 tar xzvf /path/to/my/kernel-x.y.z.tar.gz 或者 cat /path/to/my/kernel-x.y.z.tar.bz2 | bzip2 -d | tar xvf -,根據(jù)您下載的源代碼是用 gzip 或 bzip2 壓縮的。在輸入完此命令后,您下載的內(nèi)核源代碼會(huì)被釋放到一個(gè)新的”linux”目錄下。注意內(nèi)核源代碼通常將在硬盤上占用超過(guò)兆空間!

討論配置問(wèn)題

在您編譯內(nèi)核前,您需要配置它,配置是您精確控制在新內(nèi)核中啟用(禁止)哪些內(nèi)核功能的機(jī)會(huì)。您也將控制哪些會(huì)被編譯到內(nèi)核的二進(jìn)制映像(在啟動(dòng)時(shí)被載入)而哪些被編譯到需要時(shí)載入的內(nèi)核模塊文件。

老式配置內(nèi)核的方法是極為痛苦的過(guò)程,并涉及到進(jìn)入 /usr/src/linux 目錄并輸入 make config 命令。請(qǐng)放棄這種配置內(nèi)核的方式除非您想在命令行上回答幾百個(gè)(對(duì)!幾百個(gè))“yes/no”的問(wèn)題。

配置的新途徑

我們是現(xiàn)代人類,我們不在輸入 make config,而是輸入 make menuconfig 或者 make xconfig。如果您想要配置您的內(nèi)核,使用上述選擇之一。如果您輸入 make menuconfig,您將使用一個(gè)漂亮的基于文本的彩色菜單系統(tǒng)來(lái)配置內(nèi)核。如果您輸入 make xconfig,您將使用一個(gè)更漂亮的基于 X-Window 的 GUI 界面來(lái)配置內(nèi)核的各種選項(xiàng)。這里有一個(gè)使用 “make menuconfig” 的屏幕陸拿旦截圖:

當(dāng)使用 “make menuconfig” 時(shí),在左面出現(xiàn)一個(gè) “” 的選項(xiàng)能被編譯成為一個(gè)模塊。當(dāng)選項(xiàng)被選中,按下空格鍵來(lái)循環(huán)選擇選項(xiàng)是被選中或未選中, (“”)表示將被編譯成內(nèi)核映像而(“”)表示將被編譯成模塊。

配置技巧

在這里有極其多的內(nèi)核選項(xiàng),而且我們無(wú)法在此一一解釋所以請(qǐng)利用內(nèi)核內(nèi)置的幫助功能?;旧厦總€(gè)選項(xiàng)都至少有一些描述,而且每個(gè)通常都有一行”如果您不知道這個(gè)選項(xiàng)的含義,輸入 Y。(或者 N)”。這些提示在您不知道一個(gè)特定選項(xiàng)的含義時(shí)能幫助您。要使用幫助,選中您有疑問(wèn)的選項(xiàng)然后按 “?” 鍵。

編譯和安裝內(nèi)核

make dep; make clean

一旦您的內(nèi)核配置完畢,就可開始編譯它了。在我們能編譯它前,我們需要生成依賴(dependency)信息并清除任何老的”編譯結(jié)果”。這可以通過(guò)在 /usr/src/linux 下輸入 make dep; make clean 完成。

make bzImage

現(xiàn)在是編譯真正的二進(jìn)制內(nèi)核映像時(shí)候了。輸入 make bzImage。過(guò)幾分鐘后,編譯會(huì)結(jié)束而且您在 /usr/src/linux/arch/i386/boot(x86 PC 內(nèi)核)目錄下找到 bzImage 文件。我們將待會(huì)告訴您如何安裝這個(gè)新內(nèi)核,但是現(xiàn)在我們要看看模塊編譯了。

編譯模塊

現(xiàn)在我們有了 bzImage,下面要編譯模塊了。即使您在配置內(nèi)核時(shí)沒(méi)有使用任何模塊,也不要跳過(guò)此步驟在編譯完 bzImage 后立刻編譯模塊是個(gè)好習(xí)慣。而且,如果您真的沒(méi)有模塊需要編譯,這個(gè)步驟也非??炀徒Y(jié)束了。輸入 make modules; make modules_install。這將導(dǎo)致模塊被編譯而且被安裝到 /usr/lib/ 目錄下。

祝賀您!您的內(nèi)核已經(jīng)被編譯完成了,您的內(nèi)核模塊也編譯完成并被安裝?,F(xiàn)在是要重新配置 LILO,這樣您能使用新的內(nèi)核。

啟動(dòng)配置

LILO 入門

現(xiàn)在是最后來(lái)重新配置 LILO 的時(shí)候了,它將負(fù)責(zé)載入新的內(nèi)核。LILO 是更流行的 Linux 引導(dǎo)工具,而且為所有的主流 Linux 發(fā)行商所采用。您要作的之一件事是察看您的 /etc/lilo.conf 文件。它將包含一行看似 “image=/vmlinuz” 的語(yǔ)句。該語(yǔ)句告訴 LILO 到何處找到內(nèi)核。

啟動(dòng)配置, 第二部分

要配置 LILO 來(lái)使用新的內(nèi)核,您有兩種選擇。之一個(gè)是覆蓋您現(xiàn)有的內(nèi)核除非您手頭上有一些緊急啟動(dòng)措施如還有此內(nèi)核的引導(dǎo)盤,這很危險(xiǎn)的方法。

更為安全的選擇是配置 LILO 是得它能從新的或舊的內(nèi)核引導(dǎo)。LILO 可配置成從新內(nèi)核缺省啟動(dòng),但仍提供一種方法讓您遇上問(wèn)題時(shí)能選擇舊的內(nèi)核來(lái)啟動(dòng)。這是推薦的作法,也是我們將隨后介紹的方法。

啟動(dòng)配置, 第三部分

您的 lilo.conf 文件有可能看起來(lái)如下:

boot=/dev/hda

delay=20

vga=normal

root=/dev/hda1

read-only

image=/vmlinuz

label=linux

要在您的 lilo.conf 文件中增添新的項(xiàng)目,參見(jiàn)下列步驟。首先,拷貝 /usr/src/linux/arch/i386/boot/bzImage 到您的根(root)分區(qū)上的一個(gè)文件,例如 /vmlinuz2。一旦拷貝完畢,復(fù)制您 lilo.conf 文件的最后三行并將它們添加到該文件的最后… 我們即將結(jié)束整個(gè)步驟了…

啟動(dòng)配置, 第四部分

現(xiàn)在,您的 lilo.conf 文件應(yīng)該看起來(lái)如下:

boot=/dev/hda

delay=

vga=normal

root=/dev/hda1

read-only

image=/vmlinuz

label=linux

image=/vmlinuz

label=linux

首先,將之一個(gè) “image=” 行改為 “image=/vmlinuz2″。其次,將第二個(gè) “l(fā)abel=” 行改為 “l(fā)abel=oldlinux”。然后,確定在文件的開始有一行 “delay=20″如果沒(méi)有,增添一行。如果它已經(jīng)存在,將數(shù)字至少設(shè)為 20。

啟動(dòng)配置, 第五部分

您最后的 lilo.conf 文件將看起來(lái)如下:

boot=/dev/hda

delay=

vga=normal

root=/dev/hda

read-only

image=/vmlinuz

label=linux

image=/vmlinuz

label=oldlinux

作完這些修改后,您將需要以 root 身份運(yùn)行 “l(fā)ilo”。這非常重要!如果您不執(zhí)行此步,啟動(dòng)的過(guò)程無(wú)法繼續(xù)。運(yùn)行 “l(fā)ilo” 將給 lilo 一個(gè)機(jī)會(huì)來(lái)更新它的啟動(dòng)映射。

啟動(dòng)配置, 詳解

現(xiàn)在我們?cè)敿?xì)地解釋一下我們所作的改動(dòng)。這個(gè) lilo.conf 文件可以用來(lái)允許您啟動(dòng)兩個(gè)不同的內(nèi)核。它允許您啟動(dòng)您原來(lái)的內(nèi)核,位于 /vmlinuz 目錄下。它也允許您啟動(dòng)新的內(nèi)核,位于 /vmlinuz2 目錄下。在缺省情況下,它將嘗試啟動(dòng)您的新內(nèi)核(指向新內(nèi)核的 image/label 行首先出現(xiàn)在配置文件中)。

如果,出于某種原因,您需要啟動(dòng)舊內(nèi)核,只需在重新啟動(dòng)計(jì)算機(jī)時(shí)按住 Shift 鍵。LILO 將會(huì)監(jiān)測(cè)到此操作,然后允許您輸入要啟動(dòng)的映像標(biāo)簽名。要啟動(dòng)舊內(nèi)核,您需要輸入 “oldlinux”,然后按回車鍵。要看到有哪些選擇,您可按 TAB 鍵。

1 是手動(dòng)選擇在開機(jī)時(shí)候按方上下方向鍵 界面會(huì)停留在選擇內(nèi)核的界面談派斗

2 自動(dòng)選擇 系統(tǒng)默認(rèn)會(huì)選擇最新安裝的內(nèi)核.如果要更改默認(rèn)使用的內(nèi)核則修改

配置文件

/boot/grub/menu.lst(直接修改grub.conf同樣可行 )下default默羨蘆認(rèn)為0是表示之一個(gè)菜單選項(xiàng)(開機(jī)時(shí)的內(nèi)核選擇含磨菜單),改為1就是使用第二個(gè)菜單項(xiàng)了。timeout表示菜單等待時(shí)間,單位為秒。

開機(jī)自檢以知渣猛后,會(huì)加載grub 這里會(huì)有兩個(gè)內(nèi)核,如果你保留了原內(nèi)核的話。只要按一下上下鍵選擇搭橋,然后回車就可以了。。。如果要修改為開機(jī)自動(dòng)以某個(gè)內(nèi)核為默認(rèn)內(nèi)核,那么修改一下

/boot/grub/grub.conf就可以了。。。0為之一個(gè)內(nèi)核,1為第二個(gè)。上梁激邊的是0,下邊的是1

首先, 下kernel源碼, 編譯賣森新內(nèi)核兄鉛, 然后修改/boot/grub/grub.conf, 加一個(gè)新item, 最后reboot.

reboot后,參考hack_qyt的意見(jiàn).

下面是我自己新加羨配好的項(xiàng)( in /boot/grub/grub.conf), 供你參考.

#ID: 12

title=Gentoo Linux 2.6.35.7(my_kernel working,T410i,ntfs R, RF FS updated,FUSE knl supp, wifi, u2serial,nfs,acpi_lighting_adj)

root (hd0,4)

kernel /boot/kernel-2.6.0058 root=/dev/sda5 ramdisk=8192 hdc=ide-scsi

基于設(shè)備樹的內(nèi)核linux 啟動(dòng)的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于基于設(shè)備樹的內(nèi)核linux 啟動(dòng),設(shè)備樹支持下的Linux內(nèi)核啟動(dòng)過(guò)程簡(jiǎn)介,linux下的五大啟動(dòng)管理程序,linux啟動(dòng)時(shí)怎么選擇新舊內(nèi)核的信息別忘了在本站進(jìn)行查找喔。

創(chuàng)新互聯(lián)成都網(wǎng)站建設(shè)公司提供專業(yè)的建站服務(wù),為您量身定制,歡迎來(lái)電(028-86922220)為您打造專屬于企業(yè)本身的網(wǎng)絡(luò)品牌形象。
成都創(chuàng)新互聯(lián)品牌官網(wǎng)提供專業(yè)的網(wǎng)站建設(shè)、設(shè)計(jì)、制作等服務(wù),是一家以網(wǎng)站建設(shè)為主要業(yè)務(wù)的公司,在網(wǎng)站建設(shè)、設(shè)計(jì)和制作領(lǐng)域具有豐富的經(jīng)驗(yàn)。


文章題目:設(shè)備樹支持下的Linux內(nèi)核啟動(dòng)過(guò)程簡(jiǎn)介(基于設(shè)備樹的內(nèi)核linux啟動(dòng))
URL網(wǎng)址:http://m.5511xx.com/article/dhdsecc.html