Linuxѧϰ֮ϵͳµÄ¹¹½¨
ʱ¼ä:2015-12-16 23:41 À´Ô´:linux.it.net.cn ×÷Õß:IT
ʵÑé»·¾³£º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³ÌÐò¾ÍÊÇ×÷ΪÓû§Ö¸¶¨µÄÆô¶¯³ÌÐò¡£
¿ÉÒÔ¿´µ½init³ÌÐòµÄÖ÷ÒªÈÎÎñÊÇÊä³öÁ½¾ä»°¡£ È»ºóʹÓþ²Ì¬Á´½ÓµÄ·½·¨±àÒë³É¿ÉÖ´ÐÐÎļþ£¬²¢½«ÕâÒ»¿ÉÖ´ÐÐÎļþ¿½±´µ½Ä¿±ê¸ùĿ¼Ï£¬¼´rootfsÏ¡£ gcc -static -o init init.c cp init rootfs/ È»ºó×¼±¸devĿ¼£¬ÕâÀï/devĿ¼ÏÂÖ÷ÒªÊÇ°üº¬ÁËlinuxÆô¶¯¹ý³ÌÖÐËù±ØÐèµÄÉ豸Îļþ¡£ sudo mkdir rootfs/dev sudo mknod rootfs/dev/console c 5 1 sudo mknod rootfs/dev/ram b 1 0 ÆäÖÐconsole¿ØÖÆ̨É豸¾ÍÊÇÄÇÌ×Ö±½ÓÁ¬½ÓÔÚµçÄÔÉϵļüÅ̺ÍÏÔʾÆ÷£¬ÊÇÖ±½ÓºÍ¼ÆËã»úÏàÁ¬½ÓµÄÔÉúÉ豸¡£ÁíÍâ¿ØÖÆ̨Ҳ°üÀ¨ÐéÄâ¿ØÖÆ̨£¬×ÜÖ®£¬ÕâÊÇlinuxÆô¶¯¹ý³ÌÖбز»¿ÉÉÙµÄÉ豸¡£ramÔÚÕâÀïÊÇ×÷ΪlinuxµÄ¸ùÉ豸Ëù´´½¨ºÍ¹ÒÔصġ£ ÒòΪÔÚ֮ǰÒѾ½«ÎÒÃÇËù´´½¨µÄext3Îļþϵͳ¸ñʽµÄÎļþϵͳӳÏñ¹ÒÔص½ÁËrootfsĿ¼Ï£¬ËùÒÔÉÏÊöÕâЩ²Ù×÷£¬Êµ¼ÊÉ϶¼ÊÇÕë¶Ômyinitrd.imgÕâÒ»ÎÒÃÇ×Ô¼ºµÄ¸ùÎļþϵͳӳÏñ½øÐеIJÙ×÷¡£È»ºóжÔØ¡£ sudo umount rootfs ÖÁ´Ë£¬Ò»¸ö°üº¬¼òµ¥Ó¦ÓóÌÐòµÄ¸ùĿ¼ӳÏñmyinitrd.img¾Í×¼±¸ºÃÁË¡£ È»ºóʹÓÃ֮ǰ°²×°ºÃµÄqemuÄ£ÄâÆ÷½øÐÐÄ£Ä⣬¿´¿´ÎÒÃÇ×Ô¼ºµÄlinux²Ù×÷ϵͳÄÜ·ñÕý³£Æô¶¯¡£ qemu -kernel linux-3.9.4/arch/x86/boot/bzImage -initrd myinitrd.img -append "root=/dev/ram init=/init" ¿ÉÒÔ¿´µ½qemuÖÐ-kernel²ÎÊýÖ¸¶¨µÄÊÇÎÒÃÇ×Ô¼ºµÄLinux²Ù×÷ϵͳµÄÄÚºËÓ³ÏñµÄλÖ㬼´Ö®Ç°ÎÒÃÇËù±àÒëµÄÄں˵ÄbzImageµÄ¾ø¶Ô·¾¶£¬È»ºóͨ¹ý-initrd²ÎÊýÀ´Ö¸¶¨ÎÒÃÇ×Ô¼ºµÄ¸ùĿ¼ӳÏñ£¬ÔÚ-append²ÎÊýÖÐÖ¸¶¨ÎÒÃǵĸùÉ豸ÊÇ/dev/ram£¬Ö¸¶¨Æô¶¯²ÎÊýΪÓû§Ö¸¶¨µÄÆô¶¯³ÌÐòinit¡£ÔËÐнá¹ûÈçÏ£º
¿ÉÒÔ¿´µ½ÎÒÃÇ×Ô¼ºµÄinit³ÌÐò×÷ΪÓû§Ö¸¶¨µÄÆô¶¯²ÎÊý³É¹¦±»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)
ʵÑé»·¾³£º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) |