我是神仙 发表于 2011-11-25 14:03:13

怎样用GRUB4dos启动那个CDLinux,用ISO

有用过CDLinux的吗?暂时很想在U盘用一下这个。

用光盘倒是可以启动CDLinux,现在是想用grub4dos来加载iso文件。

总是只能启动到字符界面,然后就提示:can't find out where CDLinux is installed

百度了很久,倒是有不少人提相同问题,但都没解决啊

用过的语句:


title CDlinux1 (ISO emulation)
find --set-root /boot.ini
map --mem /cdlinux.iso (hd32)
map --hook
kernel (hd32)/CDlinux/bzImage CDL_DEV=hd1 quiet CDL_LANG=zh_CN.UTF-8 CDL_DIR=/ CDL_IMG=cdlinux.iso
initrd (hd32)/CDlinux/initrd
map --unhook
boot



----------------
补充一下:
我现在是在vmware(7.1)里面装的一个Windows系统(2003),然后在c:\放了个grldr,
然后在boot.ini中加了个c:\grldr=GRUB,这样调用的GRUB
希望有在虚拟机中这样测试成功过的同学指教一下。。。


--
基本解决,谢谢大家。

记录一下,主要有三点,
一是用虚拟机VMware测试时,硬盘不要用SCSI格式,要用IDE格式
二是命令上要加参数, CDL_DEV,CDL_DIR, CDL_IMG
三是参数指定目录和文件时大小写要注意,必须和实际的一致

实在好奇的话,找出文件/etc/rc.d/rc.extra看一下就知道了,
CDL_DEV,CDL_DIR, CDL_IMG这些参数就是用来帮助搜索光盘文件的。
CDL_DEV用于搜索磁盘,一般用不着,不指定的话有脚本会自动搜索每个磁盘
CDL_DIR为指定的目录,启动时会自动在每个磁盘搜索是否有这个目录
CDL_IMG为指定的ISO文件名,启动时会搜索上面指定的目录下是否有这个文件

就是组合文件名 /磁盘/目录/文件名 一定要存在,
找到这个文件后CDlinux启动后会自动mount这个iso文件到 /media/__CD__ 以便使用。
找不到的话,当然就会报错了:can't find out where CDLinux is installedMNT_DIR=`grep -w "^$REAL_DEV" /etc/mtab | awk '{print $2}'`


CDL_IMG_DIR="$CDL_DIR"

IMG_MNT=/media/__CDL__

mkdir -p "$IMG_MNT" &&

mount -o loop,ro "$MNT_DIR/$CDL_DIR/$CDL_IMG" "$IMG_MNT"

看来是个很简单的事,只是因为不熟悉就变得很复杂了。。。。


--
要实验的话,自已在命令行窗口编辑那个文件 vi /etc/rc.d/rc.extra
在这个文件最前面手动加两个变量
CDL_IMG=xxxx.iso
CDL_DIR=xxxxx
然后再执行一下这个文件,就会提示一个绿色的 Found 了。
然后再startx也是可以进入图形界面的

