写在前面:
1:以下的实现过程都使用VM虚拟机,在这上面实现的.
2:实现打造属于自己的Linux系统,其实用的是将现有的完整的Linux系统精简,然后打包做成不到10M的系统.
3:我所用的Linux系统为Redhat Enterprise Linux 5(内核为 2.6.18)
=======================================================================
,我们要知道,一个linux的系统之能够启动,需要什么?
1.需要一个boot loader,以确保能够带起硬盘
2.需要一个内核.(废话-.-)
3.需要一个小型的能够加载内核文件系统的程序(initrd)
4.需要一个能够定义如何启动的文件(inittab)
5.需要inittab中供启动的rc.sysinit文件
其实,一个linux能够启动,需要的也就是这么多,那接下来,我们开始一步步着手准备!
--------------------------------------------------------------------------------------------------
第一步:准备工作,并创建引导文件!
既然我们需要boot loader能够带起硬盘,那么我们总要先有个硬盘吧?
好,调用虚拟机,给我们的现有的linux额外增加一块新硬盘,这块硬盘可以不用太大,够用就好,比如?嗯……8G,够你用了吧?
点击Add,添加一块新的硬盘,设置大小为8G,其他默认,然后点ok~
进入我们的Linux系统.使用fdisk -l 命令,我们看到了一块完整的未经开垦的硬盘:
- Disk /dev/sdc: 8589 MB, 8589934592 bytes
- 255 heads, 63 sectors/track, 1044 cylinders
- Units = cylinders of 16065 * 512 = 8225280 bytes
- Device Boot Start End Blocks Id System
它的名字叫/dev/sdc
于是,我们开始给他分区,我们要给他分一块主分区,专门放置我们的小系统的内核等重要的文件.
然后我们要分一块稍微大一点的分区,这是我们的应用分区,我们以后所有的各种文件都将放在这个分区里.
使用fdisk /dev/sdc 设置我们硬盘的各个分区之后,确认,于是硬盘成了这个样子:
- Disk /dev/sdc: 8589 MB, 8589934592 bytes
- 255 heads, 63 sectors/track, 1044 cylinders
- Units = cylinders of 16065 * 512 = 8225280 bytes
- Device Boot Start End Blocks Id System
- /dev/sdc1 1 13 104391 83 Linux
- /dev/sdc2 14 136 987997 83 Linux
好的~,我们将其格式化成ext3文件系统,然后分别将两块硬盘挂载在我们新建的两个目录上,
1.我们将/dev/sdc1挂载在/mnt/boot中(这就是我们的存放内核等重要文件的分区)
2.我们将/dev/sdc2挂载在/mut/sysroot下(而这个,就是我们日常应用的分区)
好的,接下来.我们就要开始将boot loader,整个磁盘的引导信息写入我们新的硬盘中了.
Linux为我们提供了grub这个好用的写入也是读取更是引导程序.我们只需要使用命令:
- [root@station86 ~]# grub-install --root-directory=/mnt /dev/sdc
即可将grub安装在了我们的sdc上,并且默认给他的目录是/mnt.为什么是/mnt而不是/mnt/boot呢?
grub安装后,会自动在那个磁盘的根目录下创建/boot目录,我们只需要指定它的父目录,即/mnt即可.
于是,我们看看刚才安装的/mnt下有
- total 14
- drwxr-xr-x 2 root root 1024 Aug 3 07:45 grub
- drwx------ 2 root root 12288 Aug 3 07:42 lost found
而进入grub里,则是已经安装在我们这里的文件
- total 197
- -rw-r--r-- 1 root root 60 Aug 3 07:45 device.map
- -rw-r--r-- 1 root root 7584 Aug 3 07:45 e2fs_stage1_5
- -rw-r--r-- 1 root root 7456 Aug 3 07:45 fat_stage1_5
- -rw-r--r-- 1 root root 6720 Aug 3 07:45 ffs_stage1_5
- -rw-r--r-- 1 root root 6720 Aug 3 07:45 iso9660_stage1_5
- -rw-r--r-- 1 root root 8192 Aug 3 07:45 jfs_stage1_5
- -rw-r--r-- 1 root root 6880 Aug 3 07:45 minix_stage1_5
- -rw-r--r-- 1 root root 9248 Aug 3 07:45 reiserfs_stage1_5
- -rw-r--r-- 1 root root 512 Aug 3 07:45 stage1
- -rw-r--r-- 1 root root 104988 Aug 3 07:45 stage2
- -rw-r--r-- 1 root root 7072 Aug 3 07:45 ufs2_stage1_5
- -rw-r--r-- 1 root root 6272 Aug 3 07:45 vstafs_stage1_5
- -rw-r--r-- 1 root root 8904 Aug 3 07:45 xfs_stage1_5
|