導航:首頁 > 文件目錄 > 製作initrd文件系統

製作initrd文件系統

發布時間:2023-05-22 08:41:45

1. 如何在ARM linux上使用FDT和initrd

這文章算是最近工作的備忘。
FDT是ARM
Linux最新的設備驅動程序信息表,使用FDT的內核,就不用像過去的內核那樣,一個板子加一個mach的C文件,所有的設備信息可以記錄在一個樹狀信息文件裡面。

目前這方面資料比較少,我以AM335x處理器為例概括一下FDT的使用:

FDT僅僅是一個信息的目錄和參數表,要使用某個功能內核中還必須有相應的驅動程序代碼
FDT的源文件位置在:arch/arm/boot/dts,例如,TI的Beagle bone black,源文件是arch/arm/boot/dts/am335x_boneblack.dts
FDT在make ARCH=arm的時候就會自動生成,也可用make ARCH=arm
dtbs來生成,例如TI的Beagle bone black生成的文件是arch/arm/boot/dts/am335x_boneblack.dtb,這是一個二進制文件
要想新增你自定義的FDT,請修改arch/arm/boot/dts/Makefile,並在相應的Kconfig中增加config選項,例如,TI的Beagle
bone black,Kconfig的位置在arch/arm/mach-omap2/Kconfig
FDT的dtb文件由u-boot傳遞給內核,u-boot必須把這個文件拷貝到內核解壓地址之後的某個位置,確保內核解壓的時候不會覆蓋,然後使用「bootm
[內核地址] - [dtb地址]」來啟動內核
如果dtb文件不正確,對於3.10以上的內核,可能什麼顯示都沒有,3.8內核,可能就顯示到Uncompressing kernel......done
FDT的編寫規則說明在Documentation/devicetree/bindings,不同的設備有相應的txt文件說明,其中的「compatible」可以作為關鍵字搜索驅動程序的源文件,例如,AM335x的GPIO,用「ti,omap4-gpio」為關鍵字,可以找到其代碼位於drivers/gpio/gpio-omap.c
FDT可以包含子文件,比如am335x_boneblack.dts就包含了am33xx.dtsi,am335x-bone-common.dtsi

以一個例子來說明編寫規則,我的板子上,I2C0上掛了一個音頻CODEC,其地址是0x18,型號是TLV320AIC3104IRHBT。

先找到i2c0節點的位置,這在arch/arm/boot/dts/am33xx.dtsi中:
i2c0: i2c@44e0b000
{
compatible =
"ti,omap4-i2c";
#address-cells =
<1>;
#size-cells =
<0>;
ti,hwmods =
"i2c1";
reg = <0x44e0b000
0x1000>;
interrupts =
<70>;
status =
"disabled";
};

要在這個節點上掛東西,可以直接在am33xx.dtsi中掛,可以寫成這樣:

i2c0: i2c@44e0b000
{
compatible =
"ti,omap4-i2c";
#address-cells =
<1>;
#size-cells =
<0>;
ti,hwmods =
"i2c1";
reg = <0x44e0b000
0x1000>;
interrupts =
<70>;
status =
"okay";

tlv320aic3x: tlv320aic3x@18 {

compatible = "ti,tlv320aic3x";

reg = <0x18>;

status = "okay";

AVDD-supply = <&ldo4_reg>;

IOVDD-supply = <&ldo4_reg>;

DRVDD-supply = <&ldo4_reg>;

DVDD-supply = <&ldo4_reg>;

};
};

其中compatible字串「ti,tlv320aic3x」是在Documentation/devicetree/bindings裡面全文搜索「tlv320aic」獲得的,「tlv320aic3x:
tlv320aic3x@18」遵循的是「標識符:名稱@地址」的格式,前面的「i2c0:
i2c@44e0b000」也是這個格式。這里的標識符可以在包含這個文件的文件或這個文件的其他位置引用,因此,可以使用arch/arm/boot/dts/am335x-boneblack.dts包含arch/arm/boot/dts/am33xx.dtsi,然後在am335x-boneblack.dts里寫:

