无码视频在线观看,99人妻,国产午夜视频,久久久久国产一级毛片高清版新婚

  • 始創(chuàng)于2000年 股票代碼:831685
    咨詢熱線:0371-60135900 注冊有禮 登錄
    • 掛牌上市企業(yè)
    • 60秒人工響應
    • 99.99%連通率
    • 7*24h人工
    • 故障100倍補償
    全部產品
    您的位置: 網站首頁 > 幫助中心>文章內容

    Linux系統(tǒng)引導流程

    發(fā)布時間:  2012/9/11 12:59:48
     Linux系統(tǒng)的引導過程主要分為三個階段。

      第一階段:開機->POST->INT19->BIOS->MBR

    當用戶打開電腦的電源,電腦會對系統(tǒng)硬件配置進行一系列檢測,這個過程稱為POST(Power on Self Test),即上電自檢過程。系統(tǒng)測試成功之后,接著將BIOS的中斷處理程序各個中斷向量裝配到內存的低1024個字節(jié)單元。在這些中斷向量中,初始引導程序是以中斷類型為19H進行裝配的。中斷向量結束后,CPU執(zhí)行類型為19H的中斷,其功能是執(zhí)行BIOS所帶的系統(tǒng)初始化程序,稱為磁盤自舉中斷或者重引導中斷(reboot interrupt),當按下Ctrl+Alt+Del鍵,系統(tǒng)就會執(zhí)行19H號中斷,重新引導系統(tǒng)。CPU執(zhí)行19H號中斷的初始引導程序,以便從啟動盤讀取加載操作系統(tǒng)的引導程序Bootsect.S。該初始化引導程序按照CMOS里面設置的啟動盤啟動順序查找相應盤的MBR,如果找到 引導程序,則將MBR中的引導程序讀到內存0000:7C00處,并執(zhí)行這個引導程序將內核代碼全部轉入內存。

      第二階段:MBR->LILO->活動分區(qū)引導Linux

    初始引導程序將MBR中的LILO讀到內存并執(zhí)行,由LILO把Linux的全部內核裝入內存。Linux除了可以使用LILO引導之外,還可以使用GRUB等引導程序引導。LILO的功能由三個主要程序來完成:第一個是把Linux內核或者其他操作系統(tǒng)的可執(zhí)行代碼寫入內存的引導程序,稱為啟動加載器;第二個負載把boot loader程序的可執(zhí)行代碼寫入引導分區(qū),并將原來的boot loader做備份,它的可執(zhí)行文是/sbin/lilo;第三個是存放LILO配置信息的/etc/lilo.conf等配置文件。這三個文件都是LILO啟動是所必須的。

    當引導程序成功完成引導任務后,Linux從他們手中接管了CPU的控制權,然后CPU就開始執(zhí)行Linux的核心映像代碼,開始Linux的啟動過程。這里涉及到Linux源代碼樹中的“arch/i386/boot”下面的一些文件。其中bootsect.s是生成引導扇區(qū)的匯編源代碼,它完成加載動作后直接跳轉到setup.s的程序入口。setup.s的主要功能就是將系統(tǒng)參數(shù)(包括內存、磁盤等,由BIOS返回的)拷貝到特別的內存中,以便以后這些參數(shù)被保護模式下的代碼來讀取。setup.s還將video.s中的代碼包含進來,檢測和設置顯示器和顯示模式。最后,setup.s將系統(tǒng)轉換到保護模式,并跳轉到0x100000。這個內存地址存放的是解壓后的內核,因為redhat提供的內核包含了眾多驅動和功能而顯得比較大,所以在內核編譯中使用了makebzImage方式,從而生成壓縮過的內核,在redhat中內核常常被命名為vmlinuz,在Linux的最初引導中,通過"arch/i386/boot/compress/"中的head.s利用misc.c中定義的decompress_kernel()函數(shù),將內核vmlinuz解壓到0x100000的。

    當CPU跳到0x10000時,將執(zhí)行"arch/i386/kernel/head.s"中的startup_32,它也是vmlinux的入口,然后就跳轉到start_kernel()中去。start_kernel()是"init/main.c"中的定義函數(shù),start_kernel()中調用了一系列初始化函數(shù),以完成kernel本身的設置。start_kernel()函數(shù)中,做了大量的工作來建立基本的Linux核心環(huán)境。如果順利執(zhí)行完start_kernel(),則基本的Linux核心環(huán)境就建立起來了。

    在start_kernel()的最后,通過調用init()函數(shù),系統(tǒng)創(chuàng)建第一個核心線程,啟動了init過程。而核心線程init()主要是進行一些外設初始化工作,包括調用do_basic_setup()來完成外設及其驅動程序的加載和初始化。當do_basic_setup()函數(shù)返回init(),init()函數(shù)又打開/dev/console設備,重定向三個標準的輸入輸出文件stdin,stdout,stderr到控制臺,最后,搜索文件系統(tǒng)中的init程序(或者由init=命令行參數(shù)指定的程序),并使用execve()系統(tǒng)調用加載init程序。到這里,init()函數(shù)結束,內核的引導部分也基本結束了。

    接下來運行init,init的進程號是1,它是系統(tǒng)所有進程的起點,Linux在完成內核引導以后,就開始運行init程序。init程序需要讀取配置文件/etc/inittab中設置的系統(tǒng)運行級別,inittab是一個不可執(zhí)行的文本文件,它由若干行指令組成。然后調用執(zhí)行/etc/rc.d/rc.sysinit,而rc.sysinit是一個bash shell的腳本,它主要是進行一些系統(tǒng)初始化的工作,rc.sysinit是每一個運行級別都要首先運行的重要腳本。它要完成的工作有:激活交換分區(qū),檢查磁盤,加載硬件模塊以及其他一些需要優(yōu)先執(zhí)行任務。當rc.sysinit程序執(zhí)行完畢后,將返回init,啟動對應運行級別的守護進程,通常接下來會執(zhí)行到"/etc/rc.d/rc"程序。至于在每個運行級別中將運行那些守護進程,可以通過chkconfig或setup中的System Service來自行設定。rc程序執(zhí)行完將返回init,建立終端。這時進步系統(tǒng)環(huán)境已經設置好了,各種守護進程也已經啟動了。

      第三階段:檢測硬件->啟動服務->LOGIN登陸

    上面的工作完成后,Linux系統(tǒng)開始檢測硬件,啟動相應的服務,然后進行系統(tǒng)登陸。對于文本方式登陸,Linux先用賬號驗證程序login對用戶名進行分析,在分析完用戶名之后,login將搜索/etc/passwd以及/etc/shadow來驗證密碼以及設置賬號的其他信息,比如主目錄是什么,使用何種shell。如果沒有指定主目錄,將默認為根目錄,如果沒有指定shell,將默認為/bin/bash。login程序成功之后,會向對應的終端輸出最近一次登陸的信息(在/var/log/lastlog中有記錄),并檢查用戶是否有新郵件。然后開始設置各種環(huán)境變量。各種環(huán)境變量設置好之后,出現(xiàn)shell命令行提示符,到此整個Linux啟動過程全部結束。
     
    0

    本文出自:億恩科技【mszdt.com】

    服務器租用/服務器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質保障!--億恩科技[ENKJ.COM]

  • 您可能在找
  • 億恩北京公司:
  • 經營性ICP/ISP證:京B2-20150015
  • 億恩鄭州公司:
  • 經營性ICP/ISP/IDC證:豫B1.B2-20060070
  • 億恩南昌公司:
  • 經營性ICP/ISP證:贛B2-20080012
  • 服務器/云主機 24小時售后服務電話:0371-60135900
  • 虛擬主機/智能建站 24小時售后服務電話:0371-60135900
  • 專注服務器托管17年
    掃掃關注-微信公眾號
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 億恩科技 版權所有  地址:鄭州市高新區(qū)翠竹街1號總部企業(yè)基地億恩大廈  法律顧問:河南亞太人律師事務所郝建鋒、杜慧月律師   京公網安備41019702002023號
      1
     
     
     
     

    0371-60135900
    7*24小時客服服務熱線