自己动手制作linux硬盘启动

来源:互联网 发布:数据库insert into 编辑:程序博客网 时间:2024/05/16 12:11

要求: 有一个已安装的linux系统和一个空的硬盘, 这里用VMWare 虚拟机作测试环境,用knoppix作linux系统。

        用这样的环境仅仅是为了方便说明。

1) 从光盘启动knoppix

2) 用fdisk为硬盘分区 (记得要切换到root用户,VMWare创建系统时默认为SCSI硬盘, 不过这里假设硬盘为hda)

3) mke2fs hda1

4) mount /dev/hda1 /mnt/hda1 && cd /mnt/hda1

4) mkdir -p bin lib etc dev sbin boot/grub home

5) cp /usr/share/grub/i386-redhat/stage1 /mnt/hda1/grub/

    cp /usr/share/grub/i386-redhat/stage2 /mnt/hda1/grub/

6) 建/mnt/hda1/grub/menu.lst文件,内容如下:

       cat >> menu.lst << END

      >default 0

      >timeout 10

      >title my-linux

      >      root (hd0,0)

      >      kernel /boot/vmlinuz root=/dev/hda1 rw

 7) 拷贝 bash mknod chmod cat mkdir rm echo cp mv ln ls mount umount init mingetty login等常用文件  

   到 /mnt/hda1/bin下, 不过要记得拷贝他们的链接库so文件到/mnt/hda1/lib下,可以用ldd命令

   查看他们需要的库文件。这些命令也可以用bushbox和tinylogin来代替,这里不多说。

    ln -s bash sh

8) 建建设备文件 hda hda1 hdc(一般为cdrom) console tty0~tty6

    mknod hda b 3 0

    mknod hdc b 22 0

    mknod hda1 b 3 1

    mknod console c 5 1

    mknod tty0 c 4 0

    mknod tty1 c 4 1

     .......

9) 拷贝内核文件,重命名为vmlinuz

    cp /boot/vmlinuz-2.6.xxxx /mnt/hda1/boot/vmlinuz

10) umount /mnt/hda1

11) 使用grub引导。执行grub命令,

      grub

     #root (hd0,0)

    #setup (hd0)

    提示制作grub引导成功

12)  重起。从硬盘启动。。。启动到最后,会出现init失败,系统panic

13) 制作inittab

      再次从光盘启动knoppix。

      mount /dev/hda1 /mnt/hda1 && cd /mnt/hda1

      cd etc && cat  inittab

      >#id:3:sysinit:/etc/rc.d/rc.init   启动时的系统设置,这里可以不要

       >tty1::respawn:/bin/mingetty tty1

       >tty2::respawn:/bin/mingetty tty2

      ......

       >tty6::respawn:/bin/mingetty tty6

      >END

      这里只配置了6个登录控制台。因为mingetty会调用login来让用户登陆,而login又依赖/etc/passwd来

      检查用户的合法性,而login又需要 /etc/nsswitch.conf来描述如何读 /etc/passwd数据库,所以我们要配置

       这两个文件.

       cat >> /mnt/hda1/etc/passwd <<END

        >root::0:0::/home:/bin/bash

        >END

        cat >> /mnt/hda1/etc/nsswitch.conf <<END

         >passwd:     files

         >shadow:     files

         >group:         files

         >hosts:         files dns

         >END

      /etc/shadow是passwd的影子文件,起保护密码作用。/etc/group是描述组的文件。这里这两个文件都忽略了。

       还可以建一个/etc/issue文件,用作每次提示用户登陆之前的提示信息,

       cat >> /mnt/hda1/etc/issue <<END

        > HELLO, WELCOM!

        >END

      另外,还需要拷贝/lib/libnss_xxx.so 到 /mnt/hda1/lib/

      umount /mnt/hda1

14) 从硬盘重起。。。。

       HELLO,WELCOM!

       (none)login:

     输入root就可以登陆了,可以用alt+F1~F6来切换控制台。

 

     写得比较简单,如果写详细有太多的内容。