&i2c0 {

status = "okay";

tlv320aic3x: tlv320aic3x@18 {

compatible = "ti,tlv320aic3x";

reg = <0x18>;

status = "okay";

AVDD-supply = <&ldo4_reg>;

IOVDD-supply = <&ldo4_reg>;

DRVDD-supply = <&ldo4_reg>;

DVDD-supply = <&ldo4_reg>;

};

};

&i2c0表示引用了i2c0這個標識符,然後把括弧里的內容掛載到標識符下,如果屬性的名字相同,例如status出現兩次,前面是「disabled」後面是「okay」,以後面的為准,引用標識符的次數不受限制。

也許一開始會覺得FDT的工作過程很神秘,但你只要用compatible的字串去全文搜索一下C文件,然後仔細閱讀一下,就會發現很簡單,沒過幾分鍾你就可以自定義FDT節點的屬性了。反倒是這些操作過程我沒找到什麼文檔說,比較頭痛,所以我把這些寫出來,希望能給大家幫助。

下面說說initrd,initrd的用處是給內核一個初始的基本文件系統,用來載入內核模塊之類的東西。很多人覺得嵌入式系統不需要initrd,也可以把initrd作為最終的根文件系統。我用initrd是用來校驗真正的根文件系統,因為在嵌入式設備上,無法預測用戶到底什麼時候關機,可能會造成文件系統問題。

initrd可以用buildroot,像製作正常文件系統一樣做,最後把根下的linuxrc換成一個例如下面這樣的文件:

#!/bin/sh

/bin/echo Now Check SD Card

/sbin/fsck.ext4 /dev/mmcblk0p5

雖然Documentation/initrd.txt裡面說,內核會執行initrd裡面的/sbin/init,但在我用的linux-3.8.13上,init/do_mounts_initrd.c裡面,執行的是/linuxrc,不知道是不是文檔沒有更新過來。具體的調用順序是,kernel_init(init/main.c)
> kernel_init_freeable(init/main.c)
> prepare_namespace(init/do_mounts.c)
> initrd_load(init/do_mounts_initrd.c) > handle_initrd
(init/do_mounts_initrd.c)。

在使用initrd的時候有幾點需要注意的:

不建議在initrd上掛載別的東西,會引起未知的問題,貌似看到個文章說這個,找不到了
因為上面的這條,而且在initrd的時候,內核還沒有掛載devtmpfs,因此建議使用靜態設備節點,以AM335x為例(內核參數console=/dev/ttyO0,115200n8),必須的節點有:

/dev/null

/dev/console

/dev/ttyO0

這些節點可以用fakeroot之後mknod在buildroot的output/target/dev里創建,除了/dev/console,buildroot會自己創建,其他也可以寫到buildroot的system/device_table.txt裡面讓buildroot自動創建:

#

/dev/null
c 666 0 0
1 3
-
-
-

/dev/ttyO0 c 600
0 0 250
0
-
-
-

如果你用的是Atmel的處理器,上面的ttyO0可能是ttyS0,如果是三星的,可能是ttySAC0,而且major和minor也會不一樣,請自行解決。如果你像我一樣要檢驗SD卡,那就還必須加上SD卡的分區對應的節點。

/linuxrc可以是個程序也可以是個腳本,腳本的話,命令寫絕對路徑,而且記得把/linuxrc的mode改為755

使用initrd只需要用u-boot把buildroot製作的文件系統映像拷貝到內存里,然後傳遞initrd=[地址],[容量]這樣的參數給內核,例如initrd=0x81300000,8M,最終的root參數可以不變,例如root=/dev/mmcblk0p5,這表示最終的root是SD卡上擴展分區中的第一個邏輯分區。給兩個內核參數的例子:

