黑客风云——风云网络
设为首页 加入收藏 我要投稿 网站地图

您现在的位置: 黑客风云 >> 黑客文章 >> 操作系统 >> LINIX UNIX >> 正文
·完美空间提供500M免费AS04-10·企业安全之YY内网准入以04-09
·企业安全之意识与策略04-09·剑走偏锋:IIS漏洞利用04-09
·我来免费网提供100M免费04-09·1122mb.com提供20G超大免04-08
·映像劫持与反劫持技术04-07·让所有"暴力删除工具"无04-07
·入侵88red系统的详细过程04-07·Sql Injection脚本注入终04-07
·vbs+delphi 反弹后门生成04-07·飞讯网提供100MB免费PHP04-07
·突破SQL注入攻击时输入框04-04·结合内核和病毒技术的最04-04
·Real Player rmoc3260.d04-04·亿万网络今月最后为您提04-04
·php+mysql 5 sql inject04-03·Real Player rmoc3260.d04-03
·oblog文件下载漏洞04-03·免费啦提供1G-2G免费全能04-03
·完全解析网页后门和挂马04-02·一句话开3389(只测试过04-02
·萧萧免费空间网提供100M04-02·谷道免费空间网提供1G免04-01
·从本地入手解决双线路由03-31·sablog 1.6 多个跨站漏洞03-31
·富文本编辑器的跨站脚本03-31·Cookie注入是怎样产生的03-31
[推荐]从USB移动硬盘上引导Portable Linux详解
      ★★★★

从USB移动硬盘上引导Portable Linux详解

文章整理发布:黑客风云 文章来源:www.05112.com 更新时间:2007-7-27 9:17:37

 

#cd ..(回到newinitrd目录下)

#vi init 开始修改:

以下是我的init文件,请不要直抄而是按你的init的当前情况修改:

#!/bin/nash

mount -t proc /proc /proc (这里是第一个关键,有可能有些版本的mkinitrd会把这个mount放在后面,这样usb模块的加载有可能就不能正常工作)

setquIEt

echo Mounting proc filesystem

echo Mounting sysfs filesystem

mount -t sysfs /sys /sys

echo Creating /dev

mount -o mode=0755 -t tmpfs /dev /dev

mkdir /dev/pts

mount -t devpts -o gid=5,mode=620 /dev/pts /dev/pts

mkdir /dev/shm

mkdir /dev/mapper

echo Creating initial device nodes

mknod /dev/null c 1 3

mknod /dev/zero c 1 5

mknod /dev/systty c 4 0

mknod /dev/tty c 5 0

mknod /dev/console c 5 1

mknod /dev/ptmx c 5 2

mknod /dev/rtc c 10 135

mknod /dev/tty0 c 4 0

mknod /dev/tty1 c 4 1

mknod /dev/tty2 c 4 2

mknod /dev/tty3 c 4 3

mknod /dev/tty4 c 4 4

mknod /dev/tty5 c 4 5

mknod /dev/tty6 c 4 6

mknod /dev/tty7 c 4 7

mknod /dev/tty8 c 4 8

mknod /dev/tty9 c 4 9

mknod /dev/tty10 c 4 10

mknod /dev/tty11 c 4 11

mknod /dev/tty12 c 4 12

mknod /dev/ttyS0 c 4 64

mknod /dev/ttyS1 c 4 65

mknod /dev/ttyS2 c 4 66

mknod /dev/ttyS3 c 4 67

echo Setting up hotplug.

hotplug

echo Creating block device nodes.

mkblkdevs

echo "Loading jbd.ko module" (从这里开始,依次先加载jdb和ext3,文件系统支持)

insmod /lib/jbd.ko

echo "Loading ext3.ko module"

insmod /lib/ext3.ko

echo "Loading scsi_mod.ko module" (再加载scsi支持,其实前面我漏了一个,scsi_mod.ko的复制,要真完只是抄,估计不一定能做成功)

insmod /lib/scsi_mod.ko

echo "Loading sd_mod.ko module"

insmod /lib/sd_mod.ko

echo "Loading BusLogic.ko module" (这是VMWare虚拟机要用的BusLogic驱动,如果不是为了同一个内核也启动在VMWare里,那这个删了或没有或省去都不重要)

insmod /lib/BusLogic.ko

insmod /lib/usbcore.ko (从这里依次加载usb核心模块、1.1总线支持、2.0总线支持、最后加载usb-storage)

echo "Loading USB 1.1 Host Driver"

insmod /lib/uhci-hcd.ko

echo "Waiting for Device Ready"

echo "Loading USB 2.0 Host Driver"

insmod /lib/ehci-hcd.ko

echo "Waiting for Device Ready"

echo "Loading USB-Storage Driver"

insmod /lib/usb-storage.ko

(关键在这里,加载完usb-storage后不能马上继续引导,要等数秒钟让设备就序)

sleep 10

insmod /lib/ub.ko

(我这里是启动了一个ash来等着调试,实际使用完全不需要)

busybox ash

mkblkdevs

resume LABEL=SWAP-sda6

echo Creating root device.

mkrootdev -t ext3 -o defaults,ro sda5

echo Mounting root filesystem.

mount /sysroot

echo Setting up other filesystems.

setuproot

echo Switching to new root and running init.

switchroot

这里是2.6核心的,相对来说,2.6带的usb驱动适应能力也比2.4的强了一些,在2.4版下,我试过需要先加载usbcore,再加载usb-storage(己经支持存储设备而没有发现设备),再加载uhci-hcd,让设备进入1.0总线,并等待10秒,再加载ehci-hcd,让设备离开1.0总线进入2.0总线,并等待10秒,最后才加载scsi-sd,得到scsi硬盘设备,还得再用sfdisk -R /dev/sda强制重新读取硬盘分区。

第十步也是最后一步,把整个newinitrd目录重新新成initrd.img文件并放回boot目录下,向grub.conf增加一个2.6.21从usb引导的选择项。并重启测试其正常情况:

保持在newinitrd目录下:

#findall . | cpio --quiet -c -o > ../usbboot

#cd ..

#gzip -9 usbboot

#cp usbboot.gz /boot/initrd-2.6.21.1-usb.img

这个时候,/boot下就有一个可用于从USB硬盘上引导的initrd镜像了。

最后就是修改grub.conf了:

cat /etc/grub.conf

title Fedora Core (2.6.21.1)

root (hd0,0)

kernel /vmlinuz-2.6.21.1 ro root=LABEL=/

initrd /initrd-2.6.21.1.img

title Fedora Core USB Boot(2.6.21.1)

root (hd0,0)

kernel /vmlinuz-2.6.21.1 ro root=LABEL=/

initrd /initrd-2.6.21.1-usb.img

我只是复制了原来的一个引导项,相应地把initrd这一行改成了新的文件名,把title加上了USB Boot字样,其它的原样照搬。

到这里就可以shutdown虚拟机里的操作系统,关闭虚拟机,重启电脑,选择从移动硬盘上启动,顺利的话,你的移动硬盘上的Linux就引导起来了。

后话:

其实我认为完全可以通过修补mkinitrd就能做直接编译完内核后make install生成支持从USB移动硬盘上引导的内核来,估计已经有linux爱好者和开发者完成了这项工作,不过玩和用linux的其中一个乐趣就是通过动手来了解系统的原理,因此我也没有动手去改mkinitrd。

如果成功地从移动硬盘上引导了Linux后,再装上VMWare For Linux或是再用qemu,又可以从虚拟机里引导出宿主机盘上的windws来了,只不过,我的本本上装的是OEM版的XP,引导后由于硬件环境改变,该死的M$要求我激活它(想想我也没有违反最终用户许可协议吧,在不同时使用的情况下有权在另一台机器上安装同样的副本以作备用,而且....我用的是同一台机器呀。)怀念使用盗版Windows 2K的时候。

在Linux下的虚拟机中引导出原来宿主机上的Windows来的时候,这样的系统,什么时候谁是谁的宿主,谁是谁的寄生虚拟?

上一页  [1] [2] 

文章录入:liult    责任编辑:liult 
【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
VIP 专 区
Copyright @2006 黑客风云 ●业务联系:QQ 联系怪人 联系奇人 Email:给怪人发邮件 给奇人发邮件
ICP备案:冀06009886