欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Initrd啟動(dòng)及功能分析

Initrd這個(gè)設計的初衷是用來(lái)加載額外內核模塊供啟動(dòng)的??梢詤⒖?內核文檔 Documentation/initrd.txt。
在加載完內核后,如果存在initrd,則會(huì )執行 initrd 里的 /init。(文檔里說(shuō)的是/linuxrc,在 init/do_mounts_initrd.c 里也是這個(gè),在 init/main.c 里是 /init,具體待考。)

進(jìn)入主題:簡(jiǎn)單說(shuō)來(lái),initrd 主要功能就一個(gè):找到根分區,把權力交給主系統。
要完成這個(gè)功能,涉及的功能主要有:
1.有基本的程序運行環(huán)境
2.檢測存儲設備,創(chuàng )建設備節點(diǎn)
3.檢測文件系統,掛載根文件系統
4.將權力交給主系統的init

一.基本的程序運行環(huán)境
initrd 主要有兩種格式:
1. 傳統的 ramdisk
這種格式的好處是還可以返回到 initrd,進(jìn)行些后繼的處理。
缺點(diǎn)是需要內核的文件系統支持,通常會(huì )用 ext2,且更改較為麻煩。
制作方法:
dd if=/dev/zero of=initrd bs=1M count=8
mkfs.ext2 -f -m 0 initrd
mount -o loop initrd /path/to/
在/path/to建立好initrd的系統后
umount /path/to
gzip initrd

2. cpio 格式
這種格式的好處是內核原生不需要額外的文件系統支持,制作也比較容易。
制作方法:
cd /path/to
find . |cpio -o -H newc |gzip -c > ../initrd.gz

如果沒(méi)有特別的需要,通常使用cpio格式。

找到根文件系統的任務(wù)通常是用shell腳本來(lái)完成,主要原因是:
1.體積所限,通常initrd不會(huì )做很大,因為它功能很明確單一
2.方便修改,針對不同硬件/系統通常會(huì )做一定更改,編譯型語(yǔ)言更改起來(lái)較麻煩

通常使用的shell有busybox的ash,klibc的sh等。
busybox提供很多功能,可根據自己的需要編譯,因為要支持udev等,所以推薦編譯成動(dòng)態(tài)鏈接的。
klibc是專(zhuān)門(mén)設計為小巧的libc,它自帶了一些程序,體積很小巧,功能相對busybox提供的不會(huì )那么多。
還有相關(guān)的程序。對于很單一的應用用它是合適的,如果想在initrd里實(shí)現較復雜功能,使用klibc會(huì )顯得有些捉襟見(jiàn)肘。

對于動(dòng)態(tài)鏈接的程序,需要把相應的庫和 helper 放進(jìn)系統中??捎胠dd實(shí)現這個(gè)功能,如:
$ ldd /bin/busybox
linux-gate.so.1 => (0xffffe000)
libcrypt.so.1 => /lib/libcrypt.so.1 (0xb7f30000)
libm.so.6 => /lib/libm.so.6 (0xb7f0b000)
libc.so.6 => /lib/libc.so.6 (0xb7de1000)
/lib/ld-linux.so.2 (0xb7f73000)
我們也提供了一個(gè)程序來(lái)自動(dòng)完成這個(gè)工作,見(jiàn)文后參考。
對于klibc的,一般會(huì )有個(gè)庫文件,例如 /usr/lib/klibc/lib/klibc-KC4v-FjcUUw8mDjRL-kY8PS8U3E.so
將此文件放在相對initrd的根目錄的 /lib 目錄下即可。

需要的設備有:
mknod dev/console c 5 1
mknod dev/null c 1 3
# 如果為ramdisk,最好創(chuàng )建它
mknod dev/ram0 c 1 0

二.檢測存儲設備
早先有 devfs hotplug等來(lái)檢測,或是靜態(tài)創(chuàng )建加載模塊以支持存儲設備如硬盤(pán),光盤(pán)等。
udev的出現使這個(gè)過(guò)程轉移到用戶(hù)空間,靈活性大大增強,使這個(gè)過(guò)程能自動(dòng)完成。
對于新版的 udev (大概是>098),完成這一過(guò)程只需寫(xiě)好相應的規則,有相應的模塊,執行以下命令即可自動(dòng)加載模塊并創(chuàng )建相應的設備節點(diǎn):
# 掛載所需文件系統
mount -t proc none /proc
mount -t sysfs none /sys
mount -t tmpfs -o size=10M none /dev
# 關(guān)閉內核消息打印
echo '0' > /proc/sys/kernel/printk
# 一些連接
ln -sf /proc/self/fd /dev/fd
ln -sf /proc/self/fd/0 /dev/stdin
ln -sf /proc/self/fd/1 /dev/stdout
ln -sf /proc/self/fd/2 /dev/stderr
ln -sf /proc/kcore /dev/core
# 啟動(dòng) udev
/sbin/udevd --daemon
/sbin/udevtrigger
/sbin/udevsettle

三.檢測文件系統
由于各系統和內核的不同,掛載文件系統有時(shí)不像我們平時(shí)使用的那樣,會(huì )自動(dòng)探測,可以使用udev或blkid來(lái)識別:
udev的方法:
# /lib/udev/vol_id -t /dev/hda5
xfs
blkid的方法:
# blkid
/dev/hda1: TYPE="ntfs"
/dev/hda5: LABEL="Gentoo" UUID="78460951-666e-4d29-9d9b-85e9a9b16b62" TYPE="xfs"
/dev/hda6: TYPE="ntfs"
/dev/hda8: UUID="c51d3bb4-caee-4150-ae22-7d5931db31f5" LABEL="ROOT" TYPE="reiserfs"
/dev/hda9: LABEL="Home" UUID="89b31278-b2a3-4626-99c5-e6ca77fe60f0" TYPE="xfs"
/dev/hda7: LABEL="swap" UUID="8686fb94-560c-4c87-97dd-c5f97bbb6c78" TYPE="swap"

另外,我們也可以使用UUID或者LABEL的方式來(lái)掛載文件系統,
mount -U
mount -L

四.交權給主系統的init
實(shí)現方法主要有 pivot_root 和 switch_root與 run-init。
在這之前需要對之前掛載的虛擬文件系統與dev轉移到主系統。
mount --move /dev /root/dev
mount --move /proc /root/proc
mount --move /sys /root/sys

1.pivot_root
傳統的做法是用 pivot_root,然而 pivot_root不會(huì )自動(dòng)處理很多工作,如釋放initrd所有的內存,執行主系統的init。
使用方法如下:
cd /root
mkdir -p initrd
pivot_root . initrd
# 注意 /root 要是合法的設備掛載上的 如 /dev/sda1,如果不是這樣,將可能出現錯誤。
# 目標目錄也需要存在,其它參閱man page
exec chroot . sh -c 'umount /initrd; exec /sbin/init' dev/console 2>&1
# 如果不需要清理,也可簡(jiǎn)單的運行
exec chroot . /sbin/init

2.switch_root/run-init
這兩者差別不大,前者是busybox提供的,后者是klibc的。有點(diǎn)區別的是后者可接受 - 開(kāi)頭的參數。
用法:
cd /root
exec switch_root . /sbin/init

exec run-init . /sbin/init --debug

至此,initrd的使命完成。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
如何在grub命令提示下啟動(dòng)linux
手把手帶你自制Linux系統之六 編譯內核及busybox完成系統定制
linux 啟動(dòng)詳解
GRUB & LILO 操作備忘
給你的Thinkpad裝一個(gè)奔騰的gentoo--[三、gentoo的安裝]
linuxrc 實(shí)作剖析
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久