零、背景

本教程主要针对中国石油大学(华东)计算机操作系统课程设计中的Floppylinux作业。

当时老师给的教程让人难受。也可能是我太渣了,自己走了不少弯路。希望你做这个作业时不要再像我一样难受。

以下内容参考李永老师给的《Floppylinux实现》文档。并增加一些自己的理解和注释。希望对你有所帮助。

(步骤一为将busybox-1.00.tar.bz2拷贝到虚拟机中。步骤2为为虚拟机新建软盘,若读者已完成此步骤、可以跳过)

一、首先将busybox-1.00.tar.bz2文件拷贝到虚拟机中

可以使用挂在U盘的方法将busybox-1.00.tar.bz2拷贝到虚拟机中(不过我的虚拟挂载U盘会出错,我也不知道为啥)。

如果你的电脑也不可以使用U盘将文件拷贝到虚拟机中,那么你可以使用挂载CDROM的方法将文件拷贝到虚拟机中,在这个链接中有详细教程,不再赘述。

结果截图:

二、为虚拟机增加虚拟软盘

在VMWare中选择:虚拟机(M)->设置。

界面左侧''硬件"->"软盘"->"设备状态"中,将 已连接(C)、启动时链接(O) 选上。

''硬件"->"软盘"->"链接"中,选择 使用软盘映像文件(M) 。

之后点击 "创建(T)",新建一个软盘,按照自己的喜好命名。

结果如下图(图中我新建的软盘命名为floppy.flp)。完成后点击确定。

若新建软盘成功,将鼠标放到VMWare左下软盘图标处会显示 “软盘:正在使用floppy.flp”。如图所示:

至此,我们已经完成了前期的准备工作。

三、在软盘上安装引导器(grub)

(此步骤为老师给的教程中的步骤1)

a. 首先对软盘建立ex2文件系统

[root@localhost root]#mke2fs /dev/fd0

b. 之后将系统中grub目录下的引导文件stage1,stage2复制到软盘中

[root@localhost root]#mount /dev/fd0 /mnt/floppy

按回车之后桌面上会显示出来软盘的图标,如图所示:

[root@localhost root]# cd /mnt/floppy/

[root@localhost floppy]# mkdir boot

[root@localhost floppy]# mkdir boot/grub

[root@localhost floppy]# cp /boot/grub/stage1 /mnt/floppy/boot/grub/

[root@localhost floppy]# cp /boot/grub/stage2 /mnt/floppy/boot/grub/

[root@localhost floppy]# ls boot/grub/

stage1 stage2

c. 最后配置grub信息

[root@localhost floppy]# grub

Probing devices to guess BIOS drives. This may take a long time.

GRUB  version 0.93  (640K lower / 3072K upper memory)

[ Minimal BASH-like line editing is supported.  For the first word, TAB

lists possible command completions.  Anywhere else TAB lists the possible completions of a device/filename.]

grub> root (fd0)

Filesystem type is ext2fs, using whole disk

grub> setup (fd0)

Checking if "/boot/grub/stage1" exists... yes

Checking if "/boot/grub/stage2" exists... yes

Checking if "/boot/grub/e2fs_stage1_5" exists... no

Running "install /boot/grub/stage1 (fd0) /boot/grub/stage2 p /boot/grub/grub.conf "... succeeded

Done.

grub> quit

至此,引导盘安装完成!

4、配置busybox相关选项

a.在根目录下新建floppylinux目录,floppylinux下再新建floppylinux,将busybox-1.00.tar.bz2复制到第二个floppylinux下。

(此处新建两个floopylinux可能没有必要,但是为了和老师给的教程文档中命令对应,才多新建了一个floppylinux文件夹,具体为啥别管,听话照着做就对了,乖)

目录结构如下:

解压busybox-1.00.tar.bz2文件

[root@localhost floppylinux]# tar -xjvf busybox-1.00.tar.bz2

解压后floppylinux文件夹下会多出一个busybox-1.00文件夹,如图所示:

b.进入busybox-1.00文件夹

[root@localhost floppylinux]# cd busybox-1.00

[root@localhost busybox-1.00]# pwd

/floppylinux/floppylinux/busybox-1.00

[root@localhost busybox-1.00]# make menuconfig

之后进入配置界面。

General Configuration --->中配置如下:

Build Option --->中配置如下:

Installation Options --->中配置如下:

c.其他选项遵从linux基本命令默认选项,配置好保存退出。

5、编译并安装busybox

