|
|
关于制作linux系统软盘,网上有许多这方面资料,都涉及编译内核,
软件安装。让初接触linux的朋友止步。我写这篇实例是避开编译内核
,软件安装,实现加深了解linux文件系统。
本人实例环境如下:安装RedHat linux时完全安装,有软驱和软盘。
还要根文件系统在硬盘分区代号:hda7。用df命令查看。
一:实例
root 帐户登录系统,插入空磁盘。
#mke2fs /dev/fd0 格式化成ext2
#mount -t ext2 /dev/fd0 /mnt/floppy 挂载软盘
在软盘建立boot目录和子目录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/
#cp /boot/grub/e2fs_stage1_5 /mnt/floppy/boot/grub/
[有关e2fs_stage1_5查看后记5]
把原文件stage1,stage2,e2fs_stage1_5,复制到软盘子目录grub下。
stage1,stage2为装入器,e2fs_stage1_5为两者桥梁,能在引导时从
ext2文件系统顺利装入stage2。
#grub
grub>root (fd0)
grub>setup (fd0)
grub>quit
grub是一个程序,以上操作避开硬盘MBR信息来设置引导盘的引导扇区。
把当前目录设在/mnt/floppy/boot/grub
#cd /mnt/floppy/boot/grub
把原grub.conf复制到当前目录下
#cp /boot/grub/grub.conf ./
#ln -s grub.conf menu.lst
把grub.conf修改成如下:
(本人把window跟linux安装在同一硬盘)
--------------------------------------------------------------------------
default=0
timeout=10
title weixiao make Linux
[tab] root (fd0)
[tab] kernel /boot/vmlinuz-2.4.7-10 ro root=/dev/fd0
[tab] initrd /initrd.gz
title DOS
[tab] rootnoverify (hd0,0)
[tab] chainloader +1
-------------------------------------------------------------------------
注:grub.conf文件内容[tab]为TAB键
#cd /tmp
#cp /boot/vmlinuz-2.4.7-10 /mnt/floppy/boot/
把内核复制到软盘,本人内核vmlinuz有800k ,2.4.7-10随你版本自己
改动。
现在已完成内核部分,开始制作root盘(根文件系统)。
#mkdir flolinux 在/tmp建立flolinux目录
#cd flolinux 进入flolinux目录
#mkdir {bin,dev,etc,mnt,proc,sbin,tmp}
#mkdir etc/rc.d
#mkdir mnt/{linux,floppy}
#cp -a /dev/{console,fd0,hda7,null,ram0,tty,tty0} dev/
以上hda7是根文件系统在硬盘分区代号
#cd etc/rc.d
#vi rc.sysinit
-----------------------------
#!/bin/sh
mount -a
-----------------------------
#chmod 744 rc.sysinit
#cd /tmp/flolinux/etc
#vi fstab
-------------------------------------------------
proc /proc proc defaults 0 0
/dev/hda7 /mnt/linux ext2 defaults 0 0
-------------------------------------------------
#vi inittab
-------------------------------------------------
:: sysinit: /etc/rc.d/rc.sysinit
:: askfirst: /bin/sh
-------------------------------------------------
以上是三个配置文件/tmp/flolinux/etc/inittab,/tmp/flolinux/etc/fstab,
/tmp/flolinux/etc/rc.d/rc.sysinit文件名以及文件内容。
注:inittab文件内容不留空格。
#cd /tmp/flolinux/bin
#which busybox
/sbin/busybox
检查busybox静态链接工具库是否安装,否则查看文章结尾。
#cp /sbin/busybox ./init 把busybox复制到当前目录并改成init文件
#ln -s init cp
#ln -s init cat
#ln -s init date
#ln -s init df
#ln -s init dmesg
#ln -s init echo
#ln -s init fsck
#ln -s init kill
#ln -s init ln
#ln -s init ls
#ln -s init mount
#ln -s init umount
#ln -s init mv
#ln -s init ps
#ln -s init pwd
#ln -s init sed
#ln -s init sh
#ln -s init sync
#ln -s init tty
创建符号链接前,查看man busybox—commands选项中同系统达到
共识的工具名称。
#cd /tmp/flolinux/sbin
#ln -s ../bin/init lsmod
#ln -s ../bin/init reboot
在sbin子目录下建立lsmod,reboot符号链接。注意使用相对路径。
#cd /tmp/flolinux/
#ln -s bin/init linuxrc
#tree 查看做了什么
制作镜像文件:
#cd /tmp
#dd if=/dev/zero of=/tmp/image bs=1k count=2048
#losetup /dev/loop0 /tmp/image
#mke2fs -m 0 /dev/loop0
#mkdir /mnt/imloop
#mount -t ext2 /dev/loop0 /mnt/imloop
#cp -a /tmp/flolinux/* /mnt/imloop/
#umount /mnt/imloop
#losetup -d /dev/loop0
#dd if=/tmp/image|gzip -9 > /tmp/initrd.gz
#sync
#cp /tmp/initrd.gz /mnt/floppy/
#sync
#df -h /mnt/floppy
Filesystem Size Used Avail Use% Mounted on
/dev/fd0 1.4M 1.3M 40k 98% /mnt/floppy
#umount /mnt/floppy
你看,制作成的linux软盘只有1.3M。
二:应用
在linux用软盘启动一般是忘了密码,就拿这个例子:
首先用软盘启动,自动安装内核跟解压镜像文件后:
please press Enter to activate this console. 回车
#
#ps 试输入命令
#mount 查看已经挂载哪些设备以及挂载点
/dev/ram0 on / type ext2 (rw)
proc on /proc type proc (rw)
/dev/hda7 on /mnt/linux type ext2 (rw)
#cd /bin
#pwd
#ln -s init more
#more /mnt/linux/etc/passwd
工具库busybox找不到文档编辑器,只有温习一下sed
#sed -n '/^root/p' /mnt/linux/etc/passwd
root:x:0:0:root:/root:/bin/bash
只要把x删去,就能畅通无助
#sed -n '/^root/s/x//p' /mnt/linux/etc/passwd
root::0:0:root:/root:/bin/bash
#cat /mnt/linux/etc/passwd
你会发现改动处丝毫无损,上步骤只能在内存起作用
#sed '/^root/s/x//' /mnt/linux/etc/passwd > /mnt/linux/etc/new.txt
先把原passwd文件备份,再把new.txt改名为passwd文件,就可以
完成。
三:后记
1;尽可能在使用软盘时不把rm软链接,别小看1.3M东西,它能把
几十G数据删掉。
2;使用系统自带busybox,命令reboot不起作用。当你想毛手毛脚
时可以下载busybox自行编译,(参照文档)步骤如下:
#tar zxvf busybox-0.51.tar.gz
(1)修改Makefile中DOSTATIC参数。把false改为true
(2)修改init.c内容:
---------------------------------------------------
#ifndef INIT_SCRIPT
#define INIT_SRCIPT "/etc/rc.d/rc.sysinit"
#endif
---------------------------------------------------
(3)
#make
#make install
3;本人试过编译内核,把网络选项下功能去掉,编译后只有450k。
4;当你经常编译新内核,把内核复制到软盘,修改grub.conf如下:
-----------------------------------------------------
default=0
timeout=10
title weixiao make Linux
[tab] root (fd0)
[tab] kernel /boot/vmlinuz-2.4.7-10 ro root=/dev/hda7
title DOS
[tab] rootnoverify (hd0,0)
[tab] chainloader +1
-----------------------------------------------------
5;setup (fd0) 是把软盘/boot/grub目录下stage1,stage2
安装到软盘引导记录,而e2fs_stage1.5意思是无需按软盘ext2
文件格式的原始块信息就可以装入stage2,《grub入门指南》
介绍中没把stage1.5放进软盘,经试验stage1.5跟硬件有关。
如果还没解决引导问题,可先采用mkbootdisk命令制造引导盘
(boot盘),若发现内核过大,RH linux光盘中有个用于安装
的内核(600多K,只不过名称不同),换一换,再按以上步骤
制造文件系统镜像(root盘)。
6;遇到问题的朋友请留言。 |
|