console=ttyO0,115200n8 root=/dev/mmcblk0p5 initrd=0x81300000,8M vram=16M
consoleblank=0
console=ttyO0,115200n8 initrd=0x81300000,8M root=/dev/nfs rw
nfsroot=192.168.5.226:/home/c/nfsroot
ip=192.168.5.222:192.168.5.226:192.168.5.1:255.255.255.0:core335x:eth0:off
vram=16M consoleblank=0

第一個不解釋了,第二個表示使用initrd,同時使用nfsroot。

最後啰嗦一句,使用initrd需要在內核配置里打開支持,這個網上的資料太多了,我就不說在哪裡了。

2. 查看linux內核文件initrd.img

1、解包
2.6及以後內核中的initrd.img採用cpio壓縮,不再是2.4內核使用的ext2格式,無法使用mount -o loop 掛載。需要使用gunzip解壓縮,然後再使用cpio解包。以下作為示例:

2、壓包
通過以上命令就將initrd.img解壓了,現在就可以對其進行編輯,完成後使用以下命令重新壓制。示例如下:

再將其改名拷貝至/boot目錄,重啟就可以觀察修改後的效果。重啟後 無法成功引導 。這是因為生成的initrd.img不對。解決如下:

3、重新生成initrd

initrd.img是一個用gzip壓縮的文件,這主要是為了製作啟動盤,因為啟動盤只有1.44M,這個文件的原始大小是幾個M,壓縮後大概3、4百K。這個文件使用mkinitrd命令產生。

在2.6以前版本中的Initrd.img採用的ext2經gzip壓縮而成。要看到其裡面的內容,首先是解壓該文件,由於gunzip解壓的文件有擴展名要求,所以:

3. Linux系統分析、裁減及RAMOS製作

使用Linux開發,根據應用需求的不同有不同的配置開發方法,但是一般都要經過如下的過程:

1.建立開發環境
操作系統一般使用RedHat-Linux,版本從7到9都可以,選擇定製安裝或全部安裝,通過網路下載相應的GCC交叉編譯器進行安裝(例如arm-Linux-gcc、arm-μclibc-gcc),或者安裝產品廠家提供的交叉編譯器。

2.配置開發主機
配置MINICOM,一般的參數為波特率為115 200bps,數據位為8位,停止位為1,無奇偶校驗,軟體硬體流控設為無。在Windows下的超級終端的配置也是這樣的。MINICOM軟體的作用是作為調試嵌入式開發板的信息輸出的監視器和鍵盤輸入的工具。配置網路,主要是配置NFS網路文件系統,需要關閉防火牆,簡化嵌入式網路調試環境設置過程。

3.建立引導裝載程序BOOTLOADER
從網路上下載一些公開源代碼的BOOTLOADER,如U-BOOT、BLOB、VIVI、LILO、ARM-BOOT、RED-BOOT等,根據自己具體的晶元進行移植修改。有些晶元沒有內置引導裝載程序,例如三星的ARM7、ARM9系列晶元,這樣就需要編寫開發板上Flash的燒寫程序,網路上有免費下載的Windows下通過JTAG並口簡易模擬器燒寫ARM外圍Flash晶元的燒寫程序,也有Linux下的公開源代碼的J-Flash程序。如果不能燒寫自己的開發板,就需要根據自己的具體電路進行源代碼修改。這是系統正常運行的第一步。如果購買了廠家的模擬器當然比較容易燒寫Flash,這對於需要迅速開發自己產品的人來說可以極大地提高開發速度,但是其中的核心技術是無法了解的。

4.下載別人已經移植好的Linux操作系統
如μCLinux、ARM-Linux、PPC-Linux等,如果有專門針對所使用的CPU移植好的Linux操作系統那是再好不過的,下載後再添加自己的特定硬體的驅動程序,進行調試修改,對於帶MMU的CPU可以使用模塊方式調試驅動,對於μCLinux這樣的系統則需編譯進內核進行調試。

