ºìÁªLinuxÃÅ»§
Linux°ïÖú

ÖÆ×÷LinuxµÄÓÅÅÌ£¨usb£©Æô¶¯ÅÌ

·¢²¼Ê±¼ä:2006-10-10 01:19:36À´Ô´:ºìÁª×÷Õß:Redassociation
¡¡¡¡USB ÉÁ´æ´æ´¢×°ÖÃ(ÓÅÅÌ)Ò»°ãÖ»ÓÐÔ¿³×¿Û´óС£¬´æ´¢ÈÝÁ¿¶àΪ32MBºÍ64MB¡£ÓÉÓÚ¾ßÓÐÇáÇɾ«Ö¡¢Ê¹Ó÷½±ã¡¢±ãÓÚЯ´øµÈÓÅµã£¬ÌØ±ðÊǶԱÈÈíÅ̾ßÓÐÈÝÁ¿½Ï´ó¡¢°²È«¿É¿¿¡¢¶ÁÈ¡ËٶȽϿìµÈÌØÐÔ£¬Ô½À´Ô½¶àÈËʹÓÃÕâÖÖ×°ÖÃÈ¡´úÁËÈíÇýÓëÈíÅÌ£¬ÔÚPCÖ®¼ä½»»»Îļþ¡£Ä¿Ç°Ð³öµÄÖ÷°åBIOS¶¼Ö§³ÖUSBÈíÅ̺ÍÓ²ÅÌµÄÆô¶¯·½Ê½£¬ÕâÑù¶ÔÓÚWindows 98µÄϵͳά»¤Óë°²×°¹¤×÷Ô½À´Ô½·½±ã¡£µ«ÊÇ£¬³§¼Ò½öÌá¹©ÖÆ×÷Windows 98Æô¶¯Å̵ÄÖÆ×÷¹¤¾ß£¬²¢²»ÌṩlinuxÆô¶¯Å̵ÄÖÆ×÷¹¤¾ß¡£ÔÚÓÅÅÌÉϽ¨Á¢LinuxÆô¶¯ÅÌ£¬¶ÔÓÚϵͳά»¤ÈËÔ±¾ßÓиü¼ÓʵÓõÄÒâÒ壬Äã¿ÉÒÔʹÓÃLinux ½¨Á¢Ð¡ÇɵÄÄںˣ¬½¨Á¢ÍøÂç»·¾³£¬¿ìËÙµØÅжϺÍÅųýÍøÂç¹ÊÕÏÓë´«ËÍÎļþ¡£±¾ÎÄÒÔRed Hat 8.0ΪÀý£¬Ê¹ÓÃÀʿƵÄË«Æô¶¯ÐÍÓÅÅ̽¨Á¢ÓÅÅ̵ÄLinuxÆô¶¯ÅÌ¡£

¡¡¡¡ÏÂÔØÏà¹ØÈí¼þ£ºe3£¬bvi£¬LiuuxÄںˡ£

¡¡¡¡±àÒëÄÚºË

¡¡¡¡Ê×ÏȼÆËã»úµÄÖ÷°å±ØÐëÒªÖ§³ÖUSBÓ²ÅÌµÄÆô¶¯·½Ê½£¬²¢ÇÒËùʹÓõÄÓÅÅÌÊÇÆô¶¯ÐÍÓÅÅÌ¡£

¡¡¡¡ÎÒÒÔLinux-2.4.20ΪÀý˵Ã÷¡£±àÒëʱһ¶¨Òª×¢Òâ²»Òª±àÒë²»±ØÒªµÄÄ£¿é£¬ÈçÉù¿¨Çý¶¯µÈÇý¶¯Ä£¿é£¬Ê¹±àÒëµÄÄں˾¡¿ÉÄÜСһЩ¡£ÓÉÓÚÒªÖ§³ÖÓÅÅÌÆô¶¯£¬±ØÐ뽫SCSIÉ豸¡¢usbcore¡¢usb-storage¡¢Loopback device support¡¢RAM disk supportºÍinitrdµÈ±àÒëµ½ÄÚºËÖС£