[root@localhost busybox-1.00]# make

[root@localhost busybox-1.00]# make install

编译好后,在busybox目录下生成子目录_install

[root@localhost busybox-1.00]# cd _install/

[root@localhost _install]# ll

总用量 8

drwxr-xr-x    2 root  root  4096 10月 31 22:29 bin

lrwxrwxrwx   1 root  root  11 10月 31 22:29 linuxrc -> bin/busybox

drwxr-xr-x    2 root  root   4096 10月 31 22:29 sbin

6、建立临时目录,该目录为软盘的文件系统

在/floppylinux/floppylinux/下新建文件夹floppyImage

[root@localhost _install]#  mkdir /floppylinux/floppylinux/floppyImage

[root@localhost floppyImage]# pwd

/floppylinux/floppylinux/floppyImage

将busybox下的_install目录下的文件复制过来

[root@localhost floppyImage]# cp /floppylinux/floppylinux/busybox-1.00/_install/*  /floppylinux / floppylinux/ floppyImage/ -r

[root@localhost floppyImage]# ls

bin  linuxrc  sbin

[root@localhost floppyImage]# mkdir dev etc etc/init.d proc mnt tmp var

[root@localhost floppyImage]# chmod 755 dev etc etc/init.d bin mnt tmp var

[root@localhost floppyImage]# chmod 555 proc

7、建立设备列表

[root@localhost floppyImage]# cd dev

[root@localhost dev]# mknod tty c 5 0

[root@localhost dev]# mknod console c 5 1

[root@localhost dev]# chmod 666 tty console

[root@localhost dev]# mknod tty0 c 4 0

[root@localhost dev]# chmod 666 tty0

[root@localhost dev]# mknod ram0 b 1 0

[root@localhost dev]# chmod 600 ram0

[root@localhost dev]# mknod fd0 b 2 0

[root@localhost dev]# chmod 600 fd0

[root@localhost dev]# mknod null c 1 3

[root@localhost dev]# chmod 666 null

[root@localhost dev]# ll

显示结果如下图所示(处理文件的建立时间之外,其他必须相同)

8、建立启动配置文件

[root@localhost dev]# cd /floppylinux/floppylinux/floppyImage/

[root@localhost floppyImage]# cd etc/

[root@localhost etc]# vi inittab

inittab内容为:

::sysinit:/etc/init.d/rcS

::askfirst:/bin/sh

[root@localhost etc]# vi fstab

fstab内容为(注意里面是defaults不是defalut):

proc /proc proc defaults 0 0

[root@localhost etc]# cd init.d/

[root@localhost init.d]# vi rcS

rcS内容为:

#!/bin/sh

mount –a

# chmod 755 rc.sysinit

[root@localhost init.d]# cd /mnt/floppy/

[root@localhost floppy]# ls

boot  lost+found

[root@localhost floppy]# cd boot/grub

[root@localhost grub]# vi grub.conf

grub.conf内容为:

timeout 0

default 10

title  FloppyLinux

root (fd0)

kernel /boot/bzImage

initrd /initrd.img.gz

之后建立连接文件menu.lst(注意该文件后缀为 lst,不是1st)

[root@localhost grub]# ln -s grub.conf menu.lst

[root@localhost grub]# ls

grub.conf  menu.lst  stage1  stage2

9、制作镜像文件initrd.img

[root@localhost grub]# cd /mnt/floppy/boot/

[root@localhost boot]# dd if=/dev/zero of=/dev/ram1

dd: 正在写入 ‘/dev/ram1’: 设备上没有空间

读入了 8193+0 个块

输出了 8192+0 个块

[root@localhost boot]# mke2fs -m0 /dev/ram1

mke2fs 1.32 (09-Nov-2002)

Filesystem label=

OS type: Linux

Block size=1024 (log=0)

Fragment size=1024 (log=0)

1024 inodes, 4096 blocks

0 blocks (0.00%) reserved for the super user

First data block=1

1 block group

8192 blocks per group, 8192 fragments per group

1024 inodes per group

Writing inode tables: done

Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 36 mounts or

180 days, whichever comes first.  Use tune2fs -c or -i to override.

[root@localhost boot]# mkdir /mnt/ram

[root@localhost boot]# mount /dev/ram1 /mnt/ram/

将先前做好的floppylinux根文件系统拷贝到ram1上

[root@localhost boot]# cp -R /floppylinux/floppylinux/floppyImage/* /mnt/ram/