5.建立根文件系統
從下載使用BUSYBOX軟體進行功能裁減,產生一個最基本的根文件系統,再根據自己的應用需要添加其他程序。默認的啟動腳本一般都不會符合應用的需要,所以就要修改根文件系統中的啟動腳本,它的存放位置位於/etc目錄下,包括:/etc/init.d/rc.S、/etc/profile、/etc/.profile等,自動掛裝文件系統的配置文件/etc/fstab,具體情況會隨系統不同而不同。根文件系統在嵌入式系統中一般設為只讀,需要使用mkcramfs、genromfs等工具產生燒寫映像文件。

6.建立應用程序的Flash磁碟分區
一般使用JFFS2或YAFFS文件系統,這需要在內核中提供這些文件系統的驅動,有的系統使用一個線性Flash(NOR型)512KB~32MB,有的系統使用非線性Flash(NAND型)8~512MB,有的兩個同時使用,需要根據應用規劃Flash的分區方案。

7.開發應用程序
應用程序可以放入根文件系統中,也可以放入YAFFS、JFFS2文件系統中,有的應用不使用根文件系統,直接將應用程序和內核設計在一起,這有點類似於μCOS-II的方式。

8.燒寫內核、根文件系統、應用程序

9.發布產品

4. Linux Encryption HOWTO 怎樣製作一個加密的文件系統

設定分區

您的硬碟(hda)最少應該包含三個分區:
hda1:這個小的沒加密的分區 應該 要求 一個 口令 為了 載入 加密 的根文件系統
hda2:這個分區應該包含你的加密根文件系統;確保它足夠大
hda3:這個分區就是你的當前的GNU/Linux系統

在這時,hda1和hda2沒有使用。hda3就是當前你安裝的linux發行版; /usr 和/boot不能另外分區裝載。

你的分區分布也許會像下面這樣:

# fdisk -l /dev/hda

Disk /dev/hda: 255 heads, 63 sectors, 2432 cylinders
Units = cylinders of 16065 * 512 bytes

Device Boot Start End Blocks Id System
/dev/hda1 1 1 8001 83 Linux
/dev/hda2 2 263 2104515 83 Linux
/dev/hda3 264 525 2104515 83 Linux
/dev/hda4 526 2047 12225465 83 Linux

安裝 Linux-2.4.27

有兩種主要的方案可用於在內核上添加 loopback加密支持:cryptoloop 和 loop-AES。本文是基於loop-AES方案的,因為因為它的特點是非常快 和非常優化實行 of Rijndael 用匯編語言。如果你有一個IA-32 (x86) CPU ,它將為您提供 最大的性能。另外,還有一些關於cryptoloop的安全關切.

首先,下載和解壓 loop-AES 軟體包:

wget http://loop-aes.sourceforge.net/loop-AES/loop-AES-v2.2b.tar.bz2
tar -xvjf loop-AES-v2.2b.tar.bz2

然後再下載內核源代碼和補丁並為內核源碼打上補丁:

wget http://ftp.kernel.org/pub/linux/kernel/v2.4/linux-2.4.27.tar.bz2
tar -xvjf linux-2.4.27.tar.bz2
cd linux-2.4.27
rm include/linux/loop.h drivers/block/loop.c
patch -Np1 -i ../loop-AES-v2.2b/kernel-2.4.27.diff

設置鍵盤映射:

mpkeys | loadkeys -m - > drivers/char/defkeymap.c

下一步,配置你的內核;確定下面的選項你已經選上了:

make menuconfig

Block devices --->

<*> Loopback device support
[*] AES encrypted loop device support (NEW)

<*> RAM disk support
(4096) Default RAM disk size (NEW)
[*] Initial RAM disk (initrd) support

File systems --->

<*> Ext3 journalling file system support
<*> Second extended fs support

(important note: do not enable /dev file system support)

編譯並安裝內核:
make dep bzImage
make moles moles_install
cp arch/i386/boot/bzImage /boot/vmlinuz

如果你的啟動器是grub,更新你的 /boot/grub/menu.lst或 /boot/grub/grub.conf文件:

cat > /boot/grub/menu.lst << EOF
default 0
timeout 10
color green/black light-green/black
title Linux
root (hd0,2)
kernel /boot/vmlinuz ro root=/dev/hda3
EOF