¡¡¡¡Ðí¶àÈË»áÎÊ£¬usb-storageÄ£¿éÒѾ­°üÀ¨ÔÚÄÚºËÁËΪʲô»¹Òª½¨Á¢ initrd.imgÎļþ£¿ÕâÊÇÓÉÓÚÓÅÅ̵ijõʼ»¯¹ý³Ì±ÈÖ´ÐÐ/sbin/initÂý,µ¼ÖÂÄÚºËÒѾ­Æô¶¯Íê³ÉÁË£¬ÓÅÅÌ»¹Ã»ÓÐÍê³É³õʼ»¯¹¤×÷£¬Òò´Ë¸ùÎļþϵͳûÓмÓÔØ£¬ÕâʱִÐÐ/sbin/initÃüÁî¿Ï¶¨²»³É¹¦¡£Í¨¹ý½¨Á¢initrd.imgÎļþ£¬ÔÚÆô¶¯ÄÚºËʱ¼ÓÔØinitrd.imgÎļþµ½ÄÚ´æÖУ¬µÈ´ý3 ÃëʹÓÅÅÌÍê³É³õʼ»¯¹¤×÷£¬ÔÙÖ´ÐÐ/sbin/initÖ¸Áî¡£¾ßÌå²Ù×÷²½ÖèÈçÏ¡£

¡¡¡¡1.½¨Á¢initrd.imgÎļþ

[code]¡¡¡¡# mkdir -p /mnt/initrd
¡¡¡¡# cd /tmp
¡¡¡¡# mkinitrd /tmp/initrd.gz 2.4.20-usb[/code]

¡¡¡¡2.½âѹinitrd.imgÎļþ£¬ÐÞ¸ÄÆô¶¯½Å±¾linuxrc

[code]¡¡¡¡# gunzip initrd.gz
¡¡¡¡# mount -o loop /tmp/initrd /mnt/initrd
¡¡¡¡# cp /sbin/busybox /mnt/initrd/bin
¡¡¡¡# cd /mnt/initrd/bin
¡¡¡¡# ln -s busybox sleep
¡¡¡¡# vi /mnt/initrd/linuxrc[/code]

¡¡¡¡¼ÓÈëÈçÏÂÄÚÈÝ£º

[code]¡¡¡¡echo 'wait 3 seconds.....'
¡¡¡¡/bin/sleep 3[/code]

¡¡¡¡3.ÖØÐÂÉú³Éinitrd.imgÎļþ

¡¡¡¡ÓÉÓÚȱʡ½¨Á¢µÄinitrdÎļþ±È½Ï´ó(Ϊ4MB)£¬ÎªÁ˼ӿìÓÅÅÌµÄÆô¶¯£¬±ØÐë¼õСËü¡£¾ßÌå²Ù×÷ÈçÏ£º

[code]¡¡¡¡# mkdir -p /mnt/initrdusb
¡¡¡¡# cd /tmp
¡¡¡¡# dd if =/dev/zero of= /tmp/initrdusb bs=1M count=1
¡¡¡¡# mke2fs -m 0 initrdusb
¡¡¡¡# mount -o loop /tmp/initrdusb /mnt/initrdusb
¡¡¡¡# cp -a /mnt/initrd/* /mnt/initrdusb
¡¡¡¡# umount /mnt/initrd
¡¡¡¡# umount /mnt/initrdusb
¡¡¡¡# cd /tmp
¡¡¡¡# gzip -9 initrdusb
¡¡¡¡# cp initrdusb.gz /boot/initrd-2.4.20-usb.img[/code]

¡¡¡¡4.²âÊÔ±àÒëµÄÄÚºËÊÇ·ñÕý³£Æô¶¯

¡¡¡¡²âÊÔ±àÒëµÄÄÚºËÊÇ·ñÕý³£Æô¶¯£¬ÒÔ¼°ÔÚÆô¶¯¹ý³ÌÖÐÊÇ·ñ¿É¿´¼ûÓÅÅ̵ÄÏà¹ØÐÅÏ¢¡£

¡¡¡¡½¨Á¢ÓÅÅÌÆô¶¯ÅÌ

¡¡¡¡1.½«ÓÅÅÌ·Ö³ÉÁ½¸ö·ÖÇø

¡¡¡¡Áô¸øLinux·ÖÇøÈÝÁ¿´óСÍêȫȡ¾öÓÚ°²×°ÄÄЩϵͳά»¤¹¤¾ß£¬½á¹ûÈçÏ£º

[code]¡¡¡¡# modprobe usb-storage
¡¡¡¡# fdisk -l /dev/sda
¡¡¡¡Disk /dev/sda: 16 heads, 63 sectors, 126 cylinders
¡¡¡¡Units = cylinders of 1008 * 512 bytes
¡¡¡¡Device Boot Start End Blocks Id System
¡¡¡¡/dev/sda1 1 102 51376+ 6 FAT16
¡¡¡¡/dev/sda2 103 126 12096 83 Linux[/code]

