usb 启动和移动硬盘上安装系统_1嵌入式Wince_Linux技术空间

来源:百度文库 编辑:神马文学网 时间:2024/04/27 18:16:17
usb 启动和移动硬盘上安装系统2007-10-22 09:33

原理:只要设法将 内核 和 initrd 加载到内存,就会自动搜索根分区并启动系统。

方法1:需装有 XP/2000/2003 。将 menu.lst 和 根分区中的boot文件夹 复制到主机硬盘某 FAT32 分区。将 grldr 复制到 C 盘;调整“文件夹选项”使显示 系统文件 和 隐藏文件,应看到 C 盘有个 boot.ini 文件,修改其属性,去掉“只读”;打开它,添一句 c:\grldr = GRUB4DOS ,可酌情修改 timeout ,示例如下:

[boot loader]
timeout=10
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect
c:\grldr = GRUB4DOS

保存后重启,选择 GRUB4DOS 即可。

方法2:做一张启动光盘,把 内核 和 initrd文件 刻进去,从光驱启动。原理类似,不再赘述。

相关链接

最初的做法:
http://forum.ubuntu.org.cn/viewtopic.php?t=25089&highlight=
移动硬盘启动 ubuntu live cd:
http://forum.ubuntu.org.cn/viewtopic.php?t=41781&highlight=
GRUB4DOS 的 WIKI:
http://grub4dos.sourceforge.net/wiki/index.php/Main_Page
GRUB4DOS 相关讨论:
http://bbs.znpc.net/forumdisplay.php?fid=4
用我的方法,完全可以从usb硬盘启动,
只要安装一个grub ,再设置一下menu.lst 文件就行了,
http://forum.ubuntu.org.cn/viewtopic.php?t=26167&highlight=
这样移动硬盘就只要2G就行了,
一个光盘+交换分区文件共1G,
其余1G用来保存数据,

楼主没有必要制作两个initrd文件,可用一个文件测试是不是第一次启动

把run_scripts /scripts/casper-premount 改为

 

 

代码: if [ ! -e $rootmnt/etc/fist ]; then
     touch    $rootmnt/etc/fist
     run_scripts /scripts/casper-premount
fi

if [ -e $rootmnt/etc/fist ]; then
     run_scripts /scripts/poasfpoa
fi

原贴:
http://forum.ubuntu.org.cn/viewtopic.php?t=25089


06.11.26修改:“为移动硬盘安装GRUB”一步建议换用GRUB FOR DOS。


GRUB FOR DOS简介

GRUB4DOS是国内一位叫“不点”的大侠开发的,基于GNU GRUB,并对其做了改进和扩展,比GNU GRUB更稳定,功能更强,所以fans众多(包括我啦),也有国际友人将其介绍到国外,正应了国家大力倡导的“走出去”战略,势头大好。开发者不点(英文名tinybit),水平颇高且极有个性,据说至今不用手机,没有QQ,有邮箱但很少看,在网上从不显露真实资料,所以很难找到 :)

GRUB4DOS最初的意图是作一个可以在DOS下使用的grub,这一点从它的名字就可看出来。随着开发的不断深入,其功能越来越强,适用范围越来越广,以至于有人称之为GRUB FOR ALL。DOS(linux)用户可以通过执行它的grub.exe(grub)文件进入grub环境;windows 2000/XP用户则可使用grldr,只要简单的几个步骤,就能通过windows的启动菜单进入到GRUB环境,极其方便,网上广为流传的矮人dos工具箱、MAXDOS等软件都是基于grldr。它还拥有强大的磁盘仿真功能。

而作为linux使用者,我最关心最喜欢也最看好的,则是bootlace和grldr的组合。因为:

1、它们在一起构成了独立的、完整的多引导管理器
grub.exe和grub分别需要借助DOS和LINUX才能进入grub环境,而grldr单独使用时也需ntldr的引导,它们都不是独立的。有了bootlace.com就不同了。这是个两栖文件,可以在DOS或linux下执行,内含grldr.mbr引导代码,并可将其写入硬盘mbr。此引导代码有识别FAT/EXT文件系统的能力,被执行后将check所有的硬盘、所有的分区(不管是主盘还是从盘,不管是主分区还是逻辑分区,不管是隐藏的还是活动的),只要其文件系统是FAT12/FAT16/FAT32/EXT2/EXT3中的一种,就能识别出来,然后查找其根目录是否存在grldr文件,若存在便加载到内存。
grldr与GNU GRUB的stage2功能类似,它会进一步寻找menu.lst文件,先找它自身所在的分区根目录(这点与GNU GRUB不同),如果找不到,则又会查找所有的硬盘、所有的分区,而这次就不限于上面所列的文件系统了,grldr可以识别更多的文件系统。找到menu.lst之后,我们就能看见GRUB菜单了。

