自己动手制作linux硬盘启动

原创 2006年06月12日 17:02:00

要求: 有一个已安装的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来切换控制台。

 

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

程序员修电脑必备: 使用Grub2制作一个多系统(WinPE与Linux, Android X86)启动的维护移动硬盘和U盘

说明 多台计算机安装了不同的系统(Windows, Linux, MacOS), 因为种种因素不得不对系统重新安装, 每一次都是重新制作启动和维护移动存储设备, 为了节省时间, 考虑制作一个即可启动和...

联想Y470 非虚拟机安装苹果Mac OS X Mavericks 10.9.1教程详解(文字+图片),通俗易懂亲自动手——序列一之综述简介,硬盘分区

最近小编更新Linux系统后发现无法启动,于是乎就重新

《自己动手写操作系统 》第九章 一 简易硬盘驱动的实现

摘要:我们都知道磁盘由控制器、磁头等组件组成。我们在终端编辑文件的时候,文件内容是如何从内存到达磁盘的呢?磁盘驱动主要完成哪些工作?硬盘中断是如何触发的?等等,这些都是硬盘工作的基本原理。本文主要从“...

自己动手制作u盘启动盘,借助UltraISO就行了

制作u盘启动盘并不是技术人员的专利,现在我们可以利用软件自己动手制作u盘启动盘,小编为大家介绍一款u盘启动盘制作工具——ultraiso软碟通,跟完美小编一起来学习一下是怎么做的吧! 首先,...
  • kong_za
  • kong_za
  • 2017年06月02日 14:38
  • 991

用qemu搭建linux环境的最简单步骤(硬盘启动)

只有有了最基本的东西,才能在此基础上起飞! 环境: ubuntu14 x86_64 cpu 过程很简单,准备,制作和运行 ---------------------------------------...

linux 挂载磁盘阵列+开机启动+超过2T大硬盘

这次干活,服务器硬盘26T,但是发现无论是Ubuntu11.04还是Centos5.6,都是无法直接分配一个分区超过16T. 没想到,linux还有这个局限。改天好好研究一下这个。 2014年...

编写MBR从硬盘启动linux0.11

计算机启动时BIOS会把启动盘第一个扇区的数据读入内存0x7C00开始处,然后跳到这里继续执行。从硬盘启动和从软盘启动唯一的区别就是映象文件存储方式的不同: 1. 对于从软盘启动的方式,映象文件连续...

Linux硬盘分区,挂载,格式化,加到开机启动项

Linux硬盘分区,挂载,加到开机启动项

硬盘分区原理及操作系统启动过程(总结自鸟哥Linux私房菜)

硬盘组成:        主要许多由盘片,机械手臂,磁头与主抽马达组成。盘片可分为扇区与柱面两种单位,每一个扇区为512bytes。        整个盘片就如多个同心圆绘制出的饼图,而由圆心以放...
  • remian
  • remian
  • 2012年10月21日 21:20
  • 382
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:自己动手制作linux硬盘启动
举报原因:
原因补充:

(最多只允许输入30个字)