亚洲成精品动漫久久精久,九九在线精品视频播放,黄色成人免费观看,三级成人影院,久碰久,四虎成人欧美精品在永久在线

掃一掃
關注微信公眾號

Linux啟動過程全接觸2
2007-08-13   中國IT實驗室

自舉程序及其功用

  BIOS調用一個專門的程序,這個程序的任務就是把操作系統的內核調入內存。這個程序就叫做自舉程序(Boot Loader)。在我們繼續下面內容之前,先來看一下啟動系統的不同途徑。

  1.從軟盤啟動Linux

  從軟盤啟動時,存儲在軟盤第一扇區的指令將被加載并執行。這個指令然后就會把其余的內核復制到內存中。

  Linux內核可以裝在1.44MB的軟盤里,不過為了減少磁盤占用量,它們都進行了壓縮。這個壓縮過程是在編譯時完成的,而解壓縮的過程則由自舉程序完成。

  從軟盤啟動Linux時,自舉程序要做的工作非常簡單。它是一個位于/usr/src/linux-2.4.2/arch/i386/boot/bootsect.S的匯編語言文件。當我們編譯Linux內核源代碼,或者獲取一個新的內核時,這個可執行的匯編代碼就會被放在內核程序的前端。由此可見,要制作一個可啟動的Linux軟盤其實很簡單。我們只要從磁盤的第一個扇區拷貝Linux內核,就可以創建一個可啟動軟盤。當BIOS加載軟盤的第一個扇區時,它實際上拷貝的是自舉程序。自舉程序由BIOS調用(跳到物理地址為0x00007c00的位置),然后執行以下的操作:

  (1)把自已從地址0x00007c00移動到0x00090000;

  (2)使用地址0x00003ff4,創建“實模式”棧;

  (3)設置磁盤參數表,這里使用的是BIOS提供的軟盤驅動程序;

  (4)通過調用BIOS程序顯示“Loading”信息;

  (5)自舉程序調用BIOS程序來加載軟盤上內核的setup()函數,并把它放在起始地址為0x00090200的內存中;

  (6)接下來自舉程序調用一個BIOS程序,這個程序從軟盤加載剩余的內核程序,并將其放入起始地址為0x00010000(所謂的低地址)或者0x00100000(所謂的高地址);

  (7)然后,跳轉到setup()函數。

  2.從硬盤啟動Linux

  當系統從硬盤啟動時,啟動過程又有所不同。硬盤的第一個扇區叫做MBR(Master Boot Record),其上存儲著分區表和一個小程序。這個程序加載存儲由操作系統的第一扇區來開始啟動。Linux是一個高度靈活且非常優秀的軟件,所以在MBR里,它使用一個叫做LILO的程序來代替上述的那個程序。LILO允許用戶選擇所要啟動的操作系統。

  一般來說,Linux是從硬盤啟動的。這就需要不同的自舉程序。在Intel系統里,用得最多的自舉程序就是LILO。對于其它的體系結構,還存在著別的自舉程序。LILO可以安裝在MBR上(請注意:在安裝Red Hat Linux時,有一個步驟會讓用戶選擇把LILO安裝到MBR或者引導扇區)或一個活動分區的引導扇區上。

  由于LILO太大,MBR無法容納,所以它被分成兩部分。MBR(或者磁盤分區的引導扇區)包含有一個小的自舉程序,它被BIOS載入到起始地址為0x00007c00的內存中。然后,這個小程序再把自己移到0x0009a000地址處,接著設置實模式棧,最后加載第二部分的LILO自舉程序(請注意:實模式棧地址范圍是0x0009b000 到 0x0009a200)。

  第二部分的LILO會從磁盤讀取所有可用的操作系統,并且給用戶列出,以選擇所要啟動的系統。一旦用戶選擇完成,自舉程序就會加載相應的扇區內容到內存中并且執行之。

  自舉程序被BIOS調用時(跳到物理地址為0x00007c00處),要執行以下操作:

  (1)把自已從地址0x00007c00移動到0x00090000;

  (2)使用地址0x00003ff4,創建“實模式”棧;

  (3)設置磁盤參數表。這里使用的是BIOS提供的軟盤驅動程序;

  (4)通過調用BIOS程序顯示“Loading Linux”信息;

  (5)自舉程序調用BIOS程序來加載軟盤上內核的setup()函數,并把它放在起始地址為0x00090200的內存中;

  (6)接下來自舉程序調用一個BIOS程序,這個程序從軟盤加載剩余的內核程序,并將其放入起始地址為0x00010000或者0x00100000;

  (7)然后,跳轉到setup()函數。

熱詞搜索:

上一篇:Linux啟動過程全接觸1
下一篇:Linux啟動過程全接觸3

分享到:           收藏