¡¡¡¡×¢Ò⣺Èç¹ûÐèҪʹÓÃÓÅÅÌÒýµ¼Windows 98£¬ÉÈÇø´óС±ØÐëÉèÖÃΪ63¸öÉÈÇø£¬¿ÉÒÔͨ¹ýfdiskµÄxÃüÁîÀ©Õ¹ÐÞ¸Äheads¡¢sectorsºÍcylinders²ÎÊý¡£

¡¡¡¡2.½¨Á¢ÓëÉú³Éext2·ÖÇø

[code]¡¡¡¡# mke2fs -m 0 /dev/sda2
¡¡¡¡# mkdir -p /mnt/sda2
¡¡¡¡# mount /dev/sda2 /mnt/sda2
¡¡¡¡# cd /mnt/sda2[/code]

¡¡¡¡3.½¨Á¢bootĿ¼

¡¡¡¡½«±àÒëºÃµÄÄÚºËÓëinitrd-2.4.20-usb.imgÎļþ¿½±´µ½bootĿ¼¡¢±àÒëºÃµÄÄ£¿é¿½±´µ½lib/modulesĿ¼,ÒÔ¼°½«/boot/grubµÄÎļþ¿½±´µ½bootĿ¼,±à¼­boot/grub/menu.lstÎļþ,ÄÚÈÝÈçÏÂ:

[code]¡¡¡¡timeout 10
¡¡¡¡color 0x17 0x70
¡¡¡¡default 0
¡¡¡¡title Windows 98
¡¡¡¡rootnoverify (hd0,0)
¡¡¡¡makeactive
¡¡¡¡chainloader +1
¡¡¡¡title GNU/Linux Redhat 8.0 (2.4.20-usb)
root (hd0,1)
¡¡¡¡kernel /boot/vmlinuz-2.4.20-usb ro root=/dev/sda2
¡¡¡¡initrd /boot/initrd-2.4.20-usb.img[/code]

¡¡¡¡°²×°grub,¾ßÌå²Ù×÷ÈçÏ£º

[code]¡¡¡¡grub> root (hd1,1)
¡¡¡¡grub> setup (hd1)[/code]

¡¡¡¡4.½¨Á¢binĿ¼

¡¡¡¡¸ù¾Ý×Ô¹¤×÷µÄÐèÒª¿½±´ÏµÍ³Î¬»¤¹¤¾ß£¬Èçinsmod¡¢fsckºÍmkdosfsµÈʵÓóÌÐò¡£Ò»¶¨Òª×¢ÒâʹÓÃlddÃüÁî¼ì²éÄÇЩ¹²Ïí¿âÎļþ,ÕâЩÎļþÐèÒª°´ÕÕÔ­À´µÄ·¾¶¿½±´µ½libĿ¼¡£ ÓÉÓÚÊܵ½´ÅÅ̿ռäµÄÏÞÖÆ,ʹÓÃbusyboxÃüÁî´úÌæÒ»Ð©³£¼ûµÄLinuxÃüÁÖ÷ÒªÔ­Òò¾ÍÊÇbusybox Îļþ·Ç³£Ð¡£¬²¢ÇÒÊǾ²Ì¬Á´½ÓµÄ£¬°üÀ¨Ðí¶à³£¼ûµÄLinuxÃüÁÈçcat¡¢init¡¢ifconig¡¢route£©ÓÃln -s busybox½¨Á¢ÕâЩÎļþµÄ·ûºÅÁª½Ó¡£¿ÉÒÔ¸ù¾Ý¸öÈËÐèÒªÖØÐ±àÒëbusybox£¬°üÀ¨viµÈÃüÁҲ¿ÉÒÔʹÓÃСÇɵÄe3´úÌævi¡£

¡¡¡¡ÁíÍ⣬Èç¹ûʹÓÃbash£¬»¹±ØÐë±à¼­Óë²Ã¼õ/etc/termcap¼°ÈçÏÂÎļþ£º

[code]¡¡¡¡/bin/bash
¡¡¡¡/etc/termcap
¡¡¡¡/usr/share/terminfo/l/linux
¡¡¡¡/usr/share/terminfo/k/klone+acs
¡¡¡¡/usr/share/terminfo/k/klone+color
¡¡¡¡/usr/share/terminfo/k/klone+sgr[/code]

