±¾Õ¾Ê×Ò³   ÒµÄÚ×ÊѶ   Ç°ÑØÏÂÔØ  ÍøÂçµ¼º½   ±¾Õ¾ÂÛ̳  
ϵͳ֮¼Ò
ÉèΪÊ×Ò³
¼ÓÈëÊÕ²Ø
¹ØÓÚÎÒÃÇ
ITÒµ½ç  Èí¼þÓ¦Óà µçÄÔÓ²¼þ  ÊýÂë×ÊѶ  Æ»¹ûMAC  Unix/Linux  ÏµÍ³ÓÅ»¯  Web¼¼Êõ  ÈÏÖ¤¿¼ÊÔ  °²È«Ïà¹Ø  ÓÎÏ·Òµ½ç  Win2008  
Ê×Ò³ > Unix/Linux
 

 

LinuxϵͳÄÚ´æ´ÅÅ̳õʼ»¯¼¼ÊõÏêϸ½âÎö
×÷Õߣº¡¡·¢²¼Ê±¼ä£º2007-03-25 19:20:55¡¡À´Ô´£º

LinuxÄÚ´æ³õʼ»¯¼¼Êõ£¨initrd£©ÓÃÓÚÖ§³ÖÁ½½×¶ÎµÄϵͳÒýµ¼¹ý³Ì£¬ÊÇÔÚϵͳÆô¶¯¹ý³ÌÖб»¹ÒÔØµÄÁÙʱrootÎļþϵͳ£¨ÒëÕß×¢£ºÕâÀïµÄrootÎļþϵͳÊÇÖ¸µÄ¸ùÎļþϵͳ£©¡£initrd°üº¬ºÜ¶à¿ÉÖ´ÐгÌÐòºÍÇý¶¯£¬²¢ÔÊÐíÔÚÁÙʱµÄÄÚ´æ´ÅÅ̸ùÎļþϵͳ±»Ð¶ÔØ£¬ÄÚ´æ±»Êͷźó¹ÒÔØÕæÊµµÄrootÎļþϵͳ¡£ÔÚÐí¶àǶÈëʽLinuxÎļþϵͳÖУ¬initrdÊÇ×îÖյĸùÎļþϵͳ¡£ÕâÆªÎÄÕÂÖ÷Òª½²½âÁËlinux2.6Äں˵Äinitrd¼¼Êõ£¬°üÀ¨ÔÚÄÚºËÖеĴ´½¨¼°Ê¹Óá£

 

1 ʲôÊÇÄÚ´æ´ÅÅ̳õʼ»¯£¿

 

initrd¹ÒÔØÓÅÏȼ¶¸ßÓÚÕæÊµ¸ùÎļþϵͳ£¬Ëü±»°î¶¨ÔÚÄÚºËÉÏ£¬×öΪÄÚºËÆô¶¯¹ý³ÌµÄÒ»²¿·Ö±»¼ÓÔØ£¨load£©¡£È»ºó£¬×öΪÁ½½×¶ÎÒýµ¼¹ý³ÌµÄµÚÒ»²¿·Ö£¬Äں˹ÒÔØ£¨mount£©initrd£¬ÓÃÓÚ»ñµÃ²¢¼ÓÔØÕæÊµÓÐЧµÄÎļþϵͳ¡£

 

ΪÁË´ïµ½Õâ¸öÄ¿µÄ£¬initrd°üº¬ÓÐ×îÆðÂëµÄĿ¼Óë³ÌÐò£¬ÀýÈçinsmod£¬À´°²×°ÄÚºËÄ£¿éµ½ÄÚºËÖС£

 

¶ÔÓÚ×ÀÃæ»ò·þÎñÆ÷linux£¬initrdÊÇÁÙʱÎļþϵͳ£¬ËüµÄÉú´æÖÜÆÚºÜ¶Ì£¬½ö½öÊÇ×öΪµ½´ïÕæÊµ¸ùÎļþϵͳµÄÇÅÁº¡£µ«¶ÔÓÚûÓд洢É豸µÄǶÈëʽϵͳÀ´Ëµ£¬Ëü²ÅÊÇÓÀ¾ÃÐԵĸùÎļþϵͳ¡£±¾ÆªÎÄÕ¶ÔÕâÁ½·½Ãæ¾ùÓÐÉæ¼°¡£

 

2 ÉîÈë·ÖÎöinitrdL

 