[root@localhost boot]# umount /dev/ram1

[root@localhost boot]# dd if=/dev/ram1 of=/floppylinux/floppylinux/floppyImage/initrd.img

读入了 8192+0 个块

输出了 8192+0 个块

[root@localhost boot]# file /floppylinux/floppylinux/floppyImage/initrd.img

/floppylinux/floppylinux/floppyImage/initrd.img: Linux rev 1.0 ext2 filesystem data

10、检查initrd.img,用loop设备来把他重新挂载到文件系统里,之后压缩initrd.img镜像文件

[root@localhost boot]# cd /floppylinux/floppylinux/floppyImage/

[root@localhost floppyImage]# mount -o loop initrd.img /mnt/ram/

[root@localhost floppyImage]# ls /mnt/ram/

bin  dev  etc  linuxrc  lost+found  mnt  proc  sbin  tmp  var

[root@localhost floppyImage]# umount /mnt/ram/

[root@localhost floppyImage]# gzip -v9 initrd.img

initrd.img:      90.2% -- replaced with initrd.img.gz

查看压缩之后的大小

[root@localhost floppyImage]# ls -lh initrd.img.gz

-rw-r--r--    1 root     root         403K 10月 31 22:57 initrd.img.gz

只有403k大小(其实我做时有时404k有时402k,总之在403k大小左右)

11.编译linux系统内核

(说明一下,该步骤的目的是生成一个654k左右大小的bzImage文件,该步骤与前面的步骤没有任何关系,即,你可以先做该步骤将生成的bzImage文件保存下来,与同学共享使用。)

若使用的是李永老师给的虚拟机可以直接进入linux源代码目录:

[root@localhost floppyImage]# /usr/src/linux-2.4

清理源代码树:

[root@localhost linux-2.4]# make mrproper

运行配置程序:

[root@localhost linux-2.4]# make menuconfig

进入配置界面,具体配置信息如下:

Code maturity level options--->

里面就一个选项 Prompt for development..... 先选择N

Loadable module support--->

里面有三个选项,选择N。(将第一个选N之后剩下的两个自动消失)。

Processor type and featurres--->

第二行(Pentium-ProCeleron/Pentium-II) Processor family 中选择 386

第一行到最后一行全部选N。其中第四行CPU Frequency scling --->选项进不去,不管他。倒数第七行(4GB) High Memory Support使用默认值。

General setup--->

选Y的有 networking support,PCI support ,System V ipc ,systrl support,kernel support for ELF binaries

(Any)PCI access mode使用默认值,倒数第五行Kernel core (/proc/kcore) fromat选择ELF

其他选项都选N。

Memory Technology Devices(MTD)--->

选N。

Parallel port support --->

选N(第一个选项选N后剩下的两个会自动消失)。

Plug and Play configuration --->

选N(第一个选项选N后第二个会自动消失)。

Block devices --->

选Y的有 Normal floppy disk support ,Loopback device support ,RAM disk support ,initial RAM disk (initrd) support ,Per partition statics in /proc/partitions。

倒数第三行 Default RAM disk size 使用默认值(4096)。

Multi-devices support (RAID and LVM) --->

全部使用默认值。

Cryptography support (CrytoAPI) --->

就一个选项 CryptoAPI support,选N。

Networking options --->

选择Y的有: Packet socket ,Packet socket: mmapped IO ,TCP/IP networking(其中TCP/IP networking下的选项都选N如图所示)

其他的选项都选N,需要注意的是,倒数第一项(Network testing)倒数第二项(QoS and/or fair queueing)和倒数第五项(Appletalk devices)需要点进去,把里面的选项都选N。(Appletalk devices好像点不进去。。。)。

Telephony Support --->

就一项,选N。

ATA/IDE/MFM/RLL support --->

第一项 ATA/IDE/MFM/RLL support选Y,然后下面的IDE,ATA and ATAPI Block Devices 就被激活,进入IDE,ATA and ATAPI Block Devices--->之后,其中选择Y的有:Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support ,Include IDE/ATA-2 DISK support ,Auto-Geometry Resizing support ,Include IDE/ATA CDROM support(共4项)

SCSI support --->

选N。(第一项选N后其他项会自动消失)

Fusion MPT device supprot --->

选N。(其实我做的时候并不能选择进入)

I2O device support --->

就一项,选N。

Network device support --->

第一行选Y,然后其他行(除了Ethernet (10 or 100Mbit)--->)都选N(是子目录选项的也要回车进入将里面的选项选N。)。

