|
|
发表于 2004-8-31 10:44:54
|
显示全部楼层
最初由 tx-cary 发表
那就不是很清楚了。不知Mandrake有没有安装到sda的方法,如果没有可能要安装在hda中以后再dd到sda。
我想了一下──该不会那则新闻指的是mandrakemove吧??那就没有多大意义了。。
楼上兄弟想得太复杂了,对Linux来说sda和hda只是kernel启动时识别的。
USB硬盘启动LINUX一种方法:
1、用普通方法安装LINUX,及硬盘接IDE。
2、重新编译KERNEL,cp到/boot/vmlinuz-usb,记得加上SCSI支持和USB支持:
<*> SCSI support
<*> SCSI disk support
<*> SCSI generic support
<*> Support for USB
<*> EHCI HCD (USB 2.0) support
<*> UHCI Alternate Driver (JE) support
<*> OHCI (Compaq, iMacs, OPTi, SiS, ALi, ...) support
<*> USB Mass Storage support
3、因USB硬盘是模拟SCSI硬盘,在有些机器上可能出现要运行init程序时sda还未准备好的情况,因此要在运行init程序前等待sda准备好,可以改KERNEL原码,也可以改initrd.img。
改initrd.img文件方法:(以redhat9为例)
在运行init前等待5秒,用busybox的话可以节约空间。
cd /boot
cp initrd-2.4.20-8.img initrd-usb.gz
gunzip initrd-usb.gz
mount -o loop initrd-usb /mnt
cd /mnt/bin
cp -a /bin/sleep .
cd ../lib
cp -a /lib/{ld-2.3.2.so,libc-2.3.2.so,libm-2.3.2.so,libpthread-0.10.so,librt-2.3.2.so,ld-linux.so.2,libc.so.6,libm.so.6,libpthread.so.0,librt.so.1} .
cd ..
echo '#!/bin/nash' > linuxrc
echo '/bin/sleep 5' >> linuxrc
cd dev
cp -a /dev/{sda,sda1,sda2,sda3} .
cd /boot
umount /mnt
gzip -9 initrd-usb
mv initrd-usb.gz initrd-usb.img
4、好了,我们有了新的KERNEL和initrd-usb.img,将它们加入grub的menu中,记住:用sda?代替hda?,hd0是USB硬盘,新加入menu中的行看起是这样:
title usb boot
root (hd0,0)
kernel /boot/vmlinuz-usb ro root=/dev/sda1
initrd /boot/initrd-usb.img
5、改/etc/fstab中的hda?为sda?
6、改其它脚本中的hda?为sda?
7、将硬盘放入USB硬盘盒中,将机器的BIOS改为USB-HDD启动要第一位。
8、OK,试试用USB硬盘启动机器
以上是我的测试的方法,正向公司请购一256M的U盘,准备将它打造为我的“super tool disk”。
good luck! |
|