首页 > 开发 > 综合 > 正文

制作自己的Floppy-Linux Step By Step

2024-07-21 02:36:51
字体:
来源:转载
供稿:网友

  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。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表