制作带有 GRUB 引导功能的软盘镜像文件
這樣有個(gè)好處就是生成鏡像文件非常簡單。比如說創(chuàng)建軟盤鏡像:
dd if=/dev/zero bs=512 count=2880 of=floppy.img
為了方便我們需要在鏡像文件中建立文件系統(tǒng),有了文件系統(tǒng)才比較方便放置、修改我們自己的內(nèi)核和應(yīng)用程序。
下面的命令在 Fedora 12 中測試通過。其他的 Linux 系統(tǒng)可能命令有些區(qū)別。
首先將軟盤鏡像與某個(gè) Loop 設(shè)備關(guān)聯(lián)。
losetup /dev/loop7 floppy.img
然后格式化:
mkfs.ext2 /dev/loop7
或者:
mkfs.msdos /dev/loop7
這里推薦采用fat12 格式創(chuàng)建文件系統(tǒng),方便在win下用 winImage 操作。
這是文件系統(tǒng)就建立好了。下面是在鏡像文件中安裝 GRUB。
首先將鏡像文件中的文件系統(tǒng)掛在到我們主系統(tǒng)的目錄樹上。
mount -o loop /dev/loop7 /mnt/
然后建立 GRUB 需要的目錄結(jié)構(gòu)。
mkdir -p /mnt/boot/grub
再然后拷貝需要的文件。
cp /boot/grub/stage1 /mnt/boot/grub
cp /boot/grub/stage2 /mnt/boot/grub
cp /boot/grub/e2fs_stage1_5 /mnt/boot/grub
或者
cp /boot/grub/fat_stage1_5 /mnt/boot/grub
創(chuàng)建 grub 配置文件:
vi /mnt/boot/grub/grub.conf
內(nèi)容如下(這里假設(shè)我們的內(nèi)核文件放在軟盤鏡像的/boot/目錄,命名為kernel):
title test os 0.0.1
??? root (fd0)
??? kernel /boot/kernel
卸載鏡像文件
umount /mnt/
在鏡像文件中安裝 GRUB
grub --device-map=/dev/null
grub> device (fd0) /dev/loop7
grub> root (fd0)
grub> setup (fd0)
grub> quit
將軟盤鏡像與 loop 設(shè)備的關(guān)聯(lián)解除。
losetup -d /dev/loop7
這時(shí)軟盤鏡像已經(jīng)可以使用了。
可以用 file 命令查看一下:
file floppy.img
floppy.img: DOS floppy 1440k, x86 hard disk boot sector
如果要修改軟盤鏡像中文件也很簡單,將其掛載到某個(gè)目錄就可以了。
losetup /dev/loop7 floppy.img
mount -o loop /dev/loop7 /mnt/
然后就是正常的文件操作了。
如果需要在 win 下操作,可以使用 winImage, 或者自己寫個(gè)小程序來操作。
?
后記:
原文寫于幾年前,當(dāng)時(shí) GRUB2?還不成熟,用的人很少。現(xiàn)在 GRUB2 大有替代 GRUB 的趨勢,本文中的方法在使用 GRUB2 的系統(tǒng)上已經(jīng)不適用了。因此本文的內(nèi)容對喜歡折騰操作系統(tǒng)的新手來說可能有些過時(shí)了。不過我還是選擇保留了這篇Blog ,一是紀(jì)念學(xué)生時(shí)代的那段時(shí)光,也希望能對仍舊使用 GRUB 作為引導(dǎo)程序的愛好者們提供一點(diǎn)幫助。
?關(guān)于在 GRUB2 上如何創(chuàng)建可引導(dǎo)軟盤鏡像還有硬盤鏡像文件,我將另寫一篇 Blog 來說明。
總結(jié)
以上是生活随笔為你收集整理的制作带有 GRUB 引导功能的软盘镜像文件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言与汇编语言相互调用原理以及实例
- 下一篇: 用 GRUB 引导自己的操作系统