新聞中心
linux作為一款開源的操作系統(tǒng),由內(nèi)核和其他實(shí)時(shí)操作系統(tǒng),應(yīng)用程序和用戶界面組成。Linux中的引導(dǎo)內(nèi)核是一個(gè)用于處理硬件初始化并啟動(dòng)系統(tǒng)核心的關(guān)鍵內(nèi)核組件。內(nèi)核完成了一系列從硬件初始化到安裝完整操作系統(tǒng)的任務(wù)。Linux內(nèi)核的主要任務(wù)包括以下幾點(diǎn):

成都創(chuàng)新互聯(lián)致力于網(wǎng)站建設(shè)、做網(wǎng)站,成都網(wǎng)站設(shè)計(jì),集團(tuán)網(wǎng)站建設(shè)等服務(wù)標(biāo)準(zhǔn)化,推過標(biāo)準(zhǔn)化降低中小企業(yè)的建站的成本,并持續(xù)提升建站的定制化服務(wù)水平進(jìn)行質(zhì)量交付,讓企業(yè)網(wǎng)站從市場(chǎng)競(jìng)爭(zhēng)中脫穎而出。 選擇成都創(chuàng)新互聯(lián),就選擇了安全、穩(wěn)定、美觀的網(wǎng)站建設(shè)服務(wù)!
(1)設(shè)置硬件:內(nèi)核通過硬件初始化指令來初始化硬件,包括與內(nèi)存有關(guān)的硬件(如內(nèi)存頻率,存儲(chǔ)頁和緩存),硬盤和生物認(rèn)證設(shè)備,網(wǎng)絡(luò)接口卡和計(jì)算機(jī)中的絕大多數(shù)外圍設(shè)備。
(2)裝載根文件系統(tǒng):在裝載根文件系統(tǒng)時(shí),內(nèi)核從磁盤讀取安裝系統(tǒng)中用于執(zhí)行程序的/bin和/usr文件夾,以及去系統(tǒng)設(shè)置,如用戶和權(quán)限之類的放入內(nèi)存的/etc文件夾。
(3)啟動(dòng)任務(wù):完成硬件設(shè)置和根文件系統(tǒng)加載后,Linux將磁盤映射到內(nèi)存,并開始讓處理器開始執(zhí)行啟動(dòng)腳本包所包含的程序中定義的程序。這些程序?qū)⒉渴鹩脩艚缑?,運(yùn)行守護(hù)進(jìn)程,設(shè)置網(wǎng)絡(luò)環(huán)境,檢查用戶登錄,并加載適用的設(shè)備驅(qū)動(dòng)程序。
(4)啟動(dòng)可執(zhí)行項(xiàng):完成以上任務(wù)的進(jìn)程后,Linux系統(tǒng)會(huì)按照/etc/INIT.d下的文件指令,用來啟動(dòng)指令中要求啟動(dòng)的程序,確保系統(tǒng)和程序在開機(jī)后一切運(yùn)行正常。
由于Linux內(nèi)核是一個(gè)復(fù)雜的程序,對(duì)人們而言可能很難理解它到底是如何工作的。但是,可以通過逐步閱讀Linux內(nèi)核程序代碼來更深入地了解它的工作原理。下面是一些用于初始化Linux引導(dǎo)過程的代碼片段:
首先,主要的硬件初始化是在內(nèi)核的start_kernel()函數(shù)中完成的:
void start_kernel(void)
{
/* Init the hardware */
setup_arch(&command_line);
setup_ramdisk();
setup_initrd();
setup_pci();
setup_percpu_areas();
/* ACPI OR MPS */
x86_init.oems.init_irq();
/* Call into the SUBARCH code */
subarch_init();
/* Interrupts are enabled now */
lockdep_init();
lockdep_info();
system_call_init();
kasan_init();
}
隨后,內(nèi)核設(shè)置將磁盤映像安裝到內(nèi)存中:
void install_disk_images(void)
{
/* Load any other disk images from the storage media */
maps_init();
block_init();
fs_init();
mount_root();
/* Load the initramfs and the real rootfs image */
qemu_load_img(iniramfs.name);
qemu_load_img(rootfs.name);
}
最后,內(nèi)核開始處理程序的啟動(dòng):
void start_programs(void)
{
init_async_subsys();
execve(“init”, init_args, NULL);
/* Wait for the init to complete */
while(!init_done) {
sleep(1);
}
/* Start the rest of the programs */
execve(“halt”, halt_args, NULL);
/* Halt the system */
execve(“reboot”, reboot_args, NULL);
/* Reboot the system */
/* All done, perform the shutdown */
execve(“shutdown”, shutdown_args, NULL);
/* Shutdown the system */
}
通過以上代碼,我們可以深入理解Linux內(nèi)核引導(dǎo)程序的工作原理:它首先完成了硬件設(shè)置,接著安裝磁盤映像到內(nèi)存,并啟動(dòng)程序,最后關(guān)閉或重新啟動(dòng)系統(tǒng)。在這個(gè)過程中,內(nèi)核需要執(zhí)行許多任務(wù),它控制著硬件,裝載文件系統(tǒng),加載用戶界面,維護(hù)守護(hù)進(jìn)程,設(shè)置網(wǎng)絡(luò)環(huán)境,檢查用戶登錄,并加載適當(dāng)?shù)脑O(shè)備驅(qū)動(dòng)程序。因此,優(yōu)秀的Linux內(nèi)核開發(fā)人員
香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗(yàn)。專業(yè)提供云主機(jī)、虛擬主機(jī)、域名注冊(cè)、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。
網(wǎng)站名稱:深入了解Linux引導(dǎo)內(nèi)核的工作原理(linux引導(dǎo)內(nèi)核)
轉(zhuǎn)載來源:http://m.fisionsoft.com.cn/article/dppgcip.html


咨詢
建站咨詢
