USB啟動 Linux作業系統

來源:互聯網
上載者:User
USB快閃記憶體儲存裝置(優盤)由於具有輕巧精緻、使用方便、便於攜帶等優點,特別是對比磁碟片具有容量較大、安全可靠、讀取速度較快等特性,越來越多人 使用這種裝置取代了軟碟機與磁碟片,在PC之間分頁檔。目前新出的主板BIOS都支援USB磁碟片和硬碟的啟動方式,這樣對於Windows的系統維護與安裝 工作越來越方便。但是,廠家僅提供製作Windows 98啟動盤的製作工具,並不提供linux啟動盤的製作工具。在優盤上建立Linux啟動盤,對於系統維護人員具有更加實用的意義,你可以使用Linux 建立小巧的核心,建立網路環境,快速地判斷和排除網路故障與傳送檔案。本文以Red Hat 為例,使用朗科的雙啟動型優盤建立優盤的Linux啟動盤。

  下載相關軟體:e3,bvi,Linux核心。

  編譯核心

  首先電腦的主板必須要支援USB硬碟的啟動方式,並且所使用的優盤是啟動型優盤。

  我以Linux-2.4.20為例說明。編譯時間一定要注意不要編譯不必要的模組,如音效卡驅動等驅動模組,使編譯的核心儘可能小一些。由 於要支援優盤啟動,必須將SCSI裝置、usbcore、usb-storage、Loopback device support、RAM disk support和initrd等編譯到核心中。

  許多人會問,usb-storage模組已經包括在核心了為什麼還要建立 initrd.img檔案?這是由於優盤的初始化過程比執行/sbin/init慢,導致核心已經啟動完成了,優盤還沒有完成初始化工作,因此根檔案系統 沒有載入,這時執行/sbin/init命令肯定不成功。通過建立initrd.img檔案,在啟動核心時載入initrd.img檔案到記憶體中,等待3 秒使優盤完成初始化工作,再執行/sbin/init指令。具體操作步驟如下。

  1.建立initrd.img檔案


   
  # mkdir -p /mnt/initrd
  # cd /tmp
  # mkinitrd /tmp/initrd.gz 2.4.20-usb

  2.解壓initrd.img檔案,修改啟動指令碼linuxrc


  # 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

  加入如下內容:


  echo 'wait 3 seconds.....' 
  /bin/sleep 3

  3.重建initrd.img檔案

  由於預設建立的initrd檔案比較大(為4MB),為了加快優盤的啟動,必須減小它。具體操作如下:


  # 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

  4.測試編譯的核心是否正常啟動

  測試編譯的核心是否正常啟動,以及在啟動過程中是否可看見優盤的相關資訊。

 
建立優盤啟動盤

  1.將優盤分成兩個分區

  留給Linux分區容量大小完全取決於安裝哪些系統維護工具,結果如下:


  # 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

  注意:如果需要使用優盤引導Windows 98,扇區大小必須設定為63個扇區,可以通過fdisk的x命令擴充修改heads、sectors和cylinders參數。

  2.建立與產生ext2分區


   
  # mke2fs -m 0 /dev/sda2
  # mkdir -p /mnt/sda2
  # mount /dev/sda2 /mnt/sda2
  # cd /mnt/sda2

  3.建立boot目錄

  將編譯好的核心與initrd-2.4.20-usb.img檔案拷貝到boot目錄、編譯好的模組拷貝到lib/modules目錄,以及將/boot/grub的檔案拷貝到boot目錄,編輯boot/grub/menu.lst檔案,內容如下:


  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

  安裝grub,具體操作如下:


  grub> root (hd1,1) 
  grub> setup (hd1)

 

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及如下檔案:


  /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

  5.建立dev目錄

  使用cp -a命令拷貝常用的裝置檔案,包括console、tty1、tty2、tty3sda、sda1、sda2、hda、hdb和hda1等裝置檔案。

  6.編輯etc/init.d/rcS

  內容如下:


  #!/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

  7.編輯etc/fstab檔案

  內容如下:


  /dev/sda2 / ext2 defaults 1 1 
  none /proc proc defaults 0 0

  應用舉例

  舉一個傳送檔案的例子。在一台正常工作的Linux機器A(IP=192.168.100.5)上執行:


  $ tar cf - win98 | nc -l -p 5555

  注意:可以在機器B上使用優盤啟動機器,telnet登陸到機器A上執行以上命令。在機器B上使用優盤啟動執行:


  # 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 -

  如果這時使用format /s命令無法建立優盤Windows 98啟動盤,可以採用變通的方式,具體操作如下:


  # mkdosfs -F 16 /dev/sda1 
  # xxd -c 16 /dev/sda1 | less

  這時記錄下Boot Record的32~35位元組內容(本例為60 91 01 00,這4個位元組記錄了FAT分區總的扇區數量),再使用朗科隨盤提供的製作引導盤的工具製作Windows 98啟動盤,然後使用Linux下bvi或者能夠編輯二進位檔案的工具修改Boot Record的32~35位元組為原來的內容。這樣,就能夠實現名副其實的三啟動方式(Windows雙啟動+Linux啟動)。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.