linux+软盘启动程序,制作在软盘上跑的linux引导器详细过程_linux教程
1. 软盘上安装引导器(grub)
一般制作软盘上跑的Linux引导器都使用sysLinux这个工具(这个工具不支持ext2分区格式,只能支持fat分区格式),因为我对grub比较熟悉,并且我在软盘上安装grub只用了132KB空间,不是很耗磁盘空间。
具体操作如下:
# mke2fs /dev/fd0
创建了 ext2 文件系统后,需要安装该文件系统:
# mount /dev/fd0 /mnt/floppy
现在,需要创建一些目录,并将一些关键文件(原先安装 GRUB 时已安装了这些文件)复制到软盘:
# mkdir /mnt/floppy/boot
# mkdir /mnt/floppy/boot/grub
# cp /boot/grub/stage1 /mnt/floppy/boot/grub
# cp /boot/grub/stage2 /mnt/floppy/boot/grub
再有一个步骤,就能得到可用的引导盘。
在Linux bash中,从 root 用户运行“grub”,该程序非常有趣并值得注意,因为它实际上是 GRUB 引导装入器的半功能性版本。尽管 Linux 已经启动并正在运行,您仍可以运行 GRUB 并执行某些任务,而且其界面与使用 GRUB 引导盘或将 GRUB 安装到硬盘 MBR 时看到的界面(即GRUB控制台)完全相同。
在 grub> 提示符处,输入:
grub> root (fd0)
grub> setup (fd0)
grub> quit
现在,引导盘完成了。
2. 安装根文件系统
一套Linux系统要正常启动,根文件系统要包括下列文件夹:
/bin /etc /proc /tmp /var /dev /mnt
要包括下列基本的设备文件:
/dev/console /dev/fd0 /dev/null /dev/ram0 /dev/tty /dev/tty0
要包括下列配置文件:
/etc/rc.d/inittab /etc/rc.d/rc.sysinit /etc/fstab
要实现基本的功能,还要包括一些常用工具:如:sh,ls,cd,cat等。其中,前面三个部分不要多少空间的,但是常用工具会占用很多空间,要是用原来系统中的这些命令,就是全部用静态编译,不是用动态连接库,大概有2MB~3MB,放不进软盘。网络上解决的方案是使用BusyBox工具。具体可以到官方网站:www.busybox.net看看。下载BusyBox工具的源代码。
注意:
(1) 译的时候要静态编译,修改 Makefile 中的 DOSTATIC 参数,从false 改为 true,这样,编译出来的代码就不要依赖glibc了。
(2) 因为我们用的是 BusyBox 上的 init,与一般所使用的 init 不太一样,会先执行 /etc/init.d/rcS 而非 /etc/rc.d/rc.sysinit,为了做出来的 FloppyLinux 架构与 Redhat 的架构一样,所以修改了 BusyBox 中的 init.c底下是修到的部分内容∶
#ifndef INIT_SCRIPT
#define INIT_SRCIPT “/etc/rc.d/rc.sysinit”
#endif
具体操作如下:
(1) 官方网站上下载BusyBox的最新版本:busybox-0.60.5.tar.gz解开,按照上面的注意点修改源代码。
(2) 运行下列命令:
#make
#make install
(3) 译好的可势行文件放在 ./_install 文件夹里的。
#cp ./_install /tmp/floppy-Linux -r
(4) 动建立其它的文件或文件夹:
#cd /tmp/floppy-Linux
# mkdir dev etc etc/rc.d proc mnt tmp var
# chmod 755 dev etc etc/rc.d bin mnt tmp var
# chmod 555 proc
# cd dev
# mknod tty c 5 0
# mknod console c 5 1
# chmod 666 tty console
# mknod tty0 c 4 0
# chmod 666 tty0
# mknod ram0 b 1 0
# chmod 600 ram0
# mknod fd0 b 2 0
# chmod 600 fd0
# mknod null c 1 3
# chmod 666 null
(5) 建启动配置文件:(inittab,rc.sysinit,fstab)
initab:
::sysinit:/etc/rc.d/rc.sysinit
::askfirst:/bin/sh
rc.sysinit:
#!/bin/sh
mount -a
# chmod 755 rc.sysinit
fstab:
proc /proc proc defaults 0 0
(6) 作Ramdisk的镜像文件:
# dd if=/dev/zero of=/tmp/initrd bs=1k count=4096
# losetup /dev/loop0 /tmp/initrd
# mke2fs -m 0 /dev/loop0>
# mount -t ext2 /dev/loop0 /mnt
# cp -r /tmp/floppy-Linux/* /mnt
# umount /mnt
# losetup -d /dev/loop0
# dd if=/tmp/initrd | gzip -9 > /tmp/initrd.gz
# rm -f /tmp/initrd
# sync
3.编译内核:
这部分内容不详细讲述,主要是去掉了一些不需要的选项,减小内核,编译出来的内核是725920Byte。里面包含了必要的网卡驱动和网络协议栈。
4.整合启动盘
现在所用到了的东西全部搞好了,下面就是整合一下:
全部文件(文件夹)如下:
/lost+found/
/boot/
/boot/grub/
/boot/grub/stage1 =========èGrub启动时用到的两个文件
/boot/grub/stage2
/boot/grub/menu.lst =========èGrub的配置文件指向grub.conf
/boot/grub/grub.conf
/boot/kernel =============è内核
/initrd.gz ===============è内存镜像文件
这样这张软盘就能启动一套Linux系统了,占用1.213MB。
linux+软盘启动程序,制作在软盘上跑的linux引导器详细过程_linux教程相关推荐
- linux+软盘启动程序,软盘上的Linux系统方案
本文将介绍一种两张软盘上的Linux系统,它可以当作系统应急修复盘.路由器或防火墙等许多地方,通过对它的研究,也可以加深对嵌入式系统的理解. 一.前言 嵌入式Linux是由一个几百KB的Linux内核 ...
- linux系统设置服务开机启动3种方法,Linux开机启动程序详解
linux系统设置服务开机启动 方法1:.利用ntsysv伪图形进行设置,利用root登陆 终端命令下输入ntsysv 回车:如下图 方法2:利用命令行chkconfig命令进行设置 简要说明一下ch ...
- linux 软盘启动程序,Linux 引导过程及原理-从软盘启动GRUB
制作启动盘后,可以用软盘启动引导硬盘上的操作系统.插入制作好的启动软盘,进入BIOS并设置用软盘启动.软盘启动成功后就会进入GRUB的命令行模式: grub> 要启动一个操作系统,首先指定引导哪 ...
- linux 快速启动程序,在Linux上安装ULauncher快速启动应用程序的方法
本文介绍在Linux操作系统上安装ULaunche的方法,Ulauncher是一款应用程序启动器,安装后可以非常轻松地查找和启动文件.快速打开网站.查找要打开的程序.计算数学问题等等,参考Linux应 ...
- linux sd启动盘制作工具,制作Mini Linux U盘启动盘
by ncforest http://ncforest.blog.163.com 在将U盘制作成启动盘,然后用Mini Linux引导,可以用以修复硬盘上的Linux系统错误. Mini linux很 ...
- Linux开机启动程序rc.local
文章目录 1./etc/rc.local是/etc/rc.d/rc.local的软链接 2.rc.local文件的原始内容 3.rc.local文件的配置 4.应用经验 5.版权声明 在CentOS7 ...
- linux命令启动程序,菜鸟学Linux命令:nohup命令启动程序
在UNIX/LINUX中,普通进程用&符号放到后台运行,如果启动该程序的控制台logout,则该进程随即终止. 要实现守护进程,一种方法是按守护进程的规则去编程,比较麻烦: 另一种方法是仍然用 ...
- Linux开机启动程序的两种方法
/usr/lib/systemd/system: 安装包相关配置,一般是供应商提供的操作系统资源.通常,只允许包管理工具(yum/dnf/rpm/apt)进行包安装的过程中操作此路径: /lib/sy ...
- Linux下启动程序常见问题,linux系统启动流程及常见故障解决方式
Linux系统中启动的流程: 1.加载bios的硬件信息以及进行自我检测 并根据设置取得第一个启动的设备 2.若以硬盘方式引导 读取并执行引导扇区 MBR 3.加载grub(引导程序)启动菜单(/ ...
最新文章
- 最新!3D目标检测论文汇总(多模态融合)
- MySQL性能测试工具sysbench的安装和使用
- .net 网页播放器
- Vue.js-Day01-AM【第一次学习-安装、基础使用(引入方式)、数据展示、指令介绍(v-html、v-text、v-bind、v-if、v-for】
- python range函数范围_Python range函数
- 北大青鸟c语言课后答案,北大青鸟C语言教程--第一章 C语言基础.ppt
- 前端学习(239):渐进增强和优雅降级
- python类的私有属性_Python类的私有属性
- div 设置a4大小_如何在A4纸张尺寸页面制作HTML页面?
- cisco 9月24日 CCNA实验
- Linux下MySQL5.6的修改字符集编码为UTF8
- bzoj4332;vijos1955:JSOI2012 分零食
- 解决maven打包 错误: 程序包com.sun.istack.internal不存在 - BBSMAX
- 信息安全体系建设(一)
- 分布式系统互斥算法---令牌环算法
- 日本老人租妻女,“共享家庭”能用来抵抗孤独吗?
- 《数据清洗》 第六章 数据转换
- Windows Filtering Platform Windows筛选平台
- hotmail邮箱设置【2018年10月14日】
- 电脑突然开机无反应,怎么办