Ò»¸öµäÐ͵Ä×ÀÃæLinuxϵͳ°üÀ¨3¸öÖ÷ÒªµÄÈí¼þ²ã---linuxÄںˡ¢C¿âºÍÓ¦ÓóÌÐò´úÂë¡£
¡¡¡¡ÄÚºËÊÇΨһ¿ÉÒÔÍêÈ«¿ØÖÆÓ²¼þµÄ²ã£¬ÄÚºËÇý¶¯³ÌÐò´ú±íÓ¦ÓóÌÐòÓëÓ²¼þÖ®¼ä½øÐлỰ¡£ÄÚºËÖ®ÉÏÊÇC¿â£¬¸ºÔð°ÑPOSIX APIת»»ÎªÄں˿ÉÒÔʶ±ðµÄÐÎʽ£¬È»ºóµ÷ÓÃÄںˣ¬´ÓÓ¦ÓóÌÐòÏòÄں˴«µÝ²ÎÊý¡£Ó¦ÓóÌÐòÒÀ¿¿Çý¶¯ÄÚºËÀ´Íê³ÉÌض¨µÄÈÎÎñ¡£
¡¡¡¡ÔÚÉè¼ÆǶÈëʽӦÓõÄʱºò£¬¿ÉÒÔ²»°´ÕÕÕâÖÖ²ã´Î£¬Ó¦ÓóÌÐòÔ½¹ýC¿âÖ±½ÓºÍÄں˻Ự£¬»òÕß°ÑÓ¦ÓúÍÄÚºËÀ¦°óÔÚÒ»Æð£¬ÉõÖÁ¿ÉÒÔ°ÑÓ¦ÓÃдΪÄں˵ÄÒ»¸öỊ̈߳¬ÔÚÄÚºËÖÐÔËÐУ¬ËäÈ»ÕâÑùÔÚÒÆÖ²ÉÏ´øÀ´ÁËÀ§ÄÑ£¬µ«¿¼ÂÇǶÈëʽϵͳ¶Ô³ß´çÒªÇóСµÄÌص㣬ÊÇÍêÈ«¿ÉÐеġ£²»¹ýÎÒÃÇʹÓÃÈý²ãÈí¼þ½á¹¹µÄģʽÀ´Ñ§Ï°Ç¶Èëʽlinux½«»áÊÇÎÒÃÇÈÏʶ¸üÇåÎú£¬¼òµ¥¿ÉÐв¢Ê¹Ó¦ÓþßÓе¯ÐÔ¡£
¡¡¡¡¿ìËÙÈëÃÅ
¡¡¡¡×î¼òµ¥µÄ½¨Á¢Ç¶ÈëʽLinuxÓ¦Óõķ½·¨¾ÍÊÇ´ÓÎÒÃÇʹÓõÄ×ÀÃæLinuxÈëÊÖ£¬°²×°Ò»¸öϲ°®µÄ°æ±¾£¬°ÑÎÒÃǵÄij¸öÓ¦ÓÃ×÷Ϊ³õʼ»¯µÄÒ»²¿·Ö£¬¿ò¼Ü¾ÍËãÍê³ÉÁË¡£
¡¡¡¡µ±È»£¬Ç¶ÈëʽlinuxÓ¦ÓÃÔ¶±ÈÎÒÃǵÄ×ÀÃæ°æ±¾¹¦Äܼòµ¥×¨Ò»£¬ËüÒ²Ðí¾ÍÊÇÒ»¸öÓÃÓÚ×ã²ÊµÄÖն˻ú£¬»òÊÇÒ»¸öÊýÂëÒôƵ²¥·ÅÆ÷£¬ÕâЩϵͳ³ýÁËʹÓÃǶÈëʽCPUÍ⣬½ö½öÔÙÐèÒªÒ»¸ö´®¿Ú£¬Íø¿ÚµÈÉÙÁ¿µÄÊäÈëÊä³ö½Ó¿Ú¾Í¿ÉÒÔÍê³ÉËüÃÇÌض¨µÄÓ¦ÓÃÁË¡£
¡¡¡¡ÔÚÈí¼þÉÏ£¬Ëü¿ÉÒÔ°´ÕÕÈý²ãµÄ¸ÅÄîÓÉÄÚºË×°ÔØÆ÷£¬¶¨ÖƵÄÄں˺ͽÏÉÙµÄΪÌض¨ÈÎÎñÉè¼ÆµÄ¾²Ì¬Á¬½ÓµÄÓ¦ÓóÌÐò×é³É¡£Ö®ËùÒÔʹÓþ²Ì¬Á¬½ÓµÄÓ¦ÓóÌÐò£¬ÊÇÒòΪÉÙÁ¿µÄ¾²Ì¬Á¬½Ó³ÌÐòËùÒªµÄ´æ´¢¿Õ¼ä£¬±ÈͬÑùÊýÁ¿µÄ¶¯Ì¬Á¬½ÓµÄ³ÌÐòËùÕ¼µÄ¿Õ¼äС£¬Õâ¸öƽºâµãÐèÒªÎÒÃÇÔÚʵ¼Ê¿ª·¢ÖÐÈ¥»ñÈ¡¡£Ò²ÐíÄãÕýÔÚÉè¼ÆµÄÊǸöPDA£¬ËüµÄÓ¦ÓóÌÐò½Ï¶à£¬ÄÇôÄãºÜ¿ÉÄܾÍҪʹÓö¯Ì¬Á¬½Ó³ÌÐòÀ´¼õÉÙ´æ´¢¿Õ¼ä¡£ÔÚÄãµÄ/bin»òÕß/sbinĿ¼Ï£¬Óó§ÁÐ±í¿´¿´bash,ifconfig,vi...£¬Ò²ÐíÖ»Óü¸Ê®K£¬µ±ÄãÔËÐÐ ldd /bin/bash ʱ£¬Äã»á¿´µ½ËüÃǶ¼ºÍºÃ¼¸¸ö¿âÎļþÏàÁ¬¡£ºÃÁË£¬ÕâÑù¿´À´£¬ÎÒÃǵðÑPCÏëÏñ³ÉÒ»¸öǶÈëʽӲ¼þƽ̨£¬ÔÙÖØÐÂÖÆ×÷Ò»¸öÌض¨¹¦ÄܵÄǶÈëʽlinux¡£
¡¡¡¡»ù´¡ÖªÊ¶
¡¡¡¡ÔÙ½øÐÐʵ¼Ê²Ù×÷֮ǰ£¬ÏÈÀ´¸ãÇå³þ¼¸¸ö»ù´¡ÖªÊ¶¡£
¡¡¡¡ÄÚºË×°ÔØÆ÷Loader£¬ËüµÄ×÷ÓÃÊÇ°ÑÄں˴ÓÍⲿ´æ´¢Æ÷£¬Òƶ¯µ½ÄÚ´æÖС£ËüÖ»×÷Õâ¸öÊÂÇ飬һµ©Íê³ÉÁ˵÷ÈëÄں˵Ť×÷£¬Loader¾ÍÌøתµ½ÄÚºËλÖÿªÊ¼Ö´ÐС£²»Í¬¼Ü¹¹Óв»Í¬µÄLoader£¬ÔÚx86½á¹¹µÄPCÉÏ£¬Í¨³£Ê¹ÓõÄloaderÓÐLILO,GRUB,syslinux,syslinuxÔÚǶÈëʽlinuxÖÐҲͬÑù¹¤×÷¡£ÆäËû·Çx86¼Ü¹¹µÄÓ¦ÓÃÖУ¬Äã±ØÐëʹÓÃרÃŵÄloader£¬»òÕß×Ô¼º±àдloaderÀ´×°ÈëÄںˡ£Ò²Óв»Ê¹ÓÃloaderµÄÇé¿ö£¬ÏµÍ³¼ÓµçÒÔºó£¬ÄÚºËÖ±½Ó´ÓÉÕ¼ÓÐÓ³ÏóµÄFlashÉÏ¿ªÊ¼Ö´ÐС£
¡¡¡¡Äںˣ¬Ò»µ©Äں˿ªÊ¼Ö´ÐУ¬Ëü½«Í¨¹ýÇý¶¯³ÌÐò³õʼ»¯ËùÓÐÓ²¼þ£¬Õâ¿ÉÒÔ´ÓÎÒÃǵÄpc»ú¼àÊÓÆ÷µÄÊä³ö¿´³öÀ´£¬Ã¿¸öÇý¶¯³ÌÐò¶¼´òӡһЩÓйØËüµÄÐÅÏ¢¡£³õʼ»¯Íê³Éºó£¬¼ÆËã»ú¾Í×¼±¸ÔËÐÐǶÈëʽӦÓá£Ò²ÐíÒ»¸ö£¬Ò²ÐíÊǶà¸öÓ¦ÓóÌÐò×é³ÉÁËǶÈëʽӦÓ㬵«Í¨³£Ê×Ïȵ÷ÓõÄÊÇinit(ͨ¹ýloader ÏòºËÐÄ´«Èëinit=/program ¿ÉÒÔ¶¨ÖÆÊ×ÏÈÔËÐеijÌÐò)¡£×ÀÃælinuxÖУ¬init»á¶ÁÈ¡/etc/inittabÎļþ£¬À´¾ö¶¨Ö´Ð춱ðºÍÄÄЩ½Å±¾ºÍÃüÁǶÈëʽӦÓÃÖУ¬¿ÉÒÔ¸ù¾Ýʵ¼ÊµÄÇé¿ö¾ö¶¨ÊÇ·ñʹÓñê×¼µÄinitÖ´Ðз½Ê½£¬Ò²ÐíÕâ¸öinitÊǸö¾²Ì¬³ÌÐò£¬ËüÄܹ»Íê³ÉÎÒÃǵÄǶÈëÓ¦ÓõÄÌض¨ÈÎÎñ£¬ÄÇÍêÈ«²»Óÿ¼ÂÇinittabÁË¡£
¡¡¡¡initrdÎļþϵͳ£¬initrdÒÔÒ»ÖÖ°ÑÄں˴Ӵ洢½éÖÊ×°Èëµ½ÄÚ´æµÄÏàͬµÄ»úÖÆÀ´×°ÈëÒ»¸öСÐÍÎļþϵͳ¡£Õâ¸öÎļþϵͳ×îºÃÊÇÒÔѹËõµÄ·½Ê½´æ´¢ÔÚ½éÖÊÉϵģ¬½âѹËõµ½RAMÅÌÉÏ¡£Í¨¹ýʹÓÃinitrd,°üº¬ÓкËÐÄÇý¶¯ºÍÆô¶¯½Å±¾µÄСÎļþϵͳ£¬¾Í¿ÉÒÔÖ±½Ó´Ó½éÖÊÉϺÍÄÚºËÒ»ÆðÆô¶¯ÆðÀ´£¬Äں˽ìѹËõÕâ¸öÎļþϵͳ£¬²¢Ö´ÐÐÕâ¸öÎļþϵͳÉϽÐ×ö/linuxrcµÄ½Å±¾Îļþ£¬Õâ¸ö½Å±¾Í¨³£»á°ÑÆô¶¯¹ý³ÌÖÐËùÐèÒªµÄÇý¶¯³ÌÐò×°Èë¡£½Å±¾Í˳öÒÔºó£¬initrdÎļþϵͳҲжÏÂÁË£¬Æô¶¯¹ý³Ì½øÈëÕæÕý³õʼ»¯¹ý³Ì¡£¶ÔÓÚǶÈëʽÀ´½²£¬¿ÉÒÔ½«ÐèÒªµÄÓ¦ÓÃÈí¼þ¶¼ÔËÐÐÔÚÕâ¸öinitrdÎļþϵͳÉÏ£¬Ö»Òª/linxrcÎļþ²»½áÊø£¬ÄÚºËÆô¶¯¹ý³ÌµÄÆäËû²¿·Ö¾Í²»»á¼ÌÐø¡£
¡¡¡¡×ö¸öÊÔÑ飺
cp /boot/initrd-2.4.20.img /tmp
cd /tmp
mv initrd-2.4.2-.img initrd.img.gz
gunzip initrd.img.gz
mount -o loop initrd.img /mnt
cd /mnt
ls
cat linuxrc ¿ÉÒÔ¿´µ½ÀïÃæÖ´ÐÐÁ˼ÓÔØÁËÁ½¸öÄ£¿éµÄ²Ù×÷£¬ÄãÔÚÆô¶¯linxuµÄʱºò»á¿´¼ûÆÁÄ»´òÓ¡ÐÅÏ¢¡£
¡¡¡¡ÈëÃÅÊÔÑ飬ÖÆ×÷Ò»¸ö¼òµ¥µÄÓ¦ÓÃ
¡¡¡¡ÎÒÃÇʹÓÃÒ»ÕÅÈíÅÌÆô¶¯Ò»Ì¨¼ÙÏóµÄÖ»ÓÐÒ»¸ö´®¿Ú£¬¼üÅÌÊäÈ룬ÏÔʾÊä³öµÄx86¼Ü¹¹µÄlinuxϵͳ£¬Ö´ÐеÄÌض¨Ó¦ÓþÍÊÇÔËÐÐminicom£¬Í¨¹ý´®¿Ú²¦ºÅ¡£ÐèÒªÈí¼þ: minicom-xx.src.tar.gz ºÍ syslinux-xx.tar.gz£¬xx´ú±í°æ±¾ºÅ £¬¿ªÊ¼Ö®Ç°£¬ÔÚÖ÷Ŀ¼½¨Á¢Ò»¸öĿ¼£¬À´ÊÍ·ÅÕâÁ½¸öÈí¼þ°ü£º
cd
mkdir -p project/minilinux
cd project/minilinux
tar zxvf minicom-xx.src.tar.gz
tar zxvf syslinux-xx.tar.gz
¡¡¡¡1¡¢²Ã¼õlinuxÄÚºË(ÐèҪϵͳ°²×°ÄÚºËÎļþ°ü)
¡¡¡¡ÅäÖÃÄں˵Äʱºò£¬ÎÒÃÇÐèҪѡÔñÕâЩ£ºÃþ¿é±àÈëÄںˣ¬386´¦ÀíÆ÷¡¢ÎïÀíÄÚ´æoff¡¢Ö§³ÖELF¡¢±ê×¼PCÈíÅÌ¡¢Ö§³ÖRAMÅÌ(4096)¡¢Ö§³Öinitial RAM disk (initrd)¡¢ÐéÄãÖնˡ¢ÐéÄâÖն˿ØÖÆ̨¡¢±ê×¼´®¿Ú¡¢ext2Îļþϵͳ¡¢¿ØÖÆ̨Çý¶¯£¬VGA text console¡¢DOS FAT¡¢MSDOSÎļþϵͳ£¬ÆäËûµÄ¶¼¿ÉÒÔ²»Òª£¬ÕâÑùÄں˱à³öÀ´½ÏС¡£
²½Öè:
cd /usr/src/linux
make mrproper
make xconfig
make dep && make bzImage
¡¡¡¡µÃµ½ /usr/src/linux/arch/i386/boot/Ŀ¼µÄÄÚºËÎļþbzIamge¡£
¡¡¡¡2¡¢±àÒëÒ»¸ö¾²Ì¬µÄminicom £¬°ÑËü×÷Ϊ½«À´µÄlinuxrc
¡¡¡¡cd minicom-xx/src
¡¡¡¡vi Makefile
¡¡¡¡ÐÞ¸ÄÏÂÃæÕâÐÐ
¡¡¡¡minicom: $(minicom_OBJECTS) $(minicom_DEPENDENCIES)
¡¡¡¡rm -f minicom ÏÂÃæµÄÐмÓÉÏ -static£¬Á¬½ÓΪ¾²Ì¬³ÌÐò
¡¡¡¡(LINK) -static $(minicom_LDFLAGS) $(minicom_OBJECTS) $(minicom_LDADD) $(LIBS)
¡¡¡¡vi minicom.c
¡¡¡¡ÕÒµ½ if (real_uid==0 && dosetup==0 ) ɾ³ýÕâ¸öÅжÏÌõ¼þÓï¾ä£¬Ö÷ÒªÊÇÓÃÓÚȨÏÞÅжϵģ¬ÒòΪÕâ¸öǶÈëÓ¦Óò»¹ØעȨÏÞÎÊÌ⣬·ñÔò»á³ö´í¡£
¡¡¡¡make
¡¡¡¡µÃµ½¿ÉÖ´ÐгÌÐò£¬ÓÃldd ¼ì²éÒ»ÏÂÊDz»ÊǾ²Ì¬³ÌÐò¡£
¡¡¡¡3¡¢×¼±¸initrdѹËõÎļþimage.gz
dd if=/dev/zero of=image bs=1k count=4096
losetup /dev/loop0 image
mke2fs -m 0 /dev/loop0
mounmt -t ext2 /dev/loop0 /mnt/
mkdir -p /mnt/dev
mkdir -p /mnt/usr/share/terminfo/l/
cd /dev
cp -a consle null tty tty0 zero mem /mnt/dev
cp -P /usr/share/terminfo/l/linux /mnt/usr/share/terminfo/l/linux
cp ~/project/minilinux/mincom/src/minicom /mnt/linuxrc
umount /mnt
losetup -d /dev/loop0
sync
gzip -9 image
¡¡¡¡4¡¢ÖÆ×÷ÈíÅÌÒýµ¼£¬²¢¿½±´Îļþ bzimage image.gz µ½ÈíÅÌ
A.ʹÓÃgrub
fdformat /dev/fd0
mke2fs /dev/fd0
mount /mnt/fd0 /mnt/floppy
mkdir -p /mnt/floppy/boot/grub
cp /boot/grub/stage1 /boot/grub/stage2 /mnt/floppy/boot/grub
Ö´ÐÐ grub£¬ÔÚÈíÅÌÉÏ´´½¨Òýµ¼
grub > root (fd0)
grub > setup (fd0)
grub > quit
cp /usr/src/linux/arch/i386/boot/bzImge /mnt/floppy
cp ~/porject/minilinux/image.gz /mnt/floppy
±à¼ /mnt/floppy/boot/grub/grub.conf
default =0
timeout-=10
title minilinux
root (fd0)
kernel /bzImage
initrd /image.gz
жÏÂÈíÅÌ
umount /mnt/floppy
B. ʹÓÃsyslinux
fdformat /dev/fd0
mkfs.msdos /dev/fd0
mount -t msdos /dev/fd0 /mnt/floppy
cp /usr/src/linux/arch/i386/boot/bzImge /mnt/floppy
cp ~/porject/minilinux/image.gz /mnt/floppy
cp syslinux-xx/ldlinxu.sys /mnt/floppy
cat > /mnt/floppy/syslinux.cfg
LABEL linux
KERNEL bzimage
APPEND initrd=image.gz
umont /mnt/floppy
syslinux-xx/syslinux /dev/fd0
sync
¡¡¡¡5¡¢ÓÃÈíÅÌÆô¶¯¼ÆËã»ú£¬Èç¹ûÐÒÔË£¬minicomµÄÔËÐлÃæ³öÏÖÔÚÆÁÄ»ÉÏ¡£
¡¡¡¡µ½´Ë£¬ÎÒÃǵĵ¥Ó¦ÓÃǶÈëʽlinux×öºÃÁË£¬µ«Ëü»¹ºÜ¼òª£¬Ã»ÓÐʲôʵ¼ÊÓÃ;£¬µ«Í¨¹ýÕâ¸öʵÑ飬¿ÉÒÔÁ˽âǶÈëʽϵͳµÄ´óÖ½ṹºÍ¿ª·¢¹ý³Ì¡£ÔÚ½øÐÐʵ¼ÊµÄǶÈëʽ¿ª·¢Ê±£¬Í¨³£ÒªÔÚPC»úÉϽèÖúǶÈëʽlinux¿ª·¢¹¤¾ß°ü£¬È磺uclinux,bluecatµÈ£¬¶ÔÏàÓ¦µÄÓ²¼þƽ̨(Ä¿±ê»ú)½øÐÐÈí¼þ±àд±àÒ룬µ÷ÊԳɹ¦ºó£¬½«Äں˼°Ó¦ÓóÌÐòдÈ뵽Ŀ±ê»úµÄ´æ´¢Æ÷ÖУ¬´Ó¶øÍê³ÉÕû¸öÓ¦Óá£
cheshi ÓÚ 2005-11-07 00:24:23·¢±í:
²»´í£¬¸Ðл·ÖÏí¼¼Êõ