initrd°üº¬ÓбØÐëµÄ³ÌÐòºÍϵͳÎļþ£¬ÓÃÓÚÖ§³ÖϵͳµÄÆô¶¯µÄµÚ¶þ½×¶Î¹ý³Ì¡£´´½¨³õʼ»¯ÄÚ´æµÄ·½·¨£¬ÊÇËæ×ÅÄãËùʹÓõÄϵͳ°æ±¾¶ø¸Ä±äµÄ¡£´ÓFedora Core3ÒÔºó£¬initrd¾ÍÓÉ»ØËÍÉ豸£¨loop device£©½¨Á¢¡£Ê²Ã´ÊÇ»ØËÍÉ豸£¿ËüÊÇÒ»¸öÉ豸Çý¶¯£¬ÔÊÐíÄ㽫һ¸öÎļþ¹ÒÔØÎª¿éÉ豸£¬²¢¶ÔÆäÎļþϵͳ×ö³öÃèÊö¡£Ò²Ðíloop device²¢²»´æÔÚÓëÄãµÄÄÚºËÖУ¬µ«ÊÇÄãÄܹ»Í¨¹ýÄں˵ÄÅäÖù¤¾ß£¨make menuconfig£©´ò¿ªËü¡£Â·¾¶ÊÇ£ºDevice Drivers-¡·Block Devices-¡·LoopBack Device support¡£ÏÂÃæÎª¼ì²éÃüÁ

 

# mkdir temp ; cd temp 

# cp /boot/initrd.img.gz . 

# gunzip initrd.img.gz 

# mount -t ext -o loop initrd.img /mnt/initrd 

# ls -la /mnt/initrd 

#

 

 

ÏÖÔÚ£¬Äã¿ÉÒÔͨ¹ý²é¿´/mnt/initrdµÄ×ÓĿ¼À´²é¿´initrdµÄÄÚÈÝ¡£ÐèҪעÒâµÄÊÇ£¬¼´Ê¹ÄãµÄinitrd¾µÏñÎļþ²¢²»ÊÇÒÔ.gz×öΪºó׺Ãû£¬µ«ÊÇÄãͬÑù¿ÉÒÔͨ¹ýÔö¼Ó´Ëºó׺ÃûÀ´ÈÃgunzip´ò¿ªËü¡£

 

´ÓFedora Core3¿ªÊ¼£¬Ä¬ÈϵÄinitrd¾µÏñ¾ÍÊÇÒ»¸öѹËõµÄgpio¹éµµÎļþ¡£³ýÁËÓùÒÔØÎļþµÄ·½Ê½ÒÔÍ⣬ÄãͬÑù¿ÉÒÔͨ¹ýcpio¹éµµµÄ·½Ê½À´½«Æä¹ÒÔØ³ÉʹÓÃÁË»ØËÍÉ豸µÄѹËõ¾µÏñ¡£Äã¿ÉÒÔͨ¹ýÒÔϵÄÖ¸ÁîÀ´¼ì²éÕâ¸ö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 -i --make-DirectorIEs < initrd-2.6.14.2.img

 

Äã¿´µ½µÄ½á¹û½«ÊÇÒ»¸öСÐ͸ùÎļþϵͳ£¬ÈçÏÂËùʾ£º

 

# ls -la 

# 

drwxr-xr-x 10 root root 4096 May 7 02:48 . 

drwxr-x--- 15 root root 4096 May 7 00:54 .. 

drwxr-xr-x 2 root root 4096 May 7 02:48 bin 

drwxr-xr-x 2 root root 4096 May 7 02:48 dev 

drwxr-xr-x 4 root root 4096 May 7 02:48 etc 

-rwxr-xr-x 1 root root 812 May 7 02:48 init 

-rw-r--r-- 1 root root 1723392 May 7 02:45 initrd-2.6.14.2.img 

drwxr-xr-x 2 root root 4096 May 7 02:48 lib 

drwxr-xr-x 2 root root 4096 May 7 02:48 loopfs 

drwxr-xr-x 2 root root 4096 May 7 02:48 proc 

lrwxrwxrwx 1 root root 3 May 7 02:48 sbin -> bin 

drwxr-xr-x 2 root root 4096 May 7 02:48 sys 

drwxr-xr-x 2 root root 4096 May 7 02:48 sysroot 

#

 

һЩСµÄ£¬µ«ÊǺÜÓбØÒªµÄ³ÌÐò×éºÏÄÜÔÚ./binĿ¼Ïµõ½£¬°üÀ¨nash£¨Ëü²»ÊÇÒ»¸öshell£¬¶øÊÇÒ»¸ö½Å±¾½âÊ͹¤¾ß£©£¬ÓÃÓÚ¼ÓÔØÄÚºËÄ£¿éµÄinsmod£¬ÒÔ¼°lvmµÈ¡£

 