啟動器是lilo的話就更新/etc/lilo.conf並運行 lilo :
cat > /etc/lilo.conf << EOF
lba32
boot=/dev/hda
prompt
timeout=100
image=/boot/vmlinuz
label=Linux
read-only
root=/dev/hda3
EOF
lilo

現在重啟你的系統。

安裝Linux 2.6.8.1

像之前所說的那樣進行前面的部分,所用補丁是loop-aes'kernel-2.6.8.1.diff 。要注意的是你要安裝mole-init-tools軟體包以便你的系統支持模塊。
安裝util-linux-2.12b

這個losetup程序包含在util-linux-2.12b軟體包中。必須打補丁並重新編譯以使它支持加密。下載,解壓並打為util-linux打補丁:

wget http://ftp.kernel.org/pub/linux/utils/util-linux/util-linux-2.12b.tar.bz2
tar -xvjf util-linux-2.12b.tar.bz2
cd util-linux-2.12b
patch -Np1 -i ../loop-AES-v2.2b/util-linux-2.12c.diff
使用少於20個字元的密碼,鍵入:
CFLAGS="-O2 -DLOOP_PASSword_MIN_LENGTH=8"; export CFLAGS

安全可能是你主要關心的一個問題。為此,請不要使您的密碼少於20個字元。數據保密性不是免費的, 你必須以『支付』的形式使用長的密碼。

使用root用戶編譯安裝 losetup程序:
./configure && make lib mount
mv -f /sbin/losetup /sbin/losetup~
rm -f /usr/share/man/man8/losetup.8*
cd mount
gzip losetup.8
cp losetup /sbin
cp losetup.8.gz /usr/share/man/man8/

創建加密的根文件系統
用隨機數據填充目標分區:
shred -n 1 -v /dev/hda2
安裝加密loopback設備:
losetup -e aes256 -S xxxxxx /dev/loop0 /dev/hda2
為防止比較快的字典攻擊,推薦加上-S xxxxxx 選項,"xxxxxx" 是你隨機選取的種子(例如,你可能選擇 "gPk4lA" )。 同樣,為了防止啟動時的鍵盤映射問題,在密碼中不要使用非ASCII字元(方言,等)。Diceware站點提供了一種簡單的的方法去創建強大並容易記住的密碼。
現在開始創建ext3文件系統:
mke2fs -j /dev/loop0
檢測你輸入的密碼是正確的:
losetup -d /dev/loop0
losetup -e aes256 -S xxxxxx /dev/loop0 /dev/hda2
mkdir /mnt/efs
mount /dev/loop0 /mnt/efs
你可以比較已加密的和未加密的數據:

xxd /dev/hda2 | less
xxd /dev/loop0 | less

現在是時候安裝你的加密的linux系統了。如果你使用的是GNU/Linux發行版(譬如Debian, Slackware, Gentoo, Mandrake, RedHat/Fedora, SuSE, etc.), 運行下面的命令:

cp -avx / /mnt/efs
如果你使用是Linux From Scratch手冊,照著lfs手冊上所說的那樣進行配置,但要做以下修改:
Chapter 6 - Installing util-linux:

在解壓源代碼後打上 loop-AES 的補丁。
Chapter 8 - Making the LFS system bootable:
指向我們的下一章(創建啟動設備)。
--------------------------------------------------------

