µ±Ç°Î»ÖÃ: > Linux·þÎñÆ÷ > Linuxϵͳ >

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)
------·Ö¸ôÏß----------------------------