|
原来的贴子不见了,不知什么原因:)
最初由 faint 发表
做张带有Linux的Grub的启动光盘(1)。
现在的刻录机很平宜吧,大约就100多块钱,就可以拿到一个普通的了。呵呵,我看了论坛里面,好像在Linux下使用刻录机的帖子很少吧,做过自己喜欢的Linux启动光盘的更加少。下面我就说说我是如何做的。可能写地得太过简陋,呵呵,希望给你点启示。
我的系统是Mandrake Linux 9.0,刻录机当然不能少。
#dmesg | grep hdd
Kernel command line: BOOT_IMAGE=linux ro root=803 quite devfs=mount hdd=ide-scsi
ide_setup: hdd=ide-scsi
ide1: BM-DMA at 0xf008-0xf00f, BIOS settings: hdc:pio, hdd:pio
hdd: LG CD-RW CED-8080B, ATAPI CD/DVD-ROM drive
hdd: DMA disabled
从上面的信息可以看出,我的刻录机是LG的,设备就是hdd。但在前面的那行,你看到了没有"quite devfs=mount hdd=ide-scsi ide_setup: hdd=ide-scsi"。我的DMA没有找开,不要紧,我不经常用它,快点慢点对我影响不大。先说下如何配置CR-RW的。我是这样装的:
由于我用的是ide接口的CD-RW,而且系统引导是用lilo的,装上后,要改动几处地方:
1) 在/etc/lilo.conf中的每个linux内核启动行后加上这么的一行:
append="hdd=ide-scsi"
2) 在ect/modules.conf中加入了这么的一行:
probeall ide-scsi
3)我在用hdd(刻录机)的时候,直接mount /dev/scd0(注意:CD-RW是当作scsi设备使用了)就可以了,当然,我可以在/etc/fstab里面加上相应的内容,而且直接用Mandrake linux 的supermount了。在/etc/fstab里面有这么一行:
/dev/scd0 /mnt/cdrw auto user,iocharset=gb2312,codepage=936,noauto,ro,exec 0 0
当然,如果你的系统不是这样,你可以参照下作适当修改。
其它的软件,就是mkisofs和cdrecord了。你看看你的装了没有?
#rpm -qa | grep mkisofs
mkisofs-1.15-0.a32.1mdk
#rpm -qa | grep cdrecord
cdrecord-1.11-0.a32.1mdk
cdrecord-cdda2wav-1.11-0.a32.1mdk
下面开始正式做了。
当然啦,我的系统是lilo引导的,我想做个Grub的启动光盘,那么,用它基本上可以解决引导系统的问题了。
1、制作img文件,先做Grub的启动光盘:
#mke2fs /dev/fd0
#dd if=/boot/grub/stage1 of=/dev/fd0 bs=512 count=1
#dd if=/boot/grub/stage2 of=/dev/fd0 bs=512 seek=1
再制作img文件:
#dd if=/dev/fd0 of=/tmp/me/image/grub.img
2、单一的boot光盘的制作(single-boot-image bootable Cd-rom)
如果你不太熟悉mkisofs的使用,你可以参考下man mkisofs或info mkisofs。用mkisofs制作能boot的iso文件,其一般的作法如下:
mkisofs -b images/boot.img -c boot.cat -J -r -T \
-p "光盘标识号" -P "光盘制作人" -A "长光盘标识号" -V "短光盘标识号" \
-o 光盘映象ISO 光盘内容目录/
其它的参数我就不说明了。(这里要注意下boot.img,即img文件的路径,这个在info mkisofs就提到!The pathname must be relative to the source path specified to mkisofs.即是相对于要mkisofs源相对路径)
例如,我要刻录/tmp/me目录下的内容。先看看目录的结构:
#ls /tmp/me/
pk/ image/
pk目录是光盘里面的内容,image目录里面的是img文件。
#ls /tmp/me/image/
grub.img
看看当前的路径:
#pwd
/
#mkisofs -b image/grub.img -c boot.cat -J -r -T -p "pk" \
-P " pk" -A "pk" -V "pk" \
-o /tmp/pk.iso /tmp/me
Size of boot image is 2880 sectors -> Emulating a 1440 kB floppy
Total translation table size: 2242
Total rockridge attributes bytes: 913
Total directory bytes: 4096
Path table size(bytes): 38
Max brk space used 9000
784 extents written (1 Mb)
这样,我的grub启动的iso就做好了:
#file /tmp/pk.iso
/tmp/pk.iso: ISO 9660 CD-ROM filesystem data。mount它当然没有问题。
# mount -t iso9660 -o loop /tmp/pk.iso /mnt/iso1/
#ls /mnt/iso1/
boot.cat pk/ image/ TRANS.TBL
(注:后来才知道,也可以这样做启动的iso文件:
#mkisofs -J -r -T -R -relaxed-filenames -p "pk" -P "pk" -A "pk" -V "pk" \
-b image/grub.img -eltorito-alt-boot -hide-rr-moved -max-iso9660-filenames \
-o /tmp/pk.iso /tmp/me
)
其实是差不多的,你要知道每个options的含义,你看看info mkisofs,它说明得更加详细。这个单一内核的启动盘就做好了。
2. 多启动光盘映象光盘(multi-boot-image bootable CD-rom)的制作:
同样的道理,你自己先做好多个映像文件,放到某个目录下面。此时mkisofs的一般用法:
mkisofs -J -r -T -R -relaxed-filenames -c boot.cat \
-p "光盘标识号" -P "光盘制作人" -A "长光盘标识号" -V "短光盘标识号" \
-b image1.img -eltorito-alt-boot \
-b image2.img -eltorito-alt-boot \
-b image3.img -eltorito-alt-boot \
-b image4.img -eltorito-alt-boot \
-hide-rr-moved -max-iso9660-filenames \
-o 光盘映象ISO 光盘内容目录/
这里也是要注意下img文件的路径。我是这样做的:
从软盘制作另外的img文件(或者从其它的渠道得到的img文件),
#dd if=/dev/fd0 of=/tmp/me/image/winme.img
#mkisofs -J -r -T -R -relaxed-filenames -c boot.cat \
-p "pk" -P "pk" -A "pk" -V "pk" \
-b image/grub.img -eltorito-alt-boot \
-b image/winme.img -eltorito-alt-boot \
-o /tmp/pk.iso /tmp/me
这样多启动光盘映象光盘也搞完了。它包括grub和winme的启动光盘。
3. 刻录iso光盘:
在刻录光盘前,请测试下iso是否成功。用VMware或VPC加载iso文件来测试,设置第1启动设备为光驱,选择pk.iso这个文件。iso镜像文件测试无误后,再做下面的吧(这一步你可以不做,也不是必须的,条件是你要保证空白的光盘足够多).
在Mandrake linux 9.0下的cdrecord的使用方法,我目前还不太会用,但已经能用一些了,一般的用法如下:
cdrecord -v dev=刻录机设备 speed=刻录速度 -eject -fs=4m -data 光盘映象ISO
这里说明下吧,因为关系到刻录,如果不正确,可能会报销你的不少光盘。其中,那些参数的含义:
-v : 显示烧录过程;
-eject : 烧录结束自动弹出你的刻录光盘;
speed : 指定烧录速度;
dev : 指定烧录设备;
-data : 指定烧录档案;
-fs:设定绶冲的大小;
不过,你在使用之前,你还要看看你的系统刻录机的情况:用cdrecord -scanbus,以显示 SCSI Addresses 例如 0,0,0 (scsibus,target,lun) cdrecord的使用方法,还是请你多多看看info cdrecord或 man cdrecord吧。比如我的就是:
#( channel 0, id 3, lun 0)
#cdrecord -scanbus
Cdrecord 1.11a32 (i586-mandrake-linux-gnu) Copyright (C) 1995-2002 J鰎g Schilling
Using libscg version 'schily-0.6'
scsibus0:
0,0,0 0) 'IBMAS400' 'DCHS09W ' '03B7' Disk
0,1,0 1) *
0,2,0 2) *
0,3,0 3) *
0,4,0 4) *
0,5,0 5) *
0,6,0 6) *
0,7,0 7) *
scsibus1:
1,0,0 100) *
1,1,0 101) *
1,2,0 102) *
1,3,0 103) 'LG ' 'CD-RW CED-8080B ' '1.04' Removable CD-ROM
1,4,0 104) *
1,5,0 105) *
1,6,0 106) *
1,7,0 107) *
知道这些参数就可以开工了:
#cdrecord -v dev=1,3,0 speed=8 -eject -fs=4m -data /tmp/faint.iso
过不了多久,哈哈,我在Mandrake linux下又做好了boot光盘的做好。启动试试,呵呵,当然成功啦。当用光驱启动时,
出现:
boot from APAI CD-ROM
1.FD 1.44MB System type (00)
2.FD 1.44MB System type (00)
当选择1的时候,就进入grub了,当我选择2的时候,就出现winme的启动光盘了。这样虽然简单点,但很实用。呵呵。以前在bbs看到一个软件,好像叫什么Easy Boot(专门制作那种萎软系统的N合1的多功能启动光盘),好像可以作多达36个启动项(26个字母和9个数字),而且还可以做子菜单启动。我想在linux也可以作。关键是问题是你要处理好img文件。不过,我想也不会用那么多了,我只用几个就可以了。呵呵,我可也作一些内核放到光盘来,比如我把装Debian的需要的引导安装文件和sysbase、drivers.tgz做到一个光盘来,用它就可以直接装debain系统了。
以上,我测试在Mandrake linux 9.0全部通过。缺点:好像我看了mkfsiso的info或man都不知道如何制作启动菜单的,而且如果是启动项多于10个以上的时候,后面的数字应该是用字母开始排了,但不知道如何做。请知情者指点迷津,info mkisofs近2000行,看到我的头都大了,先谢过了! |
|