ramdisk ramdisk文件的製作: mkinitrd ...
ramdisk
內核中的特性之一,使用緩衝和緩存來加速對磁碟上的文件訪問,並載入相應的硬體驅。
ramdisk --> ramfs,提高速度
CentOS 5: initrd
工具程式:mkinitrd
CentOS 6 ,7: initramfs
工具程式:mkinitrd, dracut
ramdisk在系統初始化中的位置:
POST --> BootSequence (BIOS) -->Bootloader(MBR) --> kernel(ramdisk) --> rootfs( 只讀) --> init (systemd)
ramdisk文件的製作:
ramdisk文件:
/boot/initramfs-2.6.32-696.el6.x86_64.img
這個文件是個gzip壓縮文件,解壓後是個cpio歸檔ASCII文檔,展開歸檔文件後發現這裡面其實是些類似根文件系統的目錄結構,所以我們稱為虛擬根目錄。
同時可以看到在sbin目錄下有個二進位程式叫作switch_root,這個程式功能就是從虛擬的根目錄切換到真正磁碟上的根目錄。
展開這個文件:
cp -a initramfs-2.6.32-696.el6.x86_64.img /root/initramfs-2.6.32-696.el6.x86_64.img.gz
mkdir initramfs
mv initramfs-2.6.32-696.el6.x86_64.img.gz initramfs
gunzip initramfs-2.6.32-696.el6.x86_64.img.gz
cpio -id < initramfs-2.6.32-696.el6.x86_64.img
製作ramdisk文件
1.為正在使用的內核重新製作ramdisk文件:
mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)
or
dracut /boot/initramfs-$(uname -r).img $(uname -r)
2.將一堆文件打包製作成ramdisk文件:
在對應的文件目錄下執行find 和cpio組合命令進行歸檔
find . |cpio -o -H --quiet > /boot/myramdisk.img
對歸檔後的文件進行gzip壓縮
gzip /boot/myramdisk.img.gz
重命名壓縮文件
mv /boot/myramdisk.img.gz /boot/myramdisk.img
mkinitrd
mkinitrd - is a compat wrapper, which calls dracut to generate an initramfs
用於建立呀載入ramdisk的鏡像文件。
mkinitrd [OPTION...] [<initrd-image>] <kernel-version>
mkinitrd [-fv][--omit-scsi-modules][--version][--preload=<模塊名稱>][--with=<模塊名稱>][映像文件][Kernel 版本]
-f 若指定的映像問家名稱與現有文件重覆,則覆蓋現有的文件。
-v 執行時顯示詳細的信息。
--omit-scsi-modules 不要載入SCSI模塊。
--preload=<模塊名稱> 指定要載入的模塊。
--with=<模塊名稱> 指定要載入的模塊。
--version 顯示版本信息。
--nocompress 不壓縮結果鏡像.
ex: mkinitrd /boot/initramfs-3.10.0-693.el7.x86_64.img 3.10.0-693.el7.x86_64