制作Linux的U盤(pán)(usb)啟動(dòng)盤(pán)

USB閃存存儲(chǔ)裝置(優(yōu)盤(pán))一般只有鑰匙扣大小,存儲(chǔ)容量多為32MB和64MB。由于具有輕巧精致、使用方便、便于攜帶等優(yōu)點(diǎn),特別是對(duì)比軟盤(pán)具有容量較大、安全可靠、讀取速度較快等特性,越來(lái)越多人使用這種裝置取代了軟驅(qū)與軟盤(pán),在PC之間交換文件。目前新出的主板BIOS都支持USB軟盤(pán)和硬盤(pán)的啟動(dòng)方式,這樣對(duì)于Windows 98的系統(tǒng)維護(hù)與安裝工作越來(lái)越方便。但是,廠家僅提供制作Windows 98啟動(dòng)盤(pán)的制作工具,并不提供linux啟動(dòng)盤(pán)的制作工具。在優(yōu)盤(pán)上建立Linux啟動(dòng)盤(pán),對(duì)于系統(tǒng)維護(hù)人員具有更加實(shí)用的意義,你可以使用Linux 建立小巧的內(nèi)核,建立網(wǎng)絡(luò)環(huán)境,快速地判斷和排除網(wǎng)絡(luò)故障與傳送文件。本文以Red Hat 8.0為例,使用朗科的雙啟動(dòng)型優(yōu)盤(pán)建立優(yōu)盤(pán)的Linux啟動(dòng)盤(pán)。
下載相關(guān)軟件:e3,bvi,Liuux內(nèi)核。
編譯內(nèi)核
首先計(jì)算機(jī)的主板必須要支持USB硬盤(pán)的啟動(dòng)方式,并且所使用的優(yōu)盤(pán)是啟動(dòng)型優(yōu)盤(pán)。
我以Linux-2.4.20為例說(shuō)明。編譯時(shí)一定要注意不要編譯不必要的模塊,如聲卡驅(qū)動(dòng)等驅(qū)動(dòng)模塊,使編譯的內(nèi)核盡可能小一些。由于要支持優(yōu)盤(pán)啟動(dòng),必須將SCSI設(shè)備、usbcore、usb-storage、Loopback device support、RAM disk support和initrd等編譯到內(nèi)核中。
許多人會(huì)問(wèn),usb-storage模塊已經(jīng)包括在內(nèi)核了為什么還要建立 initrd.img文件?這是由于優(yōu)盤(pán)的初始化過(guò)程比執(zhí)行/sbin/init慢,導(dǎo)致內(nèi)核已經(jīng)啟動(dòng)完成了,優(yōu)盤(pán)還沒(méi)有完成初始化工作,因此根文件系統(tǒng)沒(méi)有加載,這時(shí)執(zhí)行/sbin/init命令肯定不成功。通過(guò)建立initrd.img文件,在啟動(dòng)內(nèi)核時(shí)加載initrd.img文件到內(nèi)存中,等待3 秒使優(yōu)盤(pán)完成初始化工作,再執(zhí)行/sbin/init指令。具體操作步驟如下。
1.建立initrd.img文件
# mkdir -p /mnt/initrd
# cd /tmp
# mkinitrd /tmp/initrd.gz 2.4.20-usb
2.解壓initrd.img文件,修改啟動(dòng)腳本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
加入如下內(nèi)容:
echo 'wait 3 seconds.....'
/bin/sleep 3
3.重新生成initrd.img文件
由于缺省建立的initrd文件比較大(為4MB),為了加快優(yōu)盤(pán)的啟動(dòng),必須減小它。具體操作如下:
# 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.測(cè)試編譯的內(nèi)核是否正常啟動(dòng)
測(cè)試編譯的內(nèi)核是否正常啟動(dòng),以及在啟動(dòng)過(guò)程中是否可看見(jiàn)優(yōu)盤(pán)的相關(guān)信息。
建立優(yōu)盤(pán)啟動(dòng)盤(pán)
1.將優(yōu)盤(pán)分成兩個(gè)分區(qū)
留給Linux分區(qū)容量大小完全取決于安裝哪些系統(tǒng)維護(hù)工具,結(jié)果如下:
# 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
注意:如果需要使用優(yōu)盤(pán)引導(dǎo)Windows 98,扇區(qū)大小必須設(shè)置為63個(gè)扇區(qū),可以通過(guò)fdisk的x命令擴(kuò)展修改heads、sectors和cylinders參數(shù)。
2.建立與生成ext2分區(qū)
# mke2fs -m 0 /dev/sda2
# mkdir -p /mnt/sda2
# mount /dev/sda2 /mnt/sda2
# cd /mnt/sda2
3.建立boot目錄
將編譯好的內(nèi)核與initrd-2.4.20-usb.img文件拷貝到boot目錄、編譯好的模塊拷貝到lib/modules目錄,以及將/boot/grub的文件拷貝到boot目錄,編輯boot/grub/menu.lst文件,內(nèi)容如下:
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目錄
根據(jù)自工作的需要拷貝系統(tǒng)維護(hù)工具,如insmod、fsck和mkdosfs等實(shí)用程序。一定要注意使用ldd命令檢查那些共享庫(kù)文件,這些文件需要按照原來(lái)的路徑拷貝到lib目錄。 由于受到磁盤(pán)空間的限制,使用busybox命令代替一些常見(jiàn)的Linux命令,主要原因就是busybox 文件非常小,并且是靜態(tài)鏈接的,包括許多常見(jiàn)的Linux命令(如cat、init、ifconig、route)用ln -s busybox建立這些文件的符號(hào)聯(lián)接??梢愿鶕?jù)個(gè)人需要重新編譯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命令拷貝常用的設(shè)備文件,包括console、tty1、tty2、tty3sda、sda1、sda2、hda、hdb和hda1等設(shè)備文件。
6.編輯etc/init.d/rcS
內(nèi)容如下:
#!/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文件
內(nèi)容如下:
/dev/sda2 / ext2 defaults 1 1
none /proc proc defaults 0 0
應(yīng)用舉例
舉一個(gè)傳送文件的例子。在一臺(tái)正常工作的Linux機(jī)器A(IP=192.168.100.5)上執(zhí)行:
$ tar cf - win98 | nc -l -p 5555
注意:可以在機(jī)器B上使用優(yōu)盤(pán)啟動(dòng)機(jī)器,telnet登陸到機(jī)器A上執(zhí)行以上命令。
在機(jī)器B上使用優(yōu)盤(pán)啟動(dòng)執(zhí)行:
# 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 -
如果這時(shí)使用format /s命令無(wú)法建立優(yōu)盤(pán)Windows 98啟動(dòng)盤(pán),可以采用變通的方式,具體操作如下:
# mkdosfs -F 16 /dev/sda1
# xxd -c 16 /dev/sda1 | less
這時(shí)記錄下Boot Record的32~35字節(jié)內(nèi)容(本例為60 91 01 00,這4個(gè)字節(jié)記錄了FAT分區(qū)總的扇區(qū)數(shù)量),再使用朗科隨盤(pán)提供的制作引導(dǎo)盤(pán)的工具制作Windows 98啟動(dòng)盤(pán),然后使用Linux下bvi或者能夠編輯二進(jìn)制文件的工具修改Boot Record的32~35字節(jié)為原來(lái)的內(nèi)容。這樣,就能夠?qū)崿F(xiàn)名副其實(shí)的三啟動(dòng)方式(Windows雙啟動(dòng)+Linux啟動(dòng))。'
相關(guān)文章
虛擬機(jī)安裝CentOS后沒(méi)有網(wǎng)絡(luò)怎么辦
虛擬機(jī)安裝CentOS后沒(méi)有網(wǎng)絡(luò)了不能上網(wǎng),該怎么設(shè)置網(wǎng)絡(luò)呢?下面我們就來(lái)看看這個(gè)問(wèn)題的解決辦法,詳細(xì)請(qǐng)看下文圖文介紹2024-01-18虛擬機(jī)怎么安裝CentOS? 安裝CentOS操作系統(tǒng)的保姆級(jí)圖文教程
虛擬機(jī)想要安裝CentOS操作系統(tǒng),但是CentOS操作系統(tǒng)已經(jīng)停止維護(hù)了,該怎么安裝呢?詳細(xì)請(qǐng)看下文圖文教程2024-01-18Centos7.8怎么更新openssh? Centos升級(jí)openssh的技巧
Centos7.8怎么更新openssh?Centos7.8系統(tǒng)想要安裝openssh,該怎么安裝呢?下面我們就來(lái)看看Centos升級(jí)openssh的技巧2023-09-02Centos7.8怎么更新openssl? CentOS升級(jí)OpenSSL的技巧
Centos7.8怎么更新openssl?Centos7.8系統(tǒng)想要升級(jí)OpenSSL,該怎么升級(jí)呢?詳細(xì)請(qǐng)看下文介紹2023-09-02- centos7沒(méi)有圖形化操作可能對(duì)很多人來(lái)說(shuō)都不太習(xí)慣,下面我們來(lái)為centos7安裝圖形化界面,本文以安裝 GNOME 圖形化為例,需要的朋友可以參考下2023-06-29
- 今天小編在安裝RHEL7的時(shí)候,一步留神沒(méi)有安裝圖形化桌面,下面分享一下安裝圖形化桌面的過(guò)程,需要的朋友可以參考下2023-06-29
CentOS7各個(gè)版本鏡像下載地址及版本說(shuō)明(包括Everything版)
下載CentOS-7.0-1406的時(shí)候,有很多可選則的版本,對(duì)于普通用戶(hù)來(lái)說(shuō),不知道選擇哪個(gè)好,下面做一下簡(jiǎn)單介紹,需要的朋友可以參考下2023-06-01Centos 7怎么手動(dòng)配置ip地址? Centos7配置IP地址的技巧
Centos 7怎么手動(dòng)配置ip地址?Centos 7系統(tǒng)想要自己配置ip地址,該怎么操作呢?下面我們就來(lái)看看Centos7配置IP地址的技巧2023-05-17- 這篇文章主要介紹了Centos 7 壓縮與解壓縮命令小結(jié),需要的朋友可以參考下2023-03-28
CentOS8使用阿里云yum源異常問(wèn)題及解決方法
由于centos8 在2022年停止服務(wù),后繼版本為8-steam。在使用阿里云的 centos8 的 yum 時(shí)報(bào)錯(cuò),這篇文章主要介紹了CentOS8使用阿里云yum源異常的解決方法,需要的朋友可以參考2022-04-19