之所以加入这么一节是因为许多制作操作系统的参考书都是从软盘讲起的,而现在市场上基本不存在软盘一说,所以创建一个虚拟的软盘就十分必要。这节主要包括三个linux命令bximage(创建软盘的工具如果没有需要apt install)、mount、mkfs。
好了废话少说,开始创建虚拟磁盘吧选择一个工作目录,打开终端。执行bximage,效果如下所示,其中以#开头的是我的说明和注释。
[email protected]:~$ mkdir temp
#作为演示我在home目录里建了一个temp文件夹,cd转到这个文件夹
[email protected]:~$ cd temp
[email protected]:~/temp$ bximage
#输入bximage 出现如下结果
=======================================================================
bximage
Disk Image Creation Tool for Bochs
$Id: bximage.c 11315 2012-08-05 18:13:38Z vruppert $
========================================================================
Do you want to create a floppy disk image or a hard disk image?
Please type hd or fd. [hd] fd
#询问创建硬盘还是软盘,选择fd 软盘
Choose the size of floppy disk image to create, in megabytes.
Please type 0.16, 0.18, 0.32, 0.36, 0.72, 1.2, 1.44, 1.68, 1.72, or 2.88.
[1.44]
#请输入软盘大小,默认1.44MB ,直接回车取默认值
I will create a floppy image with
cyl=80
heads=2
sectors per track=18
total sectors=2880
total bytes=1474560
What should I name the image?
[a.img]
#输入文件名字默认a.img
Writing: [] Done.
I wrote 1474560 bytes to a.img.
The following line should appear in your bochsrc:
floppya: image="a.img", status=inserted
[email protected]:~/temp$
这样就好了,也许你会好奇bximage是怎么样创建一个虚拟软盘的,其实这个过程很简单就是创建了一个名字为a.img的文件1.44MB的NULL,也就是十六进制的'\00',可以在上面的命令行直接输入
temp$ vim a.img
看到的结果如图所示,最后一行表示1行1474560个字符即1474560 Byte,1.44×1024×1000 Byte,1KB=1024B,1MB=1000kB,这个为什么不都按1024算我也不是很清楚啦,也可能bximage的作者写软件的时候比较流行这样算吧hhhhhh....
虽然现在创建了一个硬盘但还没有对软盘格式化,所以文件系统并不能识别,格式化的过程就是给软盘写入一个文件系统,这样就可以挂载和写入文件啦,写入文件系统的命令为 mkfs(make filesystem)具体用法如下:
mkfs(选项)(参数)
选项
fs:指定建立文件系统时的参数;
-t<文件系统类型>:指定要建立何种文件系统;
-v:显示版本信息与详细的使用方法;
-V:显示简要的使用方法;
-c:在制做档案系统前,检查该partition是否有坏轨。
参数
文件系统:ext2 ext4 ntfs msdos
对应分区:如 /dev/hda3
因为我需要一个可以挂载在dos操作系统下的软盘,故将其格式化为msdos 格式的文件系统
mkfs -t msdos ./a.img
vim a.img
#执行后用 结果如下:
这次的我们就看不太懂了,仿佛是mkfs调用了 mkfs.fat 创建了一个FAT12的文件系统,然后写入了一些与格式有关的奇怪的二进制,管他呢,我们已经可以挂载了。
跨在一般可以将硬盘或者软盘挂载在mnt media或者dev目录下,但是我们只是临时用一下,就挂载在当前目录下吧。
[email protected]:~/temp$ touch demo.txt
#创建一个文本文件并用vim打开,写入内容准备复制到 a.img
[email protected]:~/temp$ vim demo.txt
[email protected]:~/temp$ mkdir floppy
#创建floppy文件夹用以挂载 a.img
[email protected]:~/temp$ mount a.img ./floppy
mount: only root can do that
#挂载提示需要root权限,使用sudo 输入密码
[email protected]:~/temp$ sudo mount a.img ./floppy
[sudo] bobo 的密码:
[email protected]:~/temp$ cd floppy
[email protected]:~/temp/floppy$ ll
总用量 11
drwxr-xr-x 2 root root 7168 1月 1 1970 ./
drwxrwxr-x 3 bobo bobo 4096 4月 6 16:21 ../
#复制文件
[email protected]:~/temp/floppy$ cp ../demo.txt ./
cp: 无法创建普通文件'./demo.txt': 权限不够
[email protected]:~/temp/floppy$ sudo cp ../demo.txt ./
[email protected]:~/temp/floppy$ ll
总用量 12
drwxr-xr-x 2 root root 7168 4月 6 16:22 ./
drwxrwxr-x 3 bobo bobo 4096 4月 6 16:21 ../
-rwxr-xr-x 1 root root 59 4月 6 16:22 demo.txt*
[email protected]:~/temp/floppy$ cd ../
#卸载
[email protected]:~/temp$ sudo umount floppy
[email protected]:~/temp$
好了,一切ok尽情玩耍吧!