熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

用好Linux的啟動盤

2013-11-13 15:25:36  來源: Oracle 

  一為什麼需要Linux啟動盤
   有很多理由來說明這個問題首先它可用於啟動Linux系統其次當系統發生錯誤需要進行系統恢復時 我們需要用到它還有如果你喜歡經常更新系統內核的話那麼一張啟動盤則是必不可少的
   希望了解Linux系統組成及啟動過程的朋友如果按照本文提供的方法做下去相信你做完啟動盤之後你 對Linux又會有新的認識
  二啟動盤的類型
   啟動盤一般可分為如下兩種一種是只含內核(kernel)的啟動盤這種盤只含有系統內核並不包括根文 件系統(root file system)它在其內核中指明了根文件系統所在的位置在啟動過程中根據該參數去安裝根 文件系統也就是說這種類型的啟動盤必須和硬盤上的根文件系統配合才能使用我們平常意義上的啟動盤一 般指的就是這種類型有些資料上也把這種盤稱之為boot盤
   另外還有一種類型的啟動盤除了包含內核以外還包含了文件系統這種類型的啟動盤從某種意義上來說已 經是一個完整的操作系統由於有自己的根文件系統這種類型的啟動盤可以在沒有硬盤的機器上啟動一個小的 Linux系統這種類型的盤有時也稱作boot/root盤
  
  三啟動盤的制作
   boot盤的制作
   很多Linux發行套件已經提供了boot盤一般情況是在DOS下使用RAWRITE制作一張boot盤當然這種方法是 在安裝Linux之前進行制作如果在安裝了Linux之後希望再制作系統盤請按以下步驟進行
   ()以root的身份進行登錄
   ()確定內核的位置一般情況下內核位於/vmlinuz中當然不同的發行套件中該位置可能會有區別可以 查看相關的文檔
   ()用rdev命令設置根設備為Linux系統的根文件系統首先查看內核中對根文件系統的配置執行如下命令
   #rdev /vmlinuz
   如果你的Linux根文件系統位於/dev/hda那麼應該有如下的信息
   Root Device /dev/hda
   注意該信息隨你在安裝時的配置不同而結果可能不同另外還有一點值得注意的是該設置值可能並不正 確例如我的系統(RedHat kernel )上的配置值就顯示如下
   #rdev /boot/vmlinuz
   Root Device /dev/sdc (顯示為sdc即第三SCSI硬盤而我的機器上根本沒有!)
   但是這並不表明該配置有問題因為nf中的相關配置項會覆蓋該值詳見boot/root盤中的分析
   ()如果上一步的顯示信息和你的實際配置有偏差可以執行如下命令進行修正
   rdev /dev/vmlinuz /dev/hda (假設根文件系統位於/dev/hda上)
   再次執行rdev /vmliuz確保正確否則做出來的盤是不會啟動的!
   ()拿一張已格式化的軟盤(Linux下用fdformat格式化)執行下述命令
   #dd if=/vmlinuz of=/def/fd bs=
   至此一張專用於引導Linux系統的boot盤就做好了去測試一下吧!
   .boot/root盤的制作
   boot/root盤由兩部分組成即核心和根文件系統要把這兩部分都放到一個MB的軟盤上去通常要對內 核和根文件系統進行壓縮壓縮核心的最好方法是進行重新編譯內核將一些不必要的支持去掉如對網絡和其 它周邊設備的支持重要的一點是記住內核必須支持RAMDISK及ext否則系統不能正常引導關於內核的編譯本 文不再闡述下面重點介紹如何生成根文件系統的壓縮包對於根文件系統的壓縮包括兩方面的問題第一是只 保留必要的根文件系統組件第二是將根文件系統做成一個壓縮包類似於內核工作的原理
   ()根文件系統概述
   一個根文件系統必須包括支持完整Linux系統的全部東西它至少應包括以下幾項
   ·基本文件系統結構
   ·至少含有以下目錄/dev /proc /bin /etc /lib /usr /tmp
   ·最基本的應用程序如sh ls cp mv等
   ·最低限度的配置文件如rc inittab fstab等
   ·設備/dev/hd* /dev/tty* /dev/fd
   ·基本程序運行所需的庫函數
   以上所需文件一般情況下會超過M因此我們通常的做法是先准備好內容後再壓縮到軟盤中當用軟盤 啟動時再把文件解壓到內存中形成一個虛擬盤(RAMDISK)通過RAMDISK控制系統啟動
   為了能創建以上的根文件系統你必須有一個空閒的能夠放下大約MB文件的RAMDISK系統缺省情況下已替 我們建好了一個大小為KB的RAMDISK其設備名一般為/dev/ram我們就使用它來保存我們預先准備好的根 文件系統
   創建根文件系統
   Linux內核識別兩種可以直接拷貝到RAMDISK的文件系統它們是minix 和extext性能更好mkefs缺省 情況下在M的軟盤上產生個信息節點使用壓縮格式的根文件系統需要更多的信息節點所以使用如下命 令創建文件系統可以創建個信息節點而且一般不會用完
   mkefs -m -i /dev/ram
   mkefs將會自動判斷設備容量的大小並相應地配置自身-m 參數防止它給root保留空間這樣會騰出更 多的有用空間接著把虛擬盤掛在節點/mnt上
   mount -t ext /dev/ram /mnt/floppy
   接著是創建目錄根文件系統最少應該有如下個目錄
   /dev — 設備
   /proc — proc 文件系統所需目錄
   /etc — 系統配置文件
   /sbin — 重要的系統程序
   /bin — 基本應用程序
   /lib — 共享函數庫
   /mnt — 裝載其他磁盤節點
   /usr — 附加應用程序
   執行如下命令創建這些目錄
   #cd /mnt/floppy
   #mkdir dev proc etc sbin bin lib mnt usr
   接下來的工作就是確定各個目錄下的內容了
   ·/dev/dev中含有系統不可缺少的設備文件可以把現有系統中/dev的文件拷貝過來然後刪除不必要的 文件命令cp -dpR /dev /mnt會拷貝/dev整個目錄但不拷貝文件內容dp開關保證鏈接文件仍然不變不會拷 貝鏈接所指原文件而且屬性不變如果你沒有SCSI設備刪除所有的以sd開頭的文件如果你不想使用串口設 備刪除所有以cua開頭的文件不過記住一定要保留consolekmemmemnullramtty等文件
   ·/etc這個目錄中含有一些必不可少的系統配置文件這下面的文件比較多那麼到底哪些文件是必需 的哪些可有可無呢?由於這下面的文件一般是一些文本文件都不是很大干脆全部保留算了
   我的啟動盤中含有不到個配置文件大致可分為部分
   ·rcd/* — 系統啟動腳本
   ·fstab — 列出要登錄的文件系統
   ·inittab — 包含啟動過程參數
   而且這些文件都是最簡單的rc應該包括
   #!/bin/sh
   /bin/mount -av
   /bin/hostname yjy
   fstab應包括
   /dev/ram / ext defaults
   /dev/fd / ext defaults
   /proc /proc proc defaults
   inittab包括
   id::initdefault:
   si::sysinit:/etc/rc
   ::respawn:/sbin/getty tty
   ::respawn:/sbin/getty tty
   ·/bin和/sbin該目錄中包含有必不可少的應用程序如ls mv cat你可以根據自己的需要選擇不過 一定要記住包括以下程序init gettylogin mount運行你的rc的外殼shell
   ·/lib: 該目錄中包含有你的啟動盤啟動過程中所需要的共享函數庫如果缺少必須的函數庫系統會停止 啟動或出現一大堆錯誤信息所以一定要注意
   幾乎所有的程序都需要libc庫列一下目錄/lib中的libc
   % ls -l /lib/libc*
   -rwxr-xr-x root root Apr : libc-so*
   lrwxrwxrwx root root Apr : libcso -> libc-so*
   libcso表示版本號它指向的文件才是你真正需要的
   查看每一個程序使用的函數庫用命令ldd
   % ldd /sbin/mkefs
   libextfsso => /lib/libextfsso (x)
   libcom_errso => /lib/libcom_errso (x)
   libuuidso => /lib/libuuidso (x)
   libcso => /lib/libcso (xc)
   /lib/ld-linuxso => /lib/ld-linuxso (x)
   輸出右邊的庫都是必須的有的可能是鏈接文件
   在/lib目錄下你還必須有函數庫裝載器這個裝載器或是ldso (對 aout 庫) 或是 ld-linuxso (對 ELF 庫)新版本的ldd一般會告訴你所需庫的裝載器
   把裝載器和庫拷貝到/lib後再仔細檢查一遍一定保證沒有遺漏
   模塊
   如果你有一個模塊化的內核你還得考慮需要加載的模塊它們都位於/lib/modules你可以把不是很重要 的模塊放到別的盤上當系統啟動後再加載這樣會節省啟動盤的空間
   打包
   一旦你完成了上述工作卸下虛擬盤拷貝到一個文件中然後壓縮
   umount /mnt
   dd if=/dev/ram bs=k | gzip -v>rfsgz
   壓縮結束後你就擁有了一個壓縮的根文件系統不過你得檢查它的大小如果大了你還得刪除一些東 西
   .組織引導盤
   有了根文件系統和內核之後最後的工作就是把它們組織在一起
   先檢查總文件的大小如果超出MB就得考慮重新創建所需或用兩張磁盤即使用兩張磁盤你的根文 件系統也得小於MB
   接著就是確定是用LILO控制啟動還是直接用拷貝
From:http://tw.wingwit.com/Article/program/Oracle/201311/16681.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.