¡¡¡¡5.½¨Á¢devĿ¼

¡¡¡¡Ê¹ÓÃcp -aÃüÁ±´³£ÓõÄÉ豸Îļþ,°üÀ¨console¡¢tty1¡¢tty2¡¢tty3sda¡¢sda1¡¢sda2¡¢hda¡¢hdbºÍhda1µÈÉ豸Îļþ¡£

¡¡¡¡6.±à¼­etc/init.d/rcS

¡¡¡¡ÄÚÈÝÈçÏ£º

[code]¡¡¡¡#!/bin/sh
¡¡¡¡PATH=/sbin:/bin
¡¡¡¡export PATH
¡¡¡¡mount -n -t proc none /proc
¡¡¡¡umount /initrd
¡¡¡¡mount -n -o remount,rw /
¡¡¡¡mount -n -o remount,rw -t proc none /proc
¡¡¡¡ifconfig lo 127.0.0.1[/code]

¡¡¡¡7.±à¼­etc/fstabÎļþ

¡¡¡¡ÄÚÈÝÈçÏ£º

[code]¡¡¡¡/dev/sda2 / ext2 defaults 1 1
¡¡¡¡none /proc proc defaults 0 0[/code]

¡¡¡¡Ó¦ÓþÙÀý

¡¡¡¡¾ÙÒ»¸ö´«ËÍÎļþµÄÀý×Ó¡£ÔÚһ̨Õý³£¹¤×÷µÄLinux»úÆ÷A(IP=192.168.100.5)ÉÏÖ´ÐУº

[code]¡¡¡¡$ tar cf - win98 | nc -l -p 5555[/code]

¡¡¡¡×¢Ò⣺¿ÉÒÔÔÚ»úÆ÷BÉÏʹÓÃÓÅÅÌÆô¶¯»úÆ÷£¬telnetµÇ½µ½»úÆ÷AÉÏÖ´ÐÐÒÔÉÏÃüÁî¡£

¡¡¡¡ÔÚ»úÆ÷BÉÏʹÓÃÓÅÅÌÆô¶¯Ö´ÐУº

[code]¡¡¡¡# mount -t vfat -o codepage=938,iocharset=cp936 /dev/hda5 /mnt/2dos
¡¡¡¡# cd /mnt/2dos
¡¡¡¡# modprobe eepro00
¡¡¡¡# ifconfig eth0 192.168.1.10
¡¡¡¡# route add default gw 192.168.1.1
¡¡¡¡# ping 192.168.10.5
¡¡¡¡# nc 192.168.10.5 5555 | tar xf -[/code]

¡¡¡¡Èç¹ûÕâʱʹÓÃformat /sÃüÁîÎÞ·¨½¨Á¢ÓÅÅÌWindows 98Æô¶¯ÅÌ£¬¿ÉÒÔ²ÉÓñäͨµÄ·½Ê½£¬¾ßÌå²Ù×÷ÈçÏ£º

[code]¡¡¡¡# mkdosfs -F 16 /dev/sda1
¡¡¡¡# xxd -c 16 /dev/sda1 | less[/code]

¡¡¡¡Õâʱ¼Ç¼ÏÂBoot RecordµÄ32¡«35×Ö½ÚÄÚÈÝ£¨±¾ÀýΪ60 91 01 00£¬Õâ4¸ö×ֽڼǼÁËFAT·ÖÇø×ܵÄÉÈÇøÊýÁ¿£©£¬ÔÙʹÓÃÀÊ¿ÆËæÅÌÌṩµÄÖÆ×÷Òýµ¼Å̵Ť¾ßÖÆ×÷Windows 98Æô¶¯ÅÌ£¬È»ºóʹÓÃLinuxÏÂbvi»òÕßÄܹ»±à¼­¶þ½øÖÆÎļþµÄ¹¤¾ßÐÞ¸ÄBoot RecordµÄ32¡«35×Ö½ÚΪԭÀ´µÄÄÚÈÝ¡£ÕâÑù£¬¾ÍÄܹ»ÊµÏÖÃû¸±ÆäʵµÄÈýÆô¶¯·½Ê½£¨WindowsË«Æô¶¯£«LinuxÆô¶¯£©¡£
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 1 ÌõÆÀÂÛ

  1. Redassociation ÓÚ 2006-10-10 01:19:49·¢±í:

    ±¾ÎĽö×ö²Î¿¼Ñ§Ï°