再进入Ethernet (10 or 100Mbit)--->,里面选Y的有:第一行Ethernet (10 or 100Mbit)、EISA VLB PCI and on board controllers和RealTek RTL-8139 PCI Fast Ethernet Adapter support 。

Amateur Radio support --->

选N。(第一项选N后其他项会自动消失)

IrDA (infrared) support --->

选N。(第一项选N后其他项会自动消失)

ISDN subsystem --->

全选N。

Input core support --->

选N。

Character devices --->

选择Y的有:Virtual terminal和 Support for console on virtual terminal。

剩下的全选N。(这句话的意思是,如果某选项为子菜单,即最后为 --->,可以选择进入,那么也要进入该子菜单将里面的内容选为N)

Multimedia devices --->

全部选N。(其实就三项,将第一项选N后剩下的会自动消失)

Crypto Hardware support --->

选N。

File systems --->

选择Y的有:ISO 9660 CDROM file support,Microsoft Joliet CDROM extensions,/proc file system support和Second extended fs support。

其他的全部选N(最后三项Network File Systems,Partition Types和Native Language Support需要回车进入,将里面的所有选项都选N)。

Console drivers --->

首先回到第一大项 Code maturity level options,将其选Y。

然后回到Console drivers这一项,将前三行(VGA text console,Video mode selection support和Ignore bad video mode selection)选Y,第四行选N。然后进入第五行Fram-buffer support --->,里面选Y的有:Support for frame buffer devices (EXPERIMENTAL)、VESA VGA graphics console和Support only 8 pixels wide fonts。其他都选N。

返回主目录后找到会多出来一项IEEE 1394(FireWire)support (EXPERIMENTAL)--->,选N。

剩下的Sound--->、USB support--->、Additional device driver support --->、Bluetooth support --->、Profiling support--->、Kernel hacking --->和Library routines--->都选N!!!都选N!!!有子目录也要回车进入把里面的选项选N。

最后回到第一大项 Code maturity level options,将其选N

到这里就完成的配置,然后运行以下命令(执行时间可能有点长):

[root@localhost linux-2.4]# make dep

[root@localhost linux-2.4]# make bzImage

执行完毕之后会生成一个bzImage文件,结果如图所示:

可以看到我生成的bzImage文件大小为654k,路径为/usr/src/linux-2.4.20-8/arch/i386/boot。(生成的文件大小可能不同,可能690k也可能657k都可以)。

12、整合启动盘

[root@localhost linux-2.4]# cp /usr/src/linux-2.4.20-8/arch/i386/boot/bzImage /mnt/floppy/boot/

[root@localhost linux-2.4]# cp /floppylinux/floppylinux/floppyImage/initrd.img.gz /mnt/floppy/

现在/mnt/floppy/的文件树结构如下:


最后重启电脑即可

[root@localhost linux-2.4]# init 6

重启电脑过一会之后会显示

Please press Enter to activate this console

输入回车即可输入linux的命令,进入floppylinux

成功截图如下:

