发新话题
打印

制作两张软盘大小的linux

制作两张软盘大小的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)
dd if=/dev/zero /dev/ram bs=1k count=4096
(2)
mkfs.ext2 -vm0 /dev/ram bs=1k 4096
(3)建一个目录比如:在根目录下
  mkdir mt
  用ls察看到  /mt  /sbin  /bin  可以看到根目录下已经建好/mt目录
  然后将内存区装载到该目录下:
  mount /dev/ram /mt
(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
/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/sh
/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/ram卸载
umount /dev/ram
然后可以吧文件系统打包,在写到另外一张软盘上
我一般习惯是把文件系统打包到tmp目录下,并取名fs.gz
dd if=/dev/ram bs=1k count=4096 |gzip -v9> /tmp/fs.gz
写到另外一张软盘上
dd if=/tmp/fs.gz of=/dev/fd0 bs=1k
以上只是一个简单过程.大家可以根据需要定制自己的/bin  /sbin目录下的文件
不过大小很关键./lib目录下的文件最大,还有一种方法是编译成静态连接库,这方面的资料
还没有整理完.除此之外还可以用busybox这个软件包.
以上都是用内核启动的,也有用lilo启动.这种方法我也在尝试,做完再贴
大家有什么问题的可以写信给我:tjcbq@163.net.      

TOP

请问这样做出来的LINUX能干什么用?      

TOP

熟悉系统嘛,也可以作为自己的工具盘嘛!
给个建议就是采用busybox和ext2压缩文件系统,可以做出更好的一张软盘的工具盘。      
千日风雪,万里独行。 真痴假狂,亦侠亦客。

TOP

为什么先mount /dev/ram /mt,制作完文件系统后又 umount /dev/ram ?

我在mount /dev/ram /mt时,出现提示:You must special filesystem type.我想应该是mount -t filesystem-type /dev/ram /mt。但我不知道用什么文件系统,所以这一步没有做,结果启动到第二张盘时出现错误:
  Kernel Panic: No boot fs 这类的信息,就停这儿了。
  请在大侠指导!!      

TOP

你应该先在/dev/ram0上建立文件系统。
mke2fs /dev/ram0
然后再
mount /dev/ram0  /mnt      
千日风雪,万里独行。 真痴假狂,亦侠亦客。

TOP

发新话题