ʵÑé»·¾³£ºubuntu 12.04 LTS ¡¡¡¡Äں˰汾£ºlinux-3.9.4 ¡¡¡¡ ÒòΪһֱÒÔÀ´¶¼¶ÔLinuxµÄ¹¤×÷»úÀí±È½Ï¸ÐÐËȤ£¬ËùÒÔÕýºÃÕâÁ½ÌìÓлú»áºÃºÃµÄÑо¿Ò»Ï£¬ÄÇÏл°²»¶à˵£¬Ö±½Ó½øÈëÕýÌâ¡£ ¡¡¡¡ Ë×»°ËµµÄºÃ£¬¹«ÓûÉÆÆäÊ£¬±ØÏÈÀûÆäÆ÷¡£ÄÇô¶ÔÓÚÒ»¸öϵͳÄں˼¶µÄÐÞ¸ÄÓëÑо¿±ØÈ»²»ÄÜ´Ó×Ô¼º»úÆ÷ÖÐÕýÔÚÔËÐеÄÄÚºËÏÂÊÖ£¬ÕâÑùÒ»µ©·¢Éú´íÎ󣬽«µ¼ÖÂÄں˱ÀÀ££¬ÎÞ·¨Æô¶¯£¬Õâ¸öºó¹ûÉÔ΢ÓÐЩÑÏÖØ¡£ËùÒÔÖØбàÒëÒ»¸öÓÃÓÚʵÑéµÄÄÚºËÊǷdz£±ØÒªµÄ¡£ÕâÀïÏê¼ûLinuxѧϰ֮Äں˱àÒëÓëÌí¼Óϵͳµ÷Óᣠ¡¡¡¡ ¶ÔÓÚ±¾´ÎµÄÈÎÎñ£¬Ò»¸öÄ£ÄâÆ÷Ò²ÊǷdz£±ØÒªµÄ£¬ÕâÀïÖ÷ÒªÊDzÉÓÃqemuÄ£ÄâÆ÷¡£Õâ¸öÄ£ÄâÆ÷ÔÚlinuxϺܳ£Óã¬ÕâÀï²»ÔÙ׸Êö¡£ ¡¡¡¡ µ±±àÒëÄÚºËÓë°²×°qemuÄ£ÄâÆ÷Íê³Éºó£¬¾Í¿ÉÒÔÕýʽ¿ªÊ¼±¾´ÎÈÎÎñÖ®ÂÃÁË¡£ ¡¡¡¡ ÒòΪÄÚºËÒѾ±àÒë½áÊø£¬ÎÒÃÇÏÖÔÚÊ×ÏÈÒª×öµÄÊÇΪÎÒÃÇ×Ô¼ºµÄLinuxϵͳ׼±¸Ò»¸ö·Ç³£ÖØÒªµÄ²¿·Ö——¸ùÎļþϵͳ¡£ÕâÀïÖ÷Òª²ÉÓÃÁËÁ½ÖÖ·½°¸¡£ ¡¡¡¡·½·¨Ò»£º ¡¡¡¡ Ê×ÏȽ¨Á¢Ä¿±ê¸ùĿ¼ӳÏñ£º ¡¡¡¡ dd if=/dev/zero of=myinitrd.img bs=4096 count=1024 ¡¡¡¡ dd ÊÇ Linux/UNIX ϵÄÒ»¸ö·Ç³£ÓÐÓõÄÃüÁ×÷ÓÃÊÇÓÃÖ¸¶¨´óСµÄ¿é¿½±´Ò»¸öÎļþ£¬²¢ÔÚ¿½±´µÄͬʱ½øÐÐÖ¸¶¨µÄת»»¡£dd µÄÖ÷ҪѡÏ 1¡¢Ö¸¶¨Êý×ֵĵط½ÈôÒÔÏÂÁÐ×Ö·û½áβ³ËÒÔÏàÓ¦µÄÊý×Ö: b=512, c=1, k=1024, w=2, xm=number m2¡¢if=file ÊäÈëÎļþÃû£¬È±Ê¡Îª±ê×¼ÊäÈë¡£3¡¢of=file Êä³öÎļþÃû£¬È±Ê¡Îª±ê×¼Êä³ö¡£4¡¢ibs=bytes Ò»´Î¶ÁÈë bytes ¸ö×Ö½Ú(¼´Ò»¸ö¿é´óСΪ bytes ¸ö×Ö½Ú)¡£5¡¢obs=bytes Ò»´Îд bytes ¸ö×Ö½Ú(¼´Ò»¸ö¿é´óСΪ bytes ¸ö×Ö½Ú)¡£6¡¢bs=bytes ͬʱÉèÖöÁд¿éµÄ´óСΪ bytes £¬¿É´úÌæ ibs ºÍ obs ¡£7¡¢cbs=bytes Ò»´Îת»» bytes ¸ö×Ö½Ú£¬¼´×ª»»»º³åÇø´óС¡£8¡¢skip=blocks ´ÓÊäÈëÎļþ¿ªÍ·Ìø¹ý blocks ¸ö¿éºóÔÙ¿ªÊ¼¸´ÖÆ¡£9¡¢seek=blocks ´ÓÊä³öÎļþ¿ªÍ·Ìø¹ý blocks ¸ö¿éºóÔÙ¿ªÊ¼¸´ÖÆ¡£(ͨ³£Ö»Óе±Êä³öÎļþÊÇ´ÅÅÌ»ò´Å´øʱ²ÅÓÐЧ)10¡¢count=blocks ½ö¿½±´ blocks ¸ö¿é£¬¿é´óСµÈÓÚ ibs Ö¸¶¨µÄ×Ö½ÚÊý¡£11¡¢conv=conversion[,conversion...] ÓÃÖ¸¶¨µÄ²ÎÊýת»»Îļþ¡£ mkfs.ext3 myinitrd.img Õâ¾äÃüÁîµÄÒâ˼Êǽ«Ö®Ç°½¨Á¢µÄ.imgÎļþ¿é¸ñʽ»¯Îªext3µÄÎļþ¸ñʽ¡£ È»ºó´´½¨rootfsĿ¼£¬×÷Ϊһ¸ö¿ÕµÄ¹ÒÔص㣬²¢½«ÎÒÃÇ֮ǰ´´½¨²¢¸ñʽ»¯Îªext3Îļþϵͳ¸ñʽµÄÓ³ÏñÎļþ¹ÒÔص½rootfsĿ¼Ï¡£ mkdir rootfs sudo mount -o loop myinitrd.img rootfs ÕâÀïµÄÕâÒ»¹ÒÔØʹÎÒÃÇ¿ÉÒÔÔÚºóÃæ¶Ô´´½¨µÄext3ÎļþϵͳӳÏñ½øÐÐÏàÓ¦µÄ²Ù×÷¡£ È»ºó´´½¨Ò»¸öÎÒÃÇ×Ô¼ºµÄinit³ÌÐò£¬ÕâÀïÒªÃ÷È·Ò»¸ö¸ÅÄÔÚlinux²Ù×÷ϵͳϵͳÆô¶¯µÄ¹ý³ÌÖУ¬µ±init½ø³Ì¹ÒÔØÍêʵ¼ÊµÄÎļþϵͳ֮ºó£¬»áÅжÏÊÇ·ñÓÐÓû§Ö¸¶¨µÄÆô¶¯²ÎÊý“init=”,ÈôûÓУ¬ÔòÖ´ÐÐÒÔÏÂÃüÁîÖ®Ò»£¬/sbin/init£¬/etc/init£¬/bin/init£¬/bin/sh¡£ÕâÀïÎÒÃÇ´´½¨×Ô¼ºµÄinit³ÌÐò¾ÍÊÇ×÷ΪÓû§Ö¸¶¨µÄÆô¶¯³ÌÐò¡£ ·½·¨¶þ£º ¡¡¡¡ ·½·¨¶þ²ÉÓõķ½·¨ÊÇͨ¹ýʹÓÃbusyboxÖÆ×÷¸ùÎļþϵͳ¡£ ¡¡¡¡ Ê×ÏÈÏÂÔØbusyboxÔ´Â룬²¢½âѹËõ¡£ ¡¡¡¡ http://busybox.net/downloads/busybox-1.19.3.tar.bz2 ¡¡¡¡ È»ºó½øÈëbusybox-1.19.3Ŀ¼Ï£¬¶Ôbusybox½øÐÐÅäÖñàÒë¡£ ¡¡¡¡ make defconfig ¡¡¡¡ make menuconfig ¡¡¡¡ ÕâÀïÒªÐÞ¸ÄÈçÏÂÅäÖÃ: ¡¡¡¡ ½«busybox settings -> build options -> build busybox as a static binaryÕâÒ»ÏîÑ¡ÉÏ¡£ ¡¡¡¡ make ¡¡¡¡ È»ºó×¼±¸¸ùĿ¼ӳÏñ£¬²¢°²×°busyboxµ½¸ùĿ¼ӳÏñÖС£ ¡¡¡¡ dd if=/dev/zero of=busyboxmyinitrd12M.img bs=4096 count=3072 ¡¡¡¡ mkfs.ext3 busyboxmyinitrd12M.img ¡¡¡¡ mkdir rootfs ¡¡¡¡ sudo mount -o loop busyboxmyinitrd12M.img rootfs ¡¡¡¡ cd busybox-1.19.3 ¡¡¡¡ sudo make CONFIG_PREFIX=../rootfs/ install ¡¡¡¡ ¡¡¡¡ sudo umount rootfs ¡¡¡¡ ÖÁ´ËÎÒÃÇ×Ô¼ºµÄͨ¹ýbusyboxÖÆ×÷µÄ¸ùĿ¼ӳÏñÒѾ×öºÃÁË£¬Ê¹ÓÃqemuÄ£ÄâÆ÷ÊÔ×ÅÔËÐÐһϡ£ ¡¡¡¡ qemu -kernel linux-3.9.4/arch/x86/boot/bzImage -initrd busyboxmyinitrd12M.img -append "root=/dev/ram init=/bin/ash" ¡¡¡¡ ÔËÐнá¹ûÈçÏ£º ¡¡¡¡ ¡¡¡¡ ¿ÉÒÔ¿´µ½½øÈëµ½ÁËbusyboxÌṩµÄshell»·¾³£¬Òò´Ë¸ùÎļþϵͳ¼ÓÔسɹ¦¡£ ¡¡¡¡ µ½´ËΪֹ£¬ÎÒÃÇ¿ÉÒÔ°ÑÇ°ÃæµÄ¹¤×÷¶¼¿´×÷ÊÇ×¼±¸¹¤×÷£¬ÕæÕý¾«²ÊµÄ½ÚÄ¿¿ªÊ¼ÁË¡£ ¡¡¡¡ ÏÂÃæÎÒÃǽ«ÖÆ×÷´øgrubÆô¶¯µÄ´ÅÅÌÓ³Ïñ¡£ ¡¡¡¡ Ê×ÏÈ»ñµÃgrub²¢ÖÆ×÷grubÆô¶¯ÈíÅÌ¡£ ¡¡¡¡ ÏÂÔØgrub,½âѹËõ¡£ ¡¡¡¡ ftp://alpha.gnu.org/gnu/grub/grub-0.97-i386-pc.tar.gz ¡¡¡¡ ½¨Á¢Æô¶¯ÈíÅÌÓ³Ïñ£º ¡¡¡¡ dd if=/dev/zero of=vampirem.img bs=512 count=2880 ¡¡¡¡ Ìí¼ÓgrubÆô¶¯¹¦ÄÜ ¡¡¡¡ sudo losetup /dev/loop3 vampirem.img ¡¡¡¡ sudo dd if=./grub-0.97-i386-pc/boot/grub/stage1 of=/dev/loop3 bs=512 count=1 ¡¡¡¡ sudo dd if=./grub-0.97-i386-pc/boot/grub/stage2 of=/dev/loop3 bs=512 seek=1 ¡¡¡¡ sudo losetup -d /dev/loop3 ¡¡¡¡ ¹ØÓÚlosetupÃüÁîµÄÏêϸÇé¿öÇë²ÎÔÄlosetupÃüÁîºÍloopÉ豸µÄʹÓà ¡¡¡¡ ÕâÀïʵ¼ÊÉÏÊÇÏ൱ÓÚ²ÉÓÃÒ»¸öÑ»·É豸loop3×÷Ϊһ¸öÖмäµÄ¹ÒÔص㣬À´¶ÔÎÒÃÇ×Ô¼ºµÄgrubÈíÅÌÓ³Ïñvampirem.img½øÐÐÏàÓ¦µÄÐ޸ĺͲÙ×÷¡£ ¡¡¡¡ È»ºóÔÚqemuÄ£ÄâÆ÷ÉϲâÊÔһϣ¬¿´ÊÇ·ñ¿ÉÒÔ½øÈëgrub½çÃæ¡£ ¡¡¡¡¡¡¡¡qemu -fda vampirem.img ¡¡¡¡ ¡¡¡¡ OK£¬ÎÒÃÇ¿´µ½grub½çÃæ³É¹¦Æô¶¯ÁË¡£ ¡¡¡¡ ½ÓÏÂÀ´£¬¿ªÊ¼×¼±¸ÎÒÃÇ×Ô¼ºµÄlinux²Ù×÷ϵͳµÄ´ÅÅÌÓ³Ïñ¡£ ¡¡¡¡ dd if=/dev/zero of=40M.img bs=4096 count=10240 ¡¡¡¡ sudo losetup /dev/loop3 40M.img ¡¡¡¡ È»ºóÒªÔÚ´ÅÅÌÓ³ÏñÉϽ¨Á¢Ò»¸öÆô¶¯Òýµ¼·ÖÇø£¬ÕâÀï²ÉÓà ¡¡¡¡ sudo fdisk /dev/loop3 ¡¡¡¡ ¡¡¡¡ ¿ÉÒÔ¿´µ½mÃüÁîÊDz쿴°ïÖúÐÅÏ¢µÄ£¬ÎÒÃDz쿴һÏ ¡¡¡¡ ¡¡¡¡ È»ºó¿´µ½nÃüÁîÊÇн¨Ò»¸ö·ÖÇø£¬aÃüÁîÊǽ«Õâ¸ö·ÖÇøÉèΪÒýµ¼·ÖÇø£¬pÃüÁîÊÇ´òÓ¡³ö·ÖÇø±í£¬wÃüÁîÊÇ°Ñ·ÖÇø±íдµ½´ÅÅÌÉϲ¢Í˳ö¡£ÓÚÊÇ£º ¡¡¡¡ ¡¡¡¡·ÖÇø½¨ºÃÖ®ºó£¬½«»î¶¯·ÖÇø¸ñʽ»¯Îªext3fsÎļþϵͳ¸ñʽ£¬²¢¹ÒÔص½rootfsĿ¼Ï¡£ ¡¡¡¡ sudo losetup -d /dev/loop3 ¡¡¡¡ sudo losetup -o 1048576 /dev/loop3 40M.img ¡¡¡¡ ÕâÀïµÄÆ«ÒÆÖµ1048576ÊÇÒòΪ֮ǰÔÚÉèÖ÷ÖÇøʱÎÒÃÇ¿ÉÒÔ¿´µ½µÚÒ»¸öÉÈÇøÊÇÔÚ2048´¦£¬Òò´Ë2048*512=1048576±ãÊÇ´Ë´¦µÄÆ«ÒÆÖµ¡£ ¡¡¡¡ sudo mkfs.ext3 /dev/loop3 ¡¡¡¡ sudo mount -o loop /dev/loop3 rootfs/ ¡¡¡¡ È»ºó°Ñ֮ǰ׼±¸ºÃµÄ£¬ÎļþϵͳӳÏñÎļþºÍÄÚºËÓ³ÏñÎļþ¿½±´µ½rootfsĿ¼Ï£¬¼´¿½±´µ½ÎÒÃǵĴÅÅÌÓ³ÏñÎļþÖС£ ¡¡¡¡ sudo cp busyboxmyinit12M.img rootfs/ ¡¡¡¡ sudo cp linux-3.9.4/arch/x86/boot/bzImage rootfs/ ¡¡¡¡ È»ºóÔÚrootfsϽ¨Á¢bootĿ¼£¬ÒÔ¼°bootĿ¼ÏµÄgrubĿ¼¡£ ¡¡¡¡ sudo mkdir rootfs/boot ¡¡¡¡ sudo mkdir rootfs/boot/grub ¡¡¡¡ È»ºó½«Ö®Ç°ÏÂÔصÄgrubµÄboot/grubĿ¼ÏµÄÎļþ¿½±´µ½rootfs/boot/grubĿ¼Ï¡£ ¡¡¡¡ sudo cp ./grub-0.97-i386-pc/boot/grub/* rootfs/boot/grub ¡¡¡¡ È»ºóÐèÒªÔÚrootfs/boot/grubĿ¼Ï½¨Á¢Ò»¸öÆô¶¯²Ëµ¥Îļþmenu.lst¡£¾ßÌåÄÚÈÝÈçÏ£º ¡¡¡¡ ¡¡¡¡ ÀïÃæµÄÄÚÈÝÒâ˼ºÜÃ÷ÏÔ£¬ÕâÀï²»ÔÙ׸Êö¡£ ¡¡¡¡ sudo umount rootfs ¡¡¡¡ sudo losetup -d /dev/loop3 ¡¡¡¡ ÏÂÃæ½ôÕŵÄʱ¿Ìµ½ÁË£¬ÎÒÃÇ¿´Ò»Ï£¬ÄÜ·ñÀûÓÃgrubÆô¶¯ÈíÅÌ£¬ÔÚ´ÅÅÌÓ³ÏñÉÏÌí¼Ógrub¹¦ÄÜ¡£ ¡¡¡¡ qemu -boot a -fda vampirem.img -hda 40M.img ¡¡¡¡ ¡¡¡¡ ¡¡¡¡ ¿ÉÒÔ¿´µ½£¬³É¹¦Ìí¼Ó¡£ ¡¡¡¡ ÏÂÃæ²âÊÔһϣ¬´Ó¸Õ²ÅÖÆ×÷ºÃµÄÎÒÃÇ×Ô¼ºµÄlinux²Ù×÷ϵͳµÄ´ÅÅÌÓ³ÏñÎļþ½øÈëgrub½çÃæÈ»ºóÆô¶¯¡£ ¡¡¡¡ qemu -hda 40M.img ¡¡¡¡ ¡¡¡¡ ¡¡¡¡ ÖÁ´Ë£¬ÎÒÃÇ×Ô¼ºµÄÒ»¸öСÐ͵ÄLINUX²Ù×÷ϵͳ¾ÍÍê³ÉÁË~ (ÔðÈα༣ºIT) |