U盘多重开机(MBR)
ubuntu吧
全部回复
仅看楼主
level 12
peterliu1218 楼主
这不是直接安装在U盘,而是引导U盘中的 iso 文件开机。
此外,有吧友询问如何U盘启动DOS,所以同时把DOS列入多重开机的选单。
有点复杂....
其中重要步骤我会多做说明:
2014年06月21日 14点06分 1
level 12
peterliu1218 楼主
1. 插入U盘,假设装置名为 /dev/sdc
2. 以 gparted 分区:
/dev/sdc1 FAT16 300Mb (可作为之后 dos 储存档案之用,虽然FAT16的上限是 4Gb,但早期的Windows系统与DOS最多只能读取到 2Gb,所以请注意大小不要太大)
/dev/sdc2 FAT32 4Gb (放置系统iso之用,请自己计算 /dev/sdc2 大约需要容量,每个系统,除了iso的容量,还要再加上暂存空间,可让你重新启动时,不会丢失之前的设置与安装的软件,容后说明。还有一个重点,这个分区在系统开机后,会被锁住,所以你无法在此存取文件)
/dev/sdc3 FAT32 2Gb (方便文件储存,可於各电脑或系统之间存取,因为放iso的那个分区会被锁住,所以这个额外的FAT32分区,是相当必要的)
/dev/sdc4 swap 1Gb(遇到内存较低的电脑时,可供linux使用)
假如还需要其他分区,请记得swap放在逻辑分区,不要占用主分区,因为MBR主分区最多只能4个,占用了就无法做延伸分区与逻辑分区)
2014年06月21日 14点06分 2
我u盘只有2GB,可不可以300MB的DOS,其他都ISO,我主要引导PE
2014年06月21日 22点06分
回复 廖1显2然 : 可以。swap非必须;暂存文件可以拿掉;文件储存分区也可用使用那300mb,所以2G绝对够用。
2014年06月22日 01点06分
回复 peterliu1218 :完成了,可以直接引导PE,因为PE的iso本来就是DOS+grub4dos启动 U盘快满了
2014年06月22日 01点06分
@peterliu1218 windows会优先挂载哪个分区?
2015年07月22日 13点07分
level 12
peterliu1218 楼主
3. 挂载 /dev/sdc2:
sudo mount /dev/sdc2 /mnt
4. 新增相关文件夹
sudo mkdir /mnt/boot
sudo mkdir /mnt/ubuntu
sudo mkdir /mnt/dos
5. 复制开机 iso 文件 (请自行修改文件位置与名称)
sudo cp ~/Download/ubuntu-14.04-desktop-amd64.iso /mnt/ubuntu/trusty64.iso
sudo cp ~/Download/DOS6.22_bootdisk.iso /mnt/dos/dos622.iso
*** DOS6.22_bootdisk.iso 取自:http://www.allbootdisks.com/download/iso.html
6. 安装grub到开机区
sudo grub-install --force --no-floppy --boot-directory=/mnt/boot /dev/sdc
2014年06月21日 14点06分 3
level 12
peterliu1218 楼主
7. 编辑grub菜单(上一步不会安装grub.cfg,你必须自己新增),sudo gedit /mnt/boot/grub/grub.cfg,放入以下内容:
set timeout=20
set default=0
menuentry "Ubuntu 14.04 -- LIVE SYSTEM" {
loopback loop /ubuntu/trusty64.iso
linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=/ubuntu/TRUSTY64.iso noeject noprompt splash persistent persistent-path=/ubuntu/ --
initrd (loop)/casper/initrd.
lz

}
menuentry "DOS 6.22" {
insmod memdisk
linux16 /boot/memdisk iso
initrd16 /dos/dos622.iso
}
这边特别介绍一下上头用在 ubuntu 的 menuentry 结构,真的理解了,所有Debian系的发行版 menuentry 你应该都可以自己试出来。
loopback loop /ubuntu/trusty64.iso
挂载位於/ubuntu的trusty64.iso,所以你放在其他地方,就把目录改到其他地方。
linux (loop)/casper/vmlinuz.efi
内核是iso中的casper文件夹下的vmlinuz.efi。你可以另外挂载ubuntu iso文件,看看里面的内容,搜寻vmlinuz的实际位置与文件名。假如你去找12.04的iso,你会发现,他同样位置在casper下,但文件名称没有后面的.efi,所以你应该把他改为"linux (loop)/casper/vmlinuz"。
boot=casper iso-scan/filename=/ubuntu/TRUSTY64.iso
boot=casper 指定 casper 目录为 /boot,是传递给内核的参数。在哪里?在 /ubuntu/TRUSTY64.iso 里
noeject noprompt splash
这个自己查询,可省略
persistent persistent-path=/ubuntu/
这个就是把所有变更,放入暂存文件,下次开机时,可回复到最后关机的状态。暂存文件在/ubuntu下。
这个暂存文件有特定名称:casper-rw。若是少了这群参数,所有变更在关机后,完全消失。此外还有一个特定文件:home-rw,这个会把所有/home的变更,储存在此文件。概念有点像/home要不要额外分区。还有一点要注意,假如当初你/dev/sdc2是格式化成ext格式,这个档案会无法存取。
2014年06月21日 14点06分 4
level 12
peterliu1218 楼主
8. 做一个暂存文件,即前面所称重新开机可以保留设置的暂存:
sudo dd if=/dev/zero of=/mnt/ubuntu/casper-rw bs=1M count=512
sudo mkfs.ext4 /mnt/ubuntu/casper-rw
bs x count 就是caper-rw的大小,所以 1M x 512 = 512Mb。想要大一点可以自行改变count,再提醒一次,档名casper-rw不可以换成其他名称
9. 前面DOS的menuentry,有一行"linux16 /boot/memdisk iso",memdisk是一个开启镜像系统的工具。(据说winPE也可以...但,我没有windows可测试)
你可以在网路上搜寻 kernel syslinux,找到syslinux的最新版本,下载后解压缩,在bios/memdisk文件夹下,有一个memdisk文件,然后.....(网路上的教程是如此教你的...)
其实没这麼麻烦,因为你的系统已经安装syslinux,所以:
sudo cp /usr/lib/syslinux/memdisk /mnt/boot
假如你所要开启的系统不是iso文件,而是img文件,请把"linux16 /boot/memdisk iso"改为"linux16 /boot/memdisk raw"
关闭所有程序,关机,U盘开机即可。
2014年06月21日 14点06分 5
pe的确可以,老毛桃pe可以这样引导进他的DOS,再从grub4dos加载ramdisk
2014年06月22日 00点06分
回复 廖1显2然 : 网路上可找到memdisk引导pe的教程,但我没有测试,所以要先说明一下。
2014年06月22日 01点06分
回复 peterliu1218 :我发现直接用引导DOS的方法有时加载不了b盘,b盘里面都是工具呀,难道要在b盘正常时把工具复制到c盘?对了我怀疑iso有点问题,虚拟机也偶尔发生这种情况,不过没这么多
2014年06月22日 10点06分
回复 廖1显2然 : 重下一个试看看。其实这些DOS或其衍生版本,大多年代久远,或是缺乏维护,许多都有问题,不一定是iso的问题。
2014年06月22日 10点06分
level 12
peterliu1218 楼主
DOS开机会在A:\
因为我们之前有格式化一个FAT16的分区,他会侦测到,所以你C: 之后,就可以进入 C:\
打完收功...
@廖1显2然
2014年06月21日 14点06分 6
level 9
按照你的方法,我制作了4系统的u盘:英语DOS(你发的,完全不知道怎么显示中文),深山红叶DOS(好东西,不过没试过),老毛桃PE(XP版,不认网卡),ubuntu(怎么是英语的?)
2014年06月22日 03点06分 7
DOS系统要使用中文,必须安装汉字系统(你应该没有用过真的DOS系统吧...20年前就是如此),不过现在要找到应该不容易。ubuntu到setting>language去设定,注销重登入即可。假如你有casper-rw就可以保存设置。
2014年06月22日 03点06分
level 13
u盘的话还是grub4dos简单点
2014年06月22日 04点06分 8
我觉得差不多,困难都是出在grub.cfg或menu.lst的编写,我想很多人都是卡在这个地方...[勉强]
2014年06月22日 04点06分
回复 peterliu1218 :当年grub4dos多火啊,不过现在不支持uefi所以热气消了。好久都没搞过了命令都忘得差不多了
2014年06月22日 04点06分
话说,用 uefi + grub2 来U盘多重开机,我还没试过....下次来试看看
2014年06月22日 05点06分
回复 peterliu1218 :以前用loopback引导DOS,失败了
2014年06月22日 10点06分
level 14
[真棒]
2014年06月22日 04点06分 9
level 8
给赞,不过大哥,那个dos系统有什么用啊?我进入c盘命令行就用不了了啊。。。
2014年06月22日 12点06分 10
就是一个空白的DOS系统而已,要什麼软件要自己找...或许你可以找一些很早期的游戏玩玩...再早个十年,还有一些Windows系统的问题,可以依靠DOS来解决,现在顶多用在一些旧硬件或者「怀念当年」吧[勉强]
2014年06月22日 13点06分
DOS一样有PATH的设置,有些软件要正确设置PATH才能正常执行。
2014年06月22日 13点06分
level 1
做过类似的,比较纠结的是某些发行版不能通过iso启动 (不一定是桌面,我主要是为了做安装盘) centos 好像就不行
2014年06月23日 07点06分 11
我试看看。有答案再回答你。
2014年06月23日 15点06分
CentOS 请看楼下...
2014年06月24日 06点06分
level 12
peterliu1218 楼主
CentOS很奇特,我已经有答案,但这个答案我不喜欢...(应该还有其他解决方式...)
我使用的是 CentOS-6.5-x86_64-minimal.iso
放在第一层(不能放在文件夹下,否则无法完成安装...)
还有必须把iso文件中的/images/install.img复制出来,放在分区的images文件夹之下。
如下图:
menuentry相对就非常简单
menuentry "CentOS 6.5 Minimal" {
loopback loop /CentOS-6.5-minimal.iso
linux (loop)/isolinux/vmlinuz
initrd (loop)/isolinux/initrd.img
}
安装时,会问你installation media在哪?
你要选harddisk,选择install.img所在的分区,下头的文件夹位置不用填,他会自己抓。假如你用其他的文件夹或文件名,即使你填入文件夹位置他也找不到....(这应该是bug吧...)
2014年06月24日 06点06分 12
惊奇你怎么试出来的。。。我弄这个一直不清楚原理,测试也比较麻烦,经常咬牙切齿的。。。, 另外,同一发行版的不同版本的iso有时也有区别
2014年06月24日 06点06分
回复 madpc : linux与initrd那两行,CentOS刚好就是基本架构,一般就是开机了看错误讯息,开始加参数。除了kernel官方的参数,各发行版也会有自己的内核补丁带来的参数,这些只要上网查即可,如"fedora kernel parameters"。CentOS刚好不需要参数。
2014年06月24日 07点06分
回复 madpc : 有些参数与内核版本或者发行版补丁有关,所以会造成你所说的情形。CentOS-Live 也不一样,不过我还没完全试出来,会跑到一半卡住...以后有时间再试...
2014年06月24日 07点06分
回复 madpc : 其实这个过程,对系统的了解会很有帮助。我通常把他当作娱乐活动,还蛮有趣的。
2014年06月24日 07点06分
level 9
问一下为什么deepin2014不行?好像也是debian系的
2014年06月30日 02点06分 13
level 6
马克
   --南京伟高电子,淘宝至尊信誉。qq群:291319481
2014年08月13日 00点08分 14
level 7
好东西啊,找了好久,还是用楼主给的链接过来的,虽然说是老帖子,但这种东西,我觉得顶一下没什么不可以的吧。
2016年06月18日 10点06分 15
1