久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

linux initrd 制作及使用

 閱讀擴(kuò)展視野 2017-09-14

一,        Ramdisk

Ram Disk 就是將內(nèi)存中的一塊區(qū)域作為物理磁盤來使用的一種技術(shù),。

使用時內(nèi)核配置:兩個選項(xiàng):第一個設(shè)定Ramdisk個數(shù),,默認(rèn)16個;第二個是設(shè)定Ramdisk的大小,,設(shè)定16M

Device Drivers  --->

[*] Block devices  --->

<*>   RAM block device support

(16)    Default number of RAM disks

(16384) Default RAM disk size (kbytes)

另外:設(shè)置RAM disk 支持

General setup  --->

[*] Initial RAM filesystem and RAM disk (initramfs/initrd) support

 

二,,        initrd

initrd全稱是 initial RAM disk ,,它提供一種讓核心可以簡單使用Ramdisk的能力,,簡單的說,這些能力包括:

格式化一個 Ramdisk,;

加載文件系統(tǒng)內(nèi)容到Ramdisk,;

將Ramdisk作為根文件系統(tǒng);

 

而Linux啟動階段的Ramdisk相當(dāng)于一個未格式化的硬盤分區(qū),,核心可以直接將initrd的內(nèi)容釋放到一個未初始化的Ramdisk里,,這個過程與Ghost恢復(fù)一個分區(qū)的過程十分相似。于是,,相應(yīng)的內(nèi)容被加載到相應(yīng)的Ramdisk中,,同時,這個Ramdisk也被格式化成某種由initrd格式所表達(dá)的分區(qū)格式,。

 

initrd支持的格式

·  Romfs文件系統(tǒng),;

·  Ext2文件系統(tǒng);

·  cramfs文件系統(tǒng);

·  minix文件系統(tǒng),;

 

三,,        Gzip支持

如果核心選擇了Gzip支持(通常這是默認(rèn)的,在init/do_mounts_rd.c中定義的BUILD_CRAMDISK宏)還可以使用Gzip壓縮的initrd,。相關(guān)的代碼可以在核心源碼 drivers/block/rd.c:identify_ramdisk_image 中找到,。

 

四,        制作initrd

initrd有兩種格式,,initrd-image和initrd-cpio,。

辦法一

通過ramdisk來制作的方法比較簡單(以ext2文件系統(tǒng)為例):
redice # mkfs.ext2 /dev/ram0
redice # mount /dev/ram0 /mnt/rd
redice # cp _what_you_like_ /mnt/rd # 把需要的文件復(fù)制過去
redice # dd if=/dev/ram0 of=/tmp/initrd
redice # gzip -9 /tmp/initrd
這個過程也最能夠解釋initrd的本質(zhì),對于Linux來說,,Ramdisk的一個塊設(shè)備,,而initrd是這個塊設(shè)備上所有內(nèi)容的“克隆”(由
命令dd來完成)而生成的文件。核心中加載initrd相關(guān)的代碼則用于完成將相反的過程,,即將這一個文件恢復(fù)到Ramdisk中去,。

辦法二

通過loop設(shè)備來制作initrd的過程:
redice # dd if=/dev/zero of=/tmp/initrd bs=1024 count=4096 # 制作一個4M的空白文件
redice # losetup /dev/loop0 /tmp/initrd # 映射到loop設(shè)備上;
redice # mkfs.ext2 /dev/loop0 # 創(chuàng)建文件系統(tǒng),;
redice # mount /dev/loop0 /mnt/rd
redice # cp _what_you_like_ /mnt/rd # 復(fù)制需要的文件,;
redice # umount /mnt/rd
redice # losetup -d /dev/loop0
redice # gzip -9 /tmp/initrd

辦法三

bash# dd if=/dev/zero of=../initrd.img bs=512k count=5
bash# mkfs.ext2 -F -m0 ../initrd.img
bash# mount -t ext2 -o loop ../initrd.img   /mnt
bash# cp -r   * /mnt
bash# umount /mnt
bash# gzip -9 ../initrd.img

 

辦法四(新式INITRD:cpio-initrd的制作)

# find . | cpio -c -o > ../initrd.img
# gzip ../initrd.img
解壓initrd
gunzip initrd.img.gz
即使您的 initrd 映像文件不是以 .gz 結(jié)尾,它也可能是一個壓縮文件,,
可以給這個文件添加上 .gz后綴,,然后再使用 gunzip 對其進(jìn)行解壓。

cpio 歸檔文件
# mkdir temp ; cd temp
# cp /boot/initrd-2.6.14.2.img initrd-2.6.14.2.img.gz   
# gunzip initrd-2.6.14.2.img.gz   
#cpio -ivmd < initrd-2.6.14.2.img

五,,        啟動:

Redboot啟動,。

下載initrd

0x01000000-0x01258831

下載zImage

0x00100000-0x002f82f7

啟動命令

exec -r 0x1000000 -s 0x258831 -c "root=/dev/ram rw console=ttymxc0,115200"

六,        結(jié)果:

辦法三制作,,也就是initrd-image可以成功啟動:

Kernel command line: root=/dev/ram rw console=ttymxc0,115200

checking if image is initramfs...it isn't (no cpio magic); looks like an initrd

Freeing initrd memory: 2402K

RAMDISK: Compressed image found at block 0

RAMDISK: ran out of compressed data

out of input data

VFS: Mounted root (ext2 filesystem).

Freeing init memory: 140K

Mounting /proc and /sys

Starting the hotplug events dispatcher udevd

Synthesizing initial hotplug events

Setting the hostname to aigo_R&D

Mounting filesystems

initrd-cpio無法啟動:

Kernel command line: root=/dev/ram rw console=ttymxc0,115200

checking if image is initramfs...it isn't (out of input data); looks like an initrd

Freeing initrd memory: 2376K

RAMDISK: Compressed image found at block 0

RAMDISK: ran out of compressed data

out of input data

List of all partitions:

1f00            2048 mtdblock0 (driver?)

1f01            4096 mtdblock1 (driver?)

1f02            2048 mtdblock2 (driver?)

1f03           16384 mtdblock3 (driver?)

1f04            8192 mtdblock4 (driver?)

1f05            4096 mtdblock5 (driver?)

1f06          786432 mtdblock6 (driver?)

1f07         3371008 mtdblock7 (driver?)

No filesystem could mount root, tried:  ext2 cramfs vfat msdos

Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(1,0)

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn),。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多