製作Linux的優盤(usb)啟動盤

2021-06-15 20:53:53 字數 4623 閱讀 4098

usb快閃儲存器儲存裝置(優盤)一般只有鑰匙扣大小,儲存容量多為32mb和64mb。由於具有輕巧精緻、使用方便、便於攜帶等優點,特別是對比軟盤具有 容量較大、安全可靠、讀取速度較快等特性,越來越多人使用這種裝置取代了軟碟機與軟盤,在pc之間交換檔案。目前新出的主機板bios都支援usb軟盤和硬碟 的啟動方式,這樣對於windows 98的系統維護與安裝工作越來越方便。但是,廠家僅提供製作windows 98啟動盤的製作工具,並不提供linux啟動盤的製作工具。在優盤上建立linux啟動盤,對於系統維護人員具有更加實用的意義,你可以使用linux 建立小巧的核心,建立網路環境,快速地判斷和排除網路故障與傳送檔案。本文以red hat 8.0為例,使用朗科的雙啟動型優盤建立優盤的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。

/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啟動)。 

製作linux的優盤(usb)啟動盤

usb 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 c...

USB啟動盤製作教程

一路下一步吧 ok,啟動工具,首先是格式化u 盤使用fat32 格式化u盤,要求確認,確認即可 格式化完成後的乙個報告 關閉該嚮導 進入下一步準備工作 選擇碟符,開始製作 開始拷貝檔案,拷貝檔案後即完成 ok,退出工具 ok,重啟電腦 進入bios 的啟動項選擇,我們可以看到第三項是usb 啟動盤啦...

Rufus製作USB啟動盤

其實 rufus 的製作原理是,將u盤分成了兩個區,乙個是 fat32 分割槽,裡面用於存放 uefi 系統啟動檔案,乙個分割槽是 ntfs 格式,用於存放完整的系統映象檔案,這樣一來就魚和熊掌可兼得了。既然知道了 rufus 的製作原理,我們不借助工具也能完成以上的步驟,1 手動給 u 盤分割槽,...