----
顺便说一下,他那个脚本有个潜在的Bug:
/etc/rc.d/rc.extra , row 127
[ $CDL_LOOP = "yes" ] || {

这个条件判断在变量为空时会报错 : unary operator expected.
其实就和DOS里面的字符串防空一样,要把变量用引号括起来:

[ “$CDL_LOOP” = "yes" ] || {
这样就行了。

其实他这个脚本里面其他地方的判断都是加了引号的,估计这一行是疏忽了没加。
虽然按正常流程的话这个变量不会为空,但是终究是一个潜在的Bug。

[ 本帖最后由 我是神仙 于 2011-12-2 00:09 编辑 ]

我是神仙 发表于 2011-11-25 14:54:03

http://cdlinux.info/wiki/doku.php/zh/doc/faq/bootiso
这是cdlinux网站上的一篇文章,但还是不行
(这个文档其实很差,很明显里面的路径就不大对,kernel (hd32)/boot/CDlinux/bzImage这里面的boot不应该再有了,会直接提示file not found。但就是改成   kernel (hd32)/CDlinux/bzImage 也只是能进到字符界面,还是会提示 can't find out where CDLinux is installed)



可否直接从 CDlinux 的 ISO 镜像启动?

可以。从 0.9.0 版开始,您可以直接从 CDlinux 的 ISO 镜像启动,不需要刻盘。

CDlinux 0.9.0 和以后的版本都将支持直接从 ISO 启动,这是通过不点的 GRUB4DOS 来实现的。GRUB4DOS 是一个基于 GRUB1 的通用启动管理器,功能十分强悍。

GRUB4DOS 的新版本支持直接从 ISO 光盘镜像启动 (ISO emulation)。您可以直接使用 CDlinux 里带的 GRUB4DOS。下面是一个例子,直接启动 CDlinux 的光盘镜像,您可以对其稍做修改,然后添加到您自己的 menu.lst 里:

#========================= begin =========================#
title GNU/CDlinux (ISO emulation)
map --mem (hd0,0)/boot/CDlinux/CDL.iso (hd32)
map --hook
map --status
kernel (hd32)/boot/CDlinux/bzImage quiet CDL_IMG=CDL.iso
initrd (hd32)/boot/CDlinux/initrd
map --unhook
boot
#========================== end ==========================#

注意事项

上面仅是一个例子,您需要按您自己的实际情况做相应修改。

在这个过程中将会把 CDlinux 的 ISO 镜像整个加载到内存中,加载过程有可能只需数秒钟,也有可能得花上几十分钟,取决于您的具体硬件配置。尤其是当您从 USB 设备启动,而且 BIOS 又比较 buggy 时,花上几个小时也是有可能的。

由于要把整个 CDlinux 的 ISO 镜像加载到内存中,显然您的内存容量必须要比 ISO 镜像大(这些内存随后会被释放掉,不会浪费)。

在这种模式下 (直接从 ISO 镜像启动),您的设置、所做的更改不会被保存。

关于 GRUB4DOS 的具体用法,请参阅它的文档。GRUB4DOS 的文档非常出色,有大量详尽的例子和解释。

zhs509 发表于 2011-11-25 14:57:34

下面的菜单相对比较完美,但是明确的说想ud启动ISO是没戏的。。。


map /BOOT/CDLINUX.ISO (0xff) || map --mem /BOOT/CDLINUX.ISO (0xff)
map --hook
rootnoverify (0xff)
kernel /CDlinux/bzImage CDL_LANG=zh_CN.UTF-8 CDL_DIR=BOOT CDL_IMG=CDlinux.iso
initrd /CDlinux/initrd

我是神仙 发表于 2011-11-25 15:24:56

谢谢楼上的回复,不过,好像还是不行。都进不了系统。如图:
http://ww4.sinaimg.cn/large/55663898jw1dng6ol2dlkj.jpg

我是神仙 发表于 2011-11-25 15:26:19

http://bbs.ylmf.net/forum.php?mod=viewthread&tid=1757648
这里有一个是解压文件到c:\cdlinux的例子,但是试了还是不行。老样子,进不了图形界面

-------
yhm3020 发表于 2010-11-8 23:20

(BT5)CDlinux U盘启动的问题。可以引导,但进入不了系统。
在论坛上下载了BT5本人菜鸟。里面的教程只有用光盘启动的。

所以在搜索了下CDlinux从U盘启动方法。用grub 引导的。

由于我的menu.lst上的 beini是这样的:
titleBeini 1.2.1
find --set-root /boot/bzImage
kernel /boot/bzImage quiet tinycore waitusb=6
initrd /boot/tinycore.gz
可以启动Beini .

其它方法CDlinux 的和beini的差不多。

可以引导进入到CDLINUX启动的画面,但之后就就动不了了
can't find out where CDLinux is installed

----------

我的情况和你一样,解决了吗?

-----------

yhm3020 初出茅庐 发表于 2011-2-11 15:06
早已经解决了,title CDlinux
find --set-root /CDlinux/bzImage
kernel /CDlinux/bzImage CDL_DEV=hd0 CDL_LANG=zh_CN.UTF-8
initrd /CDlinux/initrd
boot
这样写代码。。。

我是神仙 发表于 2011-11-25 15:27:55

现在是在虚拟机vm上,用硬盘系统上的c:\grldr=GRUB这种方式来测试的

zhs509 发表于 2011-11-25 15:47:16

随便测试一个。。。
可以提取里面的menu.lst,改名为CDLNUX.LST,然后直接用ZXW的RUN启动



CDLINUX.ISO可以是以下位置
/BOOT/CDLINUX.ISO
/CDLINUX/CDLINUX.ISO
/GRUB/CDLINUX.ISO

http://115.com/file/e6pgca6y#
TEST.iso

[ 本帖最后由 zhs509 于 2011-11-25 15:55 编辑 ]

我是神仙 发表于 2011-11-25 17:01:20

http://ww4.sinaimg.cn/large/55663898jw1dng9gf2e6ij.jpg



谢谢楼上的热心回复,还提供了ISO,感动。
下载test.ISO花了些时间。试了下,好像是grub 0.4.5,要新一些,不过还是老样子,
唉难道是俺RP有问题

用VMware虚拟机,直接加载test.iso,用光驱启动,可以正常启动到cdlinux的界面去。
复制到硬盘,即在c:\BOOT\CDLINUX.ISO,然后用c:\grldr启动,这时有两种情况:
一是光驱保持加载test.iso,这样就可以正常启动cdlinux,
一是光驱不加载test.iso,就是只有硬盘上的c:\BOOT\CDLINUX.ISO,这样就还是老样子,启动到不了图形界面

tingyue-wu 发表于 2011-11-25 17:10:18

title12启动 CDlinux中文标准版\n\n   %n%
find --set-root /ABC/CDlinux.iso
map /ABC/CDlinux.iso (0xFF)
map --hook
root (0xFF)
kernel /CDlinux/bzImage quiet CDL_LANG=zh_CN.UTF-8 CDL_DIR=/ABC CDL_IMG=CDlinux.iso
initrd /CDlinux/initrd

注意:CDL_DIR=/ABC   这里的/abc指的是你的CDlinux.iso镜像所在的位置,如果位置不正确,就没法启动。

我是神仙 发表于 2011-11-25 17:11:05

干脆直接加载你那个 test.iso

title find and boot test.iso
map /test.iso (0xff) || map --mem /test.iso (0xff)
map --hook
chainloader (0xff)


结果还是老样子。
估计就是启动到后面找不到光盘上的文件了。

tingyue-wu 发表于 2011-11-25 17:14:19

回复 #10 我是神仙 的帖子

看看9楼的 我以前也被为难过,一直都解开启动,后来才发现是命令写的不对

我是神仙 发表于 2011-11-25 17:27:35

都是照抄的楼上的,咋还是不行呢?
http://ww2.sinaimg.cn/large/55663898tw1dnga7o3tr5j.jpg

我是神仙 发表于 2011-11-25 17:38:40

看起来上面还是有很多成功的。

我想问一下,是不是可以用虚拟机测试的?

我现在是在vmware(7.1)里面装的一个Windows系统(2003),然后在c:\放了个grldr,
然后在boot.ini中加了个c:\grldr=GRUB,这样调用的GRUB

用这种方式来测试没什么问题吧?

还有我把grldr放在优盘上启动GRUB也试过,结果是一样的,不行就是不行啊

感觉用虚拟机测试更方便

tingyue-wu 发表于 2011-11-25 18:13:06

回复 #12 我是神仙 的帖子

CDlinux.iso的大小写,和你的文件名保持一致,试试。
不行,我就没办法了。

我是神仙 发表于 2011-11-25 18:33:26

原帖由 tingyue-wu 于 2011-11-25 18:13 发表 http://bbs.wuyou.net/images/common/back.gif
CDlinux.iso的大小写,和你的文件名保持一致,试试。
不行,我就没办法了。

嗯,一致了的。CDlinux.iso.
但还是不行呢。

我是神仙 发表于 2011-11-25 18:54:23

好像用光盘启动或把优盘量产成U盘的话,比较简单,容易成功。但始终觉得GRUB这种还是要好些。
一个优盘,加上个grldr文件,再加上一些iso文件,需要启动哪个就选哪个。。。

可惜,现实是复杂的。。。。

zhs509 发表于 2011-11-25 19:06:41

为什么非要选择cdlinux呢?
其实puppy也是不错的选择。。。
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=202194

我是神仙 发表于 2011-11-25 19:10:02

原帖由 zhs509 于 2011-11-25 19:06 发表 http://bbs.wuyou.net/images/common/back.gif
为什么非要选择cdlinux呢?
其实puppy也是不错的选择。。。
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=202194


呵呵,正在下载puppy呢,马上就好了,也要试一下。。。

我是神仙 发表于 2011-11-25 19:15:30

好像也是要把需要的文件都整合进initrd.gz 和 vmlinuz 这两个文件才行?
像cdlinux这样启动到后半阶段又要读取光盘上的文件的话就不得行

tingyue-wu 发表于 2011-11-25 19:28:26

回复 #19 我是神仙 的帖子

用slitaz不需要initrd.gz 和 vmlinuz

直接
find --set-root /ABC/slitaz-0416.iso && map --mem /ABC/slitaz-0416.iso (0xff)
map --hook
chainloader (0xff)
boot
就行


CDlinux.iso方面,我真的想不出原因了。我自己是可以的,上个礼拜去一个学校进行救护员培训时还用CDlinux.iso破解了一个无线路由信号呢,可能是机器问题,或者是CDlinux.iso的文件不同吧。
我的CDlinux.iso是92M的
文件结构
CDlinux.iso
             ----mkisofs.sh
             ----CDlinux
                        ----bzimage
                        ----initrd
                        ----boot
                        ……

[ 本帖最后由 tingyue-wu 于 2011-11-25 19:35 编辑 ]

rockrock99 发表于 2011-11-25 21:30:21

同一个菜单有些机可以,有些机不可以,一般是U启速度快的机器才成功

map /BOOT/CDLINUX.ISO (0xff) || map --mem /BOOT/CDLINUX.ISO (0xff)
map --hook
rootnoverify (0xff)
kernel /CDlinux/bzImage CDL_LANG=zh_CN.UTF-8 CDL_DIR=BOOT CDL_IMG=CDlinux.iso
initrd /CDlinux/initrd


具体看旧帖
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=202141

xianglang 发表于 2011-11-25 23:48:44

如果用下面的菜单不成功,那就自己再找原因了(ISO不要放到UD区去,因为CDLINUX并不认UD区,至于路径和文件名,自己应该知道如何相应修改了——如果不知道,那就别玩算了):

titleCDLinux (ISO) \n\n 启动 CDLinux LiveCD (ISO)
map /Linux/CDlinux-0.9.7.iso (hd32) || map --mem /Linux/CDlinux-0.9.7.iso (hd32)
map --hook
kernel (hd32)/CDlinux/bzImage quiet CDL_LANG=zh_CN.UTF-8 CDL_DIR/Linux CDL_IMG=CDlinux-0.9.7.iso
initrd (hd32)/CDlinux/initrd

[ 本帖最后由 xianglang 于 2011-11-25 23:50 编辑 ]

我是神仙 发表于 2011-11-28 18:23:03

谢谢大家啊


如果用下面的菜单不成功,那就自己再找原因了(ISO不要放到UD区去,因为CDLINUX并不认UD区,至于路径和文件名,自己应该知道如何相应修改了——如果不知道,那就别玩算了):

titleCDLinux (ISO) \n\n 启动 CDLinux LiveCD (ISO)
map /Linux/CDlinux-0.9.7.iso (hd32) || map --mem /Linux/CDlinux-0.9.7.iso (hd32)
map --hook
kernel (hd32)/CDlinux/bzImage quiet CDL_LANG=zh_CN.UTF-8 CDL_DIR/Linux CDL_IMG=CDlinux-0.9.7.iso
initrd (hd32)/CDlinux/initrd

map /BOOT/CDLINUX.ISO (0xff) || map --mem /BOOT/CDLINUX.ISO (0xff)
map --hook
rootnoverify (0xff)
kernel /CDlinux/bzImage CDL_LANG=zh_CN.UTF-8 CDL_DIR=BOOT CDL_IMG=CDlinux.iso
initrd /CDlinux/initrd

具体看旧帖
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=202141


回复 #10 我是神仙 的帖子

看看9楼的 我以前也被为难过,一直都解开启动,后来才发现是命令写的不对



正如上面说的,要仔细。上面各位大大给出的命令本来以为可以照抄,不料里面却分别设有机关,照抄是百分之百不得行的。不管是不是故意的,总之要根据他们给出的写法再改几处才行。(如大小写前后不一致,/号=号混用等)

还有一个是,我是在vmware虚拟机上测试的,和实机有点区别。主要就是虚拟机默认的磁盘是scsi格式的,要改成IDE格式的磁盘才得行。

在测试硬盘上的ISO整体启动时,硬盘分区是FAT才行。NTFS好像又不行了

我是神仙 发表于 2011-11-28 18:28:41

折腾了两天,用优盘或硬盘上的grub整体启动iso方式启动CDLinux\geexbox\玄天win7pe基本上都成功过了,就是有时成功有时不成功,根据机器的不同分别有差异。硬盘啊主板啊都有不同的。本来还以为很简单就用启动一个GRUB就可以方便的整体启动任意iso。。。。

kafen 发表于 2011-11-29 09:34:56

以上菜单没认真看,应当很多都可行。最重要的一点:别把CDlinux.ISO放在UD区!而要放在U盘可见区。所以你弄好后不要用虚拟机测试。
我也把我一直在用的菜单注上:
title 【 7 】启动CDlinux无线破解版
find --set-root /ISO/CDlinux.iso
    map --mem /ISO/CDlinux.iso (hd32)
      map --hook
      kernel (hd32)/CDlinux/bzImage quiet CDL_LANG=zh_CN.UTF-8 CDL_DIR=/ISO CDL_IMG=CDlinux.iso
          initrd (hd32)/CDlinux/initrd
            map --unhook
            boot
然后在U盘可见区建ISO文件夹,CDlinux.ISO放里面就行!

xianglang 发表于 2011-11-29 10:58:58

ISO放在NTFS格式的硬盘上,CDLINUX是可以搜索到的——我的硬盘就全是NTFS格式的,ISO整体启动CDLINUX没有问题。一个关键是,LINUX是严格区分大小写的,而CD、NTFS格式也是区分大小写的,因此在写G4D的菜单时,相应的路径与文件名也要区分大小写。

我是神仙 发表于 2011-11-29 13:23:15

原帖由 xianglang 于 2011-11-29 10:58 发表 http://bbs.wuyou.net/images/common/back.gif
ISO放在NTFS格式的硬盘上,CDLINUX是可以搜索到的——我的硬盘就全是NTFS格式的,ISO整体启动CDLINUX没有问题。一个关键是,LINUX是严格区分大小写的,而CD、NTFS格式也是区分大小写的,因此在写G4D的菜单时,相 ...

我也是用的NTFS,没有预留一个FAT32的分区。
结果把grldr从0.4.4换成0.4.5b(其他都不变)后就成功整体启动cdlinux了,真是怪事

ntfs硬盘上一直启动不成功的其实是geexbox2.0。说它不支持NTFS吧,它启动后其实是可以播放NTFS格式硬盘上的视频的,但是在NTFS硬盘上就是启动不了。。。感觉geexbox那个linux,太精简了,进不了图形界面就想玩一下那个shell命令行,结果命令少得很,目录也几乎全是空的。。。。

tulongwa 发表于 2011-11-29 19:17:40

我用的BT5镜像,稍作改动能用RUN直接从U盘启动,不需要修改菜单的
只要把镜像分成两部分:
用UltraISO打开BT5镜像,把extra和local文件夹提取到U盘CDlinux目录下;
将镜像中的extra和local文件夹删掉(镜像体积小了很多),lang目录下没用的语言文件可以删掉,保存镜像(15MB);
镜像放到U盘\BOOT\IMGS\,可以在RUN模块直接生成的菜单或列表中启动,不用-mem


[ 本帖最后由 tulongwa 于 2011-11-30 09:28 编辑 ]

netmjwork 发表于 2011-11-30 13:50:01

原帖由 tulongwa 于 2011-11-29 19:17 发表 http://bbs.wuyou.net/images/common/back.gif
我用的BT5镜像,稍作改动能用RUN直接从U盘启动,不需要修改菜单的
只要把镜像分成两部分:
用UltraISO打开BT5镜像,把extra和local文件夹提取到U盘CDlinux目录下;
将镜像中的extra和local文件夹删掉(镜像体 ...

希望说的详细点儿,“RUN”怎么运行? 多谢!
另:我希望能将BT8(cdlinux 0.9.6.1)这个ISO镜像1、集成到光盘镜像的一个菜单里    2、用grub启动的U盘菜单里(按照楼上说的内存启动ISO文件的方式没有启动)

问题:1、集成到光盘的一个菜单,是否把我的这个镜像内容完全复制到光盘文件夹里,然后用run命令还是BCDW?命令怎么写?
         2、我是用“grubinst_gui”启动的U盘,菜单如下,但是没有启动起来,提示找不到安装路径,问题在哪里?

title --启动 CLLINUX测试
find --set-root /minipe/CDlinux.iso
map /minipe/CDlinux.iso (0xFF)
map --hook
root (0xFF)
kernel /CDlinux/bzImage quiet CDL_LANG=zh_CN.UTF-8 CDL_DIR=/minipe CDL_IMG=CDlinux.iso
initrd /CDlinux/initrd

tulongwa 发表于 2011-11-30 19:13:45

这只我的光盘:

http://115.com/file/e6anow3e#
WIN7_XP_PE_LIVE.iso


http://bbs.wuyou.net/forum.php?mod=viewthread&tid=191301&extra=page%3D1
菜单是这样写的:
title --加载 ISO 镜像
set front=--mem
command RUN --fira --automenu --show.ISO




放在U盘上,菜单和文件目录是一样的:









[ 本帖最后由 tulongwa 于 2011-11-30 20:58 编辑 ]
页: [1] 2
查看完整版本: 怎样用GRUB4dos启动那个CDLinux,用ISO