CentOS下解開initrd檔案

來源:互聯網
上載者:User

大家都知道initrd 是linux 啟動的記憶體檔案系統,那他裡面有都是什麼呢?今天就看看如何開啟這個檔案系統!
 initrd = init ramdisk,是一個啟動時存在於記憶體的檔案系統。initrd的最初的目的是為了把kernel的啟動分成兩個階段:在kernel中保留最少最基本 的啟動代碼,然後把對各種各樣硬體裝置的支援以模組的方式放在initrd中,這樣就在啟動過程中可以從initrd所mount的根檔案系統中裝載需要 的模組。這樣的一個好處就是在保持kernel不變的情況下,通過修改initrd中的內容就可以靈活的支援不同的硬體。在啟動完成的最後階段,根檔案系 統可以重新mount到其他裝置上。
  Linux啟動一定要用initrd麼?
  不必,如果把需要的功能全都編譯到核心中(非模組方式),只需要一個核心檔案即可,initrd能夠減小啟動核心的體積並增加靈活性。如果你的核心以 模組方式支援某種檔案系統(例如ext3, UFS),而啟動階段的驅動模組(如jbd)放在這些檔案系統上,核心是無法讀取檔案系統的,從而只能通過initrd的虛擬檔案系統來裝載這些模組。
  這裡有些人會問: 既然核心此時不能讀取檔案系統,那核心的檔案是怎麼裝入記憶體中的呢?答案很簡單,Grub是file-system sensitive的,能夠識別常見的檔案系統。
  initrd檔案是怎麼產生的?
  使用mkinitrd命令,這個命令其實是一個Bash指令碼
#file `which mkinitrd`
  /sbin/mkinitrd: Bourne-Again shell script text executable
  該指令碼先建立一個8M的空檔案,並在此上建立一個檔案系統,並拷貝相應的的檔案。
  一個預設RedHat Fedora Core 2, 它的initrd是什麼內容
  (跟系統的硬體相關)?
# file initrd-2.6.5-1.358.img
  initrd-2.6.5-1.358.img: gzip compressed data, from Unix, max compression
  # mv initrd-2.6.5-1.358.img initrd-2.6.5-1.358.gz
  # gzip -d initrd-2.6.5-1.358.gz
  # ll
  -rw-r--r-- 1 root root 8192000 Jan 14 11:32 initrd-2.6.5-1.358
  # mkdir /mnt/loop
  # mount -o loop initrd-2.6.5-1.356 /mnt/loop
  ………… 中間修改此檔案系統,等等…………
# umount loop
  # cd /boot
  # gzip -9 initrd-2.6.5-1.356
  # mv initrd-2.6.5-1.356.gz initrd-2.6.5-1.356.img

方法2:
mv initrd-2.6.5.13.58.img initrd.gz
gzip -d initrd.gz(這時候會解開檔案包。變成一個initrd的檔案)
mount -t proc initrd /mnt
cd /mnt
ls 就可以看到裡面的內容了!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.