ÉÏÃæËùʾĿ¼ÖУ¬Ïà¶Ô±È½ÏÓÐȤµÄÊÇrootĿ¼Ïµijõʼ»¯Îļþ¡£ÕâЩÎļþ£¬ºÍ´«Í³µÄlinuxÆô¶¯¹ý³ÌÖÐÒ»Ñù£¬ÊÇÔÚinitrd¾µÏñ±»½âѹËõµ½RAMÖÐʱÉú³ÉµÄ¡£´ý»áÎÒÃǽ«¼ÌÐøÌ½ÌÖÕâ¸öÎÊÌâ¡£

 

3 ´´½¨initrdµÄ¹¤¾ß¡£

 

ÏÖÔÚ£¬ÈÃÎÒÃǻص½Ò»¿ªÊ¼µÄÌÖÂÛ£ºinitrdµÄ¾µÏñÊÇÈçºÎ±»´´½¨µÄ£¿ÔÚ´«Í³µÄlinuxϵͳÖУ¬initrdÊÇÔÚlinux buildµÄʱºò±»´´½¨µÄ¡£ÏñmkinitrdÕâÑùµÄÐíÐí¶à¶àµÄ¹¤¾ß£¬¶¼Äܹ»ÓÃÓÚͨ¹ý±ØÐëµÄ¿âºÍÄ£¿éÀ´×Ô¶¯¹¹½¨Ò»¸öÓÃÓÚ¹ý¶Éµ½ÕæÊµ¸ùÎļþϵͳµÄinitrd¡£ÊÂʵÉÏ£¬mkinitrd¹¤¾ßÊÇÒ»¸ö½Å±¾Îļþ£¬Òò´Ë£¬ÎÒÃÇÄܹ»ºÜÇå³þµÃ¿´µ½£¬Õâ¸ö¹ý³ÌÊÇÈçºÎ½øÐеġ£Í¬ÑùµÄ£¬YAIRD (Yet Another Mkinitrd)¹¤¾ß£¬Ò²ÔÊÐíÎÒÃÇ×Ô¶¨ÖÆÃ¿Ò»¸öinitrd±»¹¹½¨µÄ½×¶Î¡£

4 ×Ô¼º¶¯ÊÖ£¬´òÔì×Ô¶¨ÒåµÄ³õʼ»¯ÄÚ´æÅÌ

 

ÓÉÓںܶà»ùÓÚlinuxµÄǶÈëʽϵͳ¶¼Ã»ÓÐÓ²ÅÌÇý¶¯Æ÷£¬initrdÒ²¿ÉÒÔ×öΪÓÀ¾ÃÐԵĸùÎļþϵͳ¡£ÏÂÃæÎҾͽ«¸æËßÄãÃÇ£¬ÈçºÎ´´½¨Ò»¸öinitrd¾µÏñ¡£ÎÒʹÓõÄÊDZê×¼linux×ÀÃæÏµÍ³£¬Òò´Ë´ó¼Ò¼´Ê¹Ã»ÓÐǶÈëʽĿ±êÉ豸Ҳ¿ÉÒÔÕÕ×Å×ö¡£³ýÁ˽»²æ±àÒëÒÔÍ⣬ǶÈëʽĿ±êÎļþµÄ¹¹½¨¹ý³ÌÊÇÏàͬµÄ¡£

 

 

#!/bin/bash 

# Housekeeping... 

rm -f /tmp/ramdisk.img 

rm -f /tmp/ramdisk.img.gz 

# Ramdisk Constants 

RDSIZE=4000 

BLKSIZE=1024 

# Create an empty ramdisk image 

dd if=/dev/zero of=/tmp/ramdisk.img bs=$BLKSIZE count=$RDSIZE 

# Make it an ext2 mountable file system 

/sbin/mke2fs -F -m 0 -b $BLKSIZE /tmp/ramdisk.img $RDSIZE 

# Mount it so that we can populate 

mount /tmp/ramdisk.img /mnt/initrd -t ext2 -o loop=/dev/loop0 

# Populate the filesystem (subDirectorIEs) 

mkdir /mnt/initrd/bin 

mkdir /mnt/initrd/sys 

mkdir /mnt/initrd/dev 

mkdir /mnt/initrd/proc 

# Grab busybox and create the symbolic links 

pushd /mnt/initrd/bin 

cp /usr/local/src/busybox-1.1.1/busybox . 

ln -s busybox ash 

ln -s busybox mount 

ln -s busybox echo 

ln -s busybox ls 

ln -s busybox cat 

ln -s busybox ps 

ln -s busybox dmesg 

ln -s busybox sysctl 

popd 

# Grab the necessary dev files 

cp -a /dev/console /mnt/initrd/dev 

cp -a /dev/ramdisk /mnt/initrd/dev 