創建啟動設備
創建ramdisk
在開始時,先用chroot命令進入你的加密分區並創建啟動設備的掛載點:
chroot /mnt/efs
mkdir /loader
然後創建 initial ramdisk (initrd),它將會在以後用到:
cd
dd if=/dev/zero of=initrd bs=1k count=4096
mke2fs -F initrd
mkdir ramdisk
mount -o loop initrd ramdisk
如果您使用 grsecurity . 您可能會收到"Permission denied"的提示錯誤的信息;如果是這樣你將必須在chroot命令之前運行 mount命令。
創建文件系統的目錄組織並復制所需要的的文件進去:
mkdir ramdisk/{bin,dev,lib,mnt,sbin}
cp /bin/{bash,mount} ramdisk/bin/
ln -s bash ramdisk/bin/sh
mknod -m 600 ramdisk/dev/console c 5 1
mknod -m 600 ramdisk/dev/hda2 b 3 2
mknod -m 600 ramdisk/dev/loop0 b 7 0
cp /lib/{ld-linux.so.2,libc.so.6,libdl.so.2} ramdisk/lib/
cp /lib/{libncurses.so.5,libtermcap.so.2} ramdisk/lib/
cp /sbin/{losetup,pivot_root} ramdisk/sbin/
如果你看到像"/lib/libncurses.so.5: No such file or directory","/lib/libtermcap.so.2: No such file or directory"的信息,這是正常的。bash 只要求用這兩個庫中的其中一個。 你可以檢測哪一個才是你實際所需要的:
ldd /bin/bash
編譯sleep程序,它將防止密碼提示被內核信息所淹沒(例如當usb設備注冊時)。
cat > sleep.c << "EOF"
#include <unistd.h>
#include <stdlib.h>

int main( int argc, char *argv[] )
{
if( argc == 2 )
sleep( atoi( argv[1] ) );

return( 0 );
}
EOF

gcc -s sleep.c -o ramdisk/bin/sleep
rm sleep.c
創建初始化腳本(不要忘記替換掉你之前報選的種子 "xxxxxx" ):

cat > ramdisk/sbin/init << "EOF"
#!/bin/sh

/bin/sleep 3
/sbin/losetup -e aes256 -S xxxxxx /dev/loop0 /dev/hda2
/bin/mount -r -n -t ext3 /dev/loop0 /mnt

while [ $? -ne 0 ]
do
/sbin/losetup -d /dev/loop0
/sbin/losetup -e aes256 -S xxxxxx /dev/loop0 /dev/hda2
/bin/mount -r -n -t ext3 /dev/loop0 /mnt
done

cd /mnt
/sbin/pivot_root . loader
exec /usr/sbin/chroot . /sbin/init
EOF

chmod 755 ramdisk/sbin/init

卸載 loopback 設備並壓縮initrd:
umount -d ramdisk
rmdir ramdisk
gzip initrd
mv initrd.gz /boot/
從CD-ROM啟動
我強烈建議您從只讀的媒體里啟動您的系統,例如可啟動的光碟。
下載並解壓syslinux:
wget http://ftp.kernel.org/pub/linux/utils/boot/syslinux/syslinux-2.10.tar.bz2
tar -xvjf syslinux-2.10.tar.bz2
配置isolinux:
mkdir bootcd
cp /boot/{vmlinuz,initrd.gz} syslinux-2.10/isolinux.bin bootcd
echo "DEFAULT /vmlinuz initrd=initrd.gz ro root=/dev/ram0" \
> bootcd/isolinux.cfg

把iso映像刻錄到可啟動光碟中:

mkisofs -o bootcd.iso -b isolinux.bin -c boot.cat \
-no-emul-boot -boot-load-size 4 -boot-info-table \
-J -hide-rr-moved -R bootcd/

cdrecord -dev 0,0,0 -speed 4 -v bootcd.iso

rm -rf bootcd{,.iso}

從硬碟啟動

當你丟失了你的可啟動光碟時,啟動分區就可以派上用場了。請記住hda1是個可寫分區,因而並不是很可靠的,只有當你遇到緊急的情況時才使用它!

創建並掛載ext2文件系統:

dd if=/dev/zero of=/dev/hda1 bs=8192
mke2fs /dev/hda1
mount /dev/hda1 /loader

復制內核和initial ramdisk:

cp /boot/{vmlinuz,initrd.gz} /loader

如果你使用的是grub :

