硬盘启动 mini bt 3.6 iso 篇
主要利用了grub4dos 可以启动 iso的功能,但是需要修改mini bt 3.6 iso 的一些文件,具体方法如下:
1、如何获得grub4dos?最简单的方法就是安装一键备份具体方法可看http://doshome.com/soft/
2、修改\dosh\ghos 目录下MENU.LST 文件(这个文件就是grub4dos 菜单文件,可用文本编辑器打开它如“记事本”)
增加----线内内容
------------------------------------------
title Mini bt3.6.1
map (hd0,0)/Mini-BT3.6.1.iso (hd32)
map --hook
chainloader (hd32)
boot
------------------------------------------
注:这里有必要解释一下 map (hd0,0)/Mini-BT3.6.1.iso (hd32) 是第一硬盘第一分区下根目录下Mini-BT3.6.1.iso文件
如果iso文件放在第一扩展分区呢那就是 map (hd0,4)/Mini-BT3.6.1.iso (hd32)
如果iso文件放在第二扩展分区下dos目录呢 map (hd0,5)/dos/Mini-BT3.6.1.iso (hd32)
不要根贴未完 3、修改 Mini-BT3.6.1.iso 中 isolinux.cfg syslinux.cfg 两个文件
将2文件原有内容删去添加如下内容
----------------------------------------------------------------
PROMPT 0
TIMEOUT 40
DEFAULT /boot/vesamenu.c32
LABEL Mini bt cd
MENU LABEL BT3 Graphics mode (KDE) on Disk
KERNEL /boot/vmlinuz
APPEND vga=0x317 initrd=/boot/initrd.gz ramdisk_size=6666 root=/dev/ram0 rw fromiso=/Mini-BT3.6.1.iso autoexec=xconf;kdm
---------------------------------------------------------------
注:fromiso=/Mini-BT3.6.1.iso 为iso文件位置 4、修改initrd.gz 压缩包中 liblinuxlive
# not enough loop devices? try to create one.
# This will work only with newest kernels. Tested with 2.6.23-rc2.
if [ $ERR -eq 2 ]; then
LOOPDEV=$(mknod_next_loop_dev)
OPTIONS=$(echo "$OPTIONS" | sed -r "s/,loop//")
losetup "$LOOPDEV" "$DEV" 2>/dev/null
mount -n -o $OPTIONS "$LOOPDEV" "$2" >/dev/null 2>&1
ERR=$?
fi
# 增加下面一节
if [ $ERR -ne 0 ]; then
if [ "$3"="iso9660" ]; then
LOOPDEV=$(mknod_next_loop_dev)
losetup "$LOOPDEV" "$DEV" 2>/dev/null
mount -r -t$3"$LOOPDEV" "$2" >/dev/null 2>&1
ERR=$?
fi
fi
# if nothing works, try to force read-only mount
if [ $ERR -ne 0 ]; then
mount -n -r -o $OPTIONS "$DEV" "$2" >/dev/null 2>&1
ERR=$?
fi
if [ $ERR -ne 0 ]; then rmdir $2 2>/dev/null; fi
return $ERR
}
5、initrd.gz的 linuxrc 中的修改
# First, try from= boot argument, if given
DATAFROM=$(cmdline_value from)
if [ "$DATAFROM" ]; then
DATAFROM=$(find_in_computer $DATAFROM)
if [ "$DATAFROM" ]; then
mount_device $DATAFROM $LOOPMOUNT # mount again, it may be loop device
if [ $? -eq 0 -a "$(find_modules $LOOPMOUNT/$LIVECDNAME)" != "" ]; then
echolog "found in $DATAFROM"
DATA=$LOOPMOUNT/$LIVECDNAME
else
fumount $LOOPMOUNT
fumount $MOUNTDIR/*
fi
fi
fi
FROMISO=$(cmdline_value fromiso)
if[ "$FROMISO" ]; then
if [ "$DATA" = "" ]; then
FROMISO=$( find_in_computer /$FROMISO )
echolog "found file on$FROMISO "
if [ "$FROMISO" ];then
mount_device $FROMISO $LOOPMOUNT iso9660
if [ $? -eq 0 -a "$(find_modules $LOOPMOUNT/$LIVECDNAME)" != "" ]; then
echolog "found $LIVECDNAME in $FROMISO"
DATA=$LOOPMOUNT/$LIVECDNAME
else
fumount $LOOPMOUNT
fumount $MOUNTDIR/*
echolog "not found$LOOPMOUNT/$LIVECDNAME "
fi
fi
fi
fi
FROMISO=$(cmdline_value isofile)
if [ "$DATA" = "" ]; then
if[ "$FROMISO" ]; then
LOOPDEV=$(mknod_next_loop_dev)
for hdindex in sda5 hda5 sda1 hda1
do
hddev="/dev/$hdindex"
hdmnt="/mnt/$hdindex"
mount_device $hddev $hdmnt 2>/dev/null
echolog "losetup $LOOPDEV $hdmnt/$FROMISO ........................"
losetup $LOOPDEV "$hdmnt/$FROMISO" 2>/dev/null
if [ $? -eq 0 ]; then
break
else
fumount $hdmnt
fi
done
if [ $? -eq 0 ] ;then
mkdir -p $LOOPMOUNT
mount -r -t iso9660 $LOOPDEV $LOOPMOUNT 2>/dev/null
fi
if [ $? -eq 0 ]; then
DATA=$LOOPMOUNT/$LIVECDNAME
echolog "mounted on$DATA ..................................."
else
echolog "mounterror........................................."
fi
fi
fi
背景知识:
initrd.gz 可用解压文件打开 得到initrd 文件可用 mount -o loop (initrd文件路径) 空格 /(目录)挂在一个目录下
修改 liblinuxlive linuxrc 文件后umount /(目录)
然后用gzip重新压缩刚才编辑好的initrd文件为.gz格式 本帖最后由 jiuweiljp 于 2010-3-7 14:19 编辑
懒人可下载我编辑好的文件,解压后用ultraiso 替换掉Mini-BT3.6.1.iso 内文件即可
需要的自己顶
**** Hidden Message ***** 谢谢提供~!学习了 这么好的东西也不见顶 好东西。。谢谢提供学习 looooooooooooooooook 谢谢楼主分享,顶一下.... 谢谢楼主分享,顶一下.... 本帖最后由 hrl10 于 2010-8-17 23:58 编辑
懒人可下载我编辑好的文件,解压后用ultraiso 替换掉Mini-BT3.6.1.iso 内文件即可
需要的自己顶
**** 本 ...
jiuweiljp 发表于 2010-3-6 10:56 http://forum.anywlan.com/images/common/back.gif
解压后用ultraiso 替换掉Mini-BT3.6.1.iso 内文件即可
是什么意思阿?本人小白,boot文件解压以后是isolinux、syslinux和initrd。还有本人用的内置Intel 4965agn无线网卡,能用硬盘启动 mini bt 3.6 iso吗??