cp -a /dev/ram0 /mnt/initrd/dev 

cp -a /dev/null /mnt/initrd/dev 

cp -a /dev/tty1 /mnt/initrd/dev 

cp -a /dev/tty2 /mnt/initrd/dev 

# Equate sbin with bin 

pushd /mnt/initrd 

ln -s bin sbin 

popd 

# Create the init file 

cat >> /mnt/initrd/linuxrc << EOF 

#!/bin/ash 

echo 

echo "Simple initrd is active" 

echo 

mount -t proc /proc /proc 

mount -t sysfs none /sys 

/bin/ash --login 

EOF 

chmod +x /mnt/initrd/linuxrc 

# Finish up... 

umount /mnt/initrd 

gzip -9 /tmp/ramdisk.img 

cp /tmp/ramdisk.img.gz /boot/ramdisk.img.gz

 

Ïë´´½¨initrdµÄ»°£¬ÄãÐèÒªÊ×ÏÈ´´½¨Ò»¸ö¿ÕÎļþ£¬½«/dev/zero£¨0×Ö·ûÁ÷£©×öΪramdisk.imgµÄÊäÈë¡£µÃµ½µÄÎļþ´óС´óÔ¼ÊÇ4MB£¨ÓÐ4000¸ö1KµÄ¿é×é³É£©¡£½ÓÏÂÀ´£¬ÓÃmke2fsÃüÁîÀ´´´½¨Ò»¸öʹÓÃÕâ¸ö¿ÕÎļþµÄext2Îļþϵͳ¡£ÏÖÔÚ£¬Õâ¸öÎļþ¾ÍÊÇÒ»¸öext2Îļþϵͳ¡£ok£¬½ÓÏÂÀ´£¬ÒÔ»ØÂ·É豸µÄÐÎʽ¹ÒÔØÕâ¸öÎļþµ½/mnt/initrd£¬ÏÖÔÚ£¬Äã¾ÍÔÚ¹ÒÔØµãÓµÓÐÒ»¸ö´ú±í×Åext2ÎļþϵͳµÄĿ¼£¬²¢ÓÃÓë´æ·ÅÄãµÄinitrd¡£ÆäËû´ó¶àÊýµÄ½Å±¾Óï¾ä¶¼ÊÇÓÃÓÚʵÏÖÕâ¸ö¹¦ÄÜ¡£

 

ÏÂÒ»²½£¬¾ÍÊÇ´´½¨Ò»Ð©±ØÐëµÄ×ÓĿ¼£¬ÓÃÓÚÉú³ÉÄãµÄ¸ùÎļþϵͳ£º /bin, /sys, /dev, ºÍ /pro¡£ÕâÀïÖ»ÐèÒªÉÙÊý¼¸¸öĿ¼£¬ÀýÈ磬ûÓÐ/lib¡£µ«ÊÇËüÃÇÒѾ­°üº¬Á˴󲿷ֹ¦ÄÜ¡£

 

Èç¹ûÏëÈÃÄãµÄ¸ùÎļþϵͳ·¢»Ó¸ü´óµÄ×÷Óã¬ÇëʹÓà BusyBox¡£Õâ¸ö¹¤¾ßÊÇÒ»¸ö°üº¬ÁËÐí¶à¶ÀÁ¢¹¤¾ßµÄ¾µÏñ£¬ÕâЩ¶ÀÁ¢µÄ¹¤¾ßÄã¶¼ÄÜÔÚlinuxÖÐÕÒµ½£¨ ash, aµÈµÈwk, sed, insmod£©¡£BusyBoxµÄÓÅÊÆÔÚÓÚ£¬Ëü°ÑËüÃǼ¯ºÏÔÚÁËÒ»Æð£¬²¢·ÖÏíÁ˹«ÓõIJ¿·Ö£¬´Ó¶ø¼«´óËõСÁ˾µÏñµÄÌå»ý¡

 1/2    1 2 ›› ›|

 
   
¡ù Ïà¹ØÐÅÏ¢
ÎÞÏà¹ØÐÅÏ¢

   
   
 
 Õ¾ÄÚËÑË÷
 
 ÍøÕ¾×îÐÂ
 
 ÈËÆøÅÅÐР
 
 °¢ÀïÂèÂè

ÍøÕ¾ÁôÑÔ £ü ¹ØÓÚÎÒÃÇ £ü ¹ã¸æÒµÎñ £ü ×¢²áµÇ¼ £ü ºÏ×÷»ï°é £ü ÍøÕ¾µØÍ¼
Xtzj.Com °æÈ¨ËùÓÐ ÁÉICP±¸05013013ºÅ
Copyright © 2008 All rights reserved