[Linux]FloppyLinux--中国石油大学(华东)计算机操作系统课程设计作业教程相关推荐

  1. 中国石油大学计算机摸底考试试题,2017年中国石油大学(华东)计算机与通信工程学院859数据结构考研仿真模拟题...

    目录 2017年中国石油大学(华东)计算机与通信工程学院859数据结构考研仿真模拟题(一).... 2 2017年中国石油大学(华东)计算机与通信工程学院859数据结构考研仿真模拟题(二).. 13 ...

  2. 华南理工大学计算机操作系统课程设计大作业银行家死锁避免算法模拟,2016春操作系统大作业银行家死锁避免算法模拟.doc...

    文档介绍: 2016春操作系统大作业银行家死锁避免算法模拟20160501华南理工大学"计算机操作系统"课程设计大作业计算机科学与技术专业:春2015班级:号:2015047420 ...

  3. 计算机操作系统课设总结,计算机操作系统课程设计

    <计算机操作系统课程设计>由会员分享,可在线阅读,更多相关<计算机操作系统课程设计(36页珍藏版)>请在人人文库网上搜索. 1.操作系统课程设计实验报告姓 名: 李文孝 班 级 ...

  4. 西工大计算机操作系统实验报告,西工大计算机操作系统课程设计实验报告bh05xh5...

    <西工大计算机操作系统课程设计实验报告bh05xh5>由会员分享,可在线阅读,更多相关<西工大计算机操作系统课程设计实验报告bh05xh5(7页珍藏版)>请在人人文库网上搜索. ...

  5. 计算机操作实践的课程描述,计算机操作系统课程设计实践报告-Read.DOC

    计算机操作系统课程设计实践报告-Read <计算机操作系统>课程设计实践报告 班级:计科31班第二组 组长:吕岭 小组成员:邢自成.叶林.张鹰 [问题描述] 模拟二级以上的多级文件目录管理 ...

  6. 中国石油大学华东计算机考研难度,中国石油大学(华东)(专业学位)计算机技术考研难吗...

    考研真题资料优惠价原价选择 很多考生在准备中国石油大学(华东)(专业学位)计算机技术考研难吗?是考研报考的时候都会产生这样的疑问:这个专业的研究生好吗?适合我吗?对我以后的人生和职业会有帮助吗?考生在 ...

  7. 中国石油大学(华东)计算机与通信工程学院,2019年中国石油大学(华东)计算机与通信工程学院考研复试分数线...

    招生名额及复试名单确定办法 2019年研究生院下拨我院研究生考试招生总限额全日制94人.非全日制45人.其中,学术学位全日制研究生名额为25人:全日制专业学位研究生名额69人:非全日制专业学位研究生名 ...

  8. 中国石油大学(华东)计算机科学与技术,2017年中国石油大学(华东)函授本科计算机科学与技术专业...

    技校网专门为您推荐的类似问题答案 问题1: 中国石油大学计算机科学与技术专业在哪个校区啊 你对玩电脑很感兴趣?很负责任的跟你说,这个专业就业不大好.你还是考虑换一个专业吧.我们学校好专业多的是了.何必 ...

  9. 华科计算机课程设计,华中科大操作系统课程设计报告(附源码).doc

    华中科技大学计算机学院 操作系统课程设计报告 班级: 学号: 姓名:彭博 时间:2010年3月 设计内容一:熟悉和理解Linux编程环境 编写一个C程序,实现文件拷贝功能. 2)编写一个C程序,使用下 ...

  10. 华中科技大学计算机课程设计,华中科技大学计算机学院操作系统课程设计资料报告材料[1].doc...

    <华中科技大学计算机学院操作系统课程设计资料报告材料[1].doc>由会员分享,提供在线免费全文阅读可下载,此文档格式为doc,更多相关<华中科技大学计算机学院操作系统课程设计资料报 ...

最新文章

  1. Spring源码分析【6】-ThreadLocal的使用和源码分析
  2. Zookeeper系列(十)zookeeper的服务端启动详述
  3. angular @ViewChild使用
  4. redis api-list
  5. java 二进制 归属权限_【Java EE 学习 75 上】【数据采集系统第七天】【二进制运算实现权限管理】【权限分析和设计】...
  6. 使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错。字符串的长度超过了为 maxJsonLength 属性设置的值。...
  7. 我混了大半辈子,忽然成了拆二代
  8. string转Char*( error C2440: '=' : cannot convert from 'const char *' to 'char *')
  9. php写2048,原生js编写2048小游戏实例代码
  10. LeetCode-1-two-sum
  11. 查询好友IP地址的几种方法
  12. 基于NFC的Android读写软件,Android基于nfc的读写(一)
  13. java 毕向东 笔记_毕向东Java基础部分笔记
  14. ApacheCN 活动汇总 2019.7.5
  15. java 下载暂停实现_在文件下载中实现暂停/恢复
  16. swift lazy 线程不安全
  17. 量化投资分析:定量分析项目和交易分析指标
  18. python 判断是否为中文
  19. 牛客网练习赛36 Ribbit的数列 分块
  20. Pyinstaller Pmw

热门文章

  1. bzoj4094 luogu3097 最优挤奶
  2. 服务器存档修改器,太吾绘卷存档修改器v2.6
  3. linux centos fedora 安装LBP2900打印机 LBP6230dn LBP6240dn
  4. oracle 产品宣传片,史上最牛宣传片!河南的美已惊艳了世界!
  5. LifecycleBeanPostProcessor的作用
  6. UC,浏览器,不愧是全球使用量最大的第三方手机浏览器!
  7. php实现facebook登陆功能
  8. c语言学生班级通讯录,C语言做学生通讯录
  9. 解决Linux无法读写U盘中的NTFS问题
  10. 益聚星荣:一文看懂,为什么有的投资人讨厌元宇宙,有的却爱死它了