2、其引导过程比原版的GNU GRUB更稳健,更灵活
众所周知,GNU GRUB是非常优秀的,其优点无须多言。但它也有不可忽视的缺点:引导过程步骤太多,mbr》stage1》stage1.5》stage2》linux内核,增大了出错的几率;其中好几步是通过读取绝对扇区来进行的,没能利用文件系统,限制了灵活性。
对此grub for dos做了改进。从上面的描述可以看到,其引导过程是从mbr直接到grldr,然后就可以加载内核了,步骤简洁,出错更少。并且由于mbr引导代码能识别文件系统,大大增强了灵活性。

3、grldr比原版的GNU GRUB在功能上有所扩展,比如磁盘仿真、光驱启动等。grub for dos中同时发布了支持中文的版本,方便国人用户。


唯一的限制是,grldr所在分区的文件系统格式必须是FAT12/FAT16/FAT32/EXT2/EXT3中的一种。所以有可能需要专门设一个boot分区,来存放grldr。不过在我看来这是值得的,一点小麻烦换来了更多的方便和稳定。




为移动硬盘安装GRUB FOR DOS:

1、获取文件

从以下页面下载GRUB FOR DOS,注意下载链接在页面的最下方,找其中最新的下下来即可。我下的是grub_for_dos-2006-11-23。压缩包里有很多文件,而我们只用其中的两个:bootlace.com和grldr。

http://grub4dos.jot.com/WikiHome


2、写入mbr

假设移动硬盘为/dev/sda(注意:如果主机上接有sata硬盘,移动硬盘可能会被认成/dev/sdb或/dev/sdc,一定要搞清楚)。假设bootlace.com所在的目录为/media/hda1/。运行命令:

sudo /media/hda1/bootlace.com /dev/sda

注意一定要打全路径,如果打成sudo bootlace.com /dev/sda,即使你的当前目录就是bootlace.com所在的目录,也是不行的。


3、存放grldr和menu.lst文件

在移动硬盘上找一个或建一个fat16/fat32/ext2/ext3格式的分区,将grldr文件拷至其根目录,并在同一目录下建立相应的配置文件menu.lst。






本文将描述两种方案:

一、使移动硬盘具有和live cd一样的功能,可通过usb接口启动,运行,安装至主机内置硬盘,当然前提是电脑支持usb启动。

二、使移动硬盘具有类似live cd的功能,可通过usb接口启动、运行;与live cd不同的是,对此系统所作的修改将会保存下来,而不会像live cd那样一重启就恢复原状。

两种方案对各种不同版本的ubuntu live cd应该都适用。我是用hiweed 1.0做的试验,所以就以它为例来描述了。向hiweed致敬。




第一种方案实现起来比较简单:

首先,将live cd中的casper文件夹拷至移动硬盘某fat32分区(ext2或ext3或reiserfs分区亦可)。

然后,将GRUB FOR DOS安装至移动硬盘。请参照帖子开头的描述。

menu.lst内容如下(其中的*号请根据自己的情况换成合适的数字):

timeout 6
default 0
fallback 1

title live cd
root (hd0,*)
kernel /casper/vmlinuz boot=casper ramdisk_size=1048576 root=/dev/ram rw splash
initrd /casper/initrd.gz

title live cd xforcevesa
root (hd0,*)
kernel /casper/vmlinuz boot=casper xforcevesa ramdisk_size=1048576 root=/dev/ram rw splash
initrd /casper/initrd.gz


这样就好了。

老大,我用ubuntu6.10,按四个步骤做,开机引导后出现menu list,选任何一行然后报错,好象说指定的分区找不到。menu.lst是照楼主的抄的,把(hd0,*)改成(hd0,3)。

又试把(hd0,3)改成(sda,3),说什么error number when phrasing(句子没记住)

initrd.usb用的是10楼的。

怎么办?

*已经解决,可以启动了。
楼主贴的menu.lst中二个文件名和6.10的不一样,改了就行。
分区数字,在我的盘上改成(hd0,2),就行。

**所用的6.10版本,改了屏幕分辫率,就自动log out了。不知何故?



类别:Ubunut | 添加到搜藏 | 浏览(2473) | 评论 (1) 上一篇:移动硬盘安装 linux 的可行性及...    下一篇:硬盘安装Ubuntu 7.10