jiuweiljp 发表于 2010-3-6 10:14

硬盘启动 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)

不要根贴未完

jiuweiljp 发表于 2010-3-6 10:22

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文件位置

jiuweiljp 发表于 2010-3-6 10:37

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

jiuweiljp 发表于 2010-3-6 10:50

背景知识:
initrd.gz 可用解压文件打开 得到initrd 文件可用 mount -o loop (initrd文件路径) 空格 /(目录)挂在一个目录下
修改 liblinuxlive linuxrc 文件后umount /(目录)
然后用gzip重新压缩刚才编辑好的initrd文件为.gz格式

jiuweiljp 发表于 2010-3-6 10:56

本帖最后由 jiuweiljp 于 2010-3-7 14:19 编辑

懒人可下载我编辑好的文件,解压后用ultraiso 替换掉Mini-BT3.6.1.iso 内文件即可
需要的自己顶

**** Hidden Message *****

95d8 发表于 2010-5-4 18:07

谢谢提供~!学习了

twtysse 发表于 2010-5-27 12:09

这么好的东西也不见顶

tigerstar 发表于 2010-6-21 17:16

好东西。。谢谢提供学习

overtimer 发表于 2010-6-22 17:09

looooooooooooooooook

xvyxvy 发表于 2010-8-13 22:54

谢谢楼主分享,顶一下....

hrl10 发表于 2010-8-17 23:42

谢谢楼主分享,顶一下....

hrl10 发表于 2010-8-17 23:56

本帖最后由 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吗??
页: [1] 2 3 4
查看完整版本: 硬盘启动 mini bt 3.6 iso 篇