mkdir /loader/boot
cp -av /boot/grub /loader/boot/
cat > /loader/boot/grub/menu.lst << EOF
default 0
timeout 10
color green/black light-green/black
title Linux
root (hd0,0)
kernel /vmlinuz ro root=/dev/ram0
initrd /initrd.gz
EOF
grub-install --root-directory=/loader /dev/hda
umount /loader

如果你使用lilo:

mkdir /loader/{boot,dev,etc}
cp /boot/boot.b /loader/boot/
mknod -m 600 /loader/dev/hda b 3 0
mknod -m 600 /loader/dev/hda1 b 3 1
mknod -m 600 /loader/dev/ram0 b 1 0
cat > /loader/etc/lilo.conf << EOF
lba32
boot=/dev/hda
prompt
timeout=100
image=/vmlinuz
label=Linux
initrd=/initrd.gz
read-only
root=/dev/ram0
EOF
lilo -r /loader
umount /loader

最後一步 仍然保持chroot的狀態,修改/etc/fstab增加以下選項:
/dev/loop0 / ext3 defaults 0 1

去除 /etc/mtab 並從chroot中退出。最後 ,運行 "umount -d /mnt/efs"命令然後重啟系統。 如果有某些錯誤發生,你仍然可以在 LILO提示中用"Linux root=/dev/hda3"來啟動你未加密的分區。

如果一切都順利,你就可以重新分區你的硬碟和繼續加密你的hda3或hda4分區。在下面的腳本中,我們假設 hda3將掛載swap設備,hda4掛載/home目錄;你應該先初始化這兩個分區:
shred -n 1 -v /dev/hda3
shred -n 1 -v /dev/hda4
losetup -e aes256 -S xxxxxx /dev/loop1 /dev/hda3
losetup -e aes256 -S xxxxxx /dev/loop2 /dev/hda4
mkswap /dev/loop1
mke2fs -j /dev/loop2

然後在系統的啟動目錄里創建一個腳本並更新 /etc/fstab:
cat > /etc/init.d/loop << "EOF"
#!/bin/sh

if [ "`/usr/bin/md5sum /dev/hda1`" != \
" /dev/hda1" ]
then
echo -n "WARNING! hda1 integrity verification FAILED - press enter."
read
fi

echo "1st password chosen above" | \
/sbin/losetup -p 0 -e aes256 -S xxxxxx /dev/loop1 /dev/hda3

echo "2nd password chosen above" | \
/sbin/losetup -p 0 -e aes256 -S xxxxxx /dev/loop2 /dev/hda4

/sbin/swapon /dev/loop1

for i in `seq 0 63`
do
echo -n -e "\33[10;10]\33[11;10]" > /dev/tty$i
done

EOF

chmod 700 /etc/init.d/loop
ln -s ../init.d/loop /etc/rcS.d/S00loop
vi /etc/fstab
...
/dev/loop2 /home ext3 defaults 0 2

閱讀全文

與製作initrd文件系統相關的資料

熱點內容
excel兩個表格怎麼對比相同數據 瀏覽:383
ps4港服文件怎麼弄 瀏覽:560
蘋果6splusnote5s6 瀏覽:426
定向流量30G都包括哪些APP 瀏覽:352
apple和瑤瑤綜藝 瀏覽:351
打開word所在文件夾自動彈出 瀏覽:390
c怎麼編程改名字 瀏覽:146
哪些電視劇app不帶logo的 瀏覽:406
開機後桌面變黑色桌面文件丟失 瀏覽:136
網路電視怎麼用遙控器 瀏覽:953
我的世界json打開失敗 瀏覽:867
易語言56教程視頻 瀏覽:610
linux開機啟動文件 瀏覽:773
給寶寶唱兒歌用什麼app 瀏覽:354
投標文件為什麼要使用cad軟體 瀏覽:522
一季度保險業務數據如何看 瀏覽:398
為什麼行車記錄儀文件大小為0 瀏覽:795
win10筆記本傳輸文件 瀏覽:735
棉花糖小說下載的小說在哪個文件 瀏覽:750
淘寶網頁特效代碼 瀏覽:921

友情鏈接