| 
 | 
 
有用过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 installed-   MNT_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 编辑 ] |   
 
 
 
 |