终于做成两张软盘的Linux,但。。。
终于做成两张软盘的Linux,但方法与bixian的稍有所不同。首先多谢“风雪狂客”先生的指点,与bixian所提方法的主要不同有两点:
1 挂接文件系统时
mke2fs /dev/ram0
mkdir mt
mount /dev/ram0 /mt
2 sbin目前中加init
但还有个问题:在启动后出现下面一句话:
INIT:Id "2" respawning too fast:disabled for 5 minutes.
全过程如下:
制作两张软盘大小的linux
做一张盘的linux过程如下:
1.装某一个版本的linux,内核使用该版本自带的内核,在/boot目录下.
2将内传输到磁盘上:
dd if=/tmp/kernel of=/dev/fd0 bs=1k
(这里/tmp/kernel是内核的路径,如果你的内核在/boot下,文件名是vmlinuz则这里
命令:dd if=/boo/kernel of=/dev/fd0 bs=1k)
3传递参数:执行下面两个操作
rdev /dev/fd0 /dev/fd0
rdev -r /dev/fd0 49152
第二个操作后面的49152表示:提示要插入文件系统盘
4.制作文件系统.
(1)
mke2fs /dev/ram0
(2)建一个目录比如:在根目录下
mkdir mt
(3)mount /dev/ram0 /mt
以上3步与bixian所提方法有所不同。
(4)构建你自己的文件系统
在上面提到的目录/mt下 建如下目录
/bin /sbin /var /mnt /proc /lib /etc /dev
在/bin目录下:拷贝最常用的文件
mount ls ash (shell 也可以是别的,bash太大了所以我选用了ash只有几十k)
login hostname 以上文件可以在/bin目录下找到,直接拷贝就可以了
/sbin目录
getty(类似的文件如:mingetty等)/*直接用shell启动,不用init
init
bixian说不用init,但我没做成功,加上init后成功。
/lib连接库
至于需要什么连接库文件可以通过ldd来查找
在本例中开始他们都在/bin中)
ldd /bin/ash
......
ldd /bin/ls
.....
举一个例子:
ldd /sbin/mke2fs
libext2fs.so.2 => /lib/libext2fs.so.2 (0x40014000)
libcom_err.so.2 => /lib/libcom_err.so.2 (0x40026000)
libuuid.so.1 => /lib/libuuid.so.1 (0x40028000)
libc.so.6 => /lib/libc.so.6 (0x4002c000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
我们所需要的是右边的文件
在这里就是:
/lib/libext2fs.so.2
/lib/libcom_err.so.2
/lib/libuuid.so.1
/lib/libc.so.6
/lib/ld-linux.so.2
直接用cp拷贝到你的/mt/lib目录下就可以了
/etc目录:
最基本的三个文件
inittab rc fstab
内容分别如下:
rc文件
#!/bin/ash
/bin/mount -av
/bin/hostname yjy
fstab应包括:
/dev/ram0 / ext2 defaults
/dev/fd0 / ext2 defaults
/proc /proc proc defaults
inittab包括:
id:2:initdefault:
si::sysinit:/etc/rc
1:2345:respawn:/sbin/ash
2:23:respawn:/sbin/getty 9600 tty2
编写好这几个文件之后
还要修改rc的属性,使之为可执行的
chmod 755 rc.
/dev目录
将如下几个设备拷贝到你的dev目录下
/dev/ram0 /dev/fd0 /dev/mem /dev/null /dev/tty0 /dev/tty1 /dev/tty2
/dev/console
拷贝的时候要带参数-dpR
如:cp -dpR /dev/ram0 /mt/dev
将所用的设备文件拷贝完毕之后在修改他们的属性
chmod 666 /mt/dev/console
chmod 666 /mt/dev/ram0
chmod 666 /mt/dev/tty1
......
属性可以全部改为666的
(4)
mkdir -p /mt/var/{log,run}
touch /mt/var/run/utmp
备注:我这里直接用shell启动没用到login所以这一步也可以不做.
utmp记录的是当时有那些用户在使用系统
做完上面的工作后,将/dev/ram0卸载
umount /dev/ram0
然后可以吧文件系统打包,在写到另外一张软盘上
我一般习惯是把文件系统打包到tmp目录下,并取名fs.gz
dd if=/dev/ram0 bs=1k count=4096 |gzip -v9> /tmp/fs.gz
写到另外一张软盘上
dd if=/tmp/fs.gz of=/dev/fd0 bs=1k