手把手打造属于自己的Linux系统


写在前面:

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 命令,我们看到了一块完整的未经开垦的硬盘:

  1. Disk /dev/sdc: 8589 MB, 8589934592 bytes  
  2. 255 heads, 63 sectors/track, 1044 cylinders  
  3. Units = cylinders of 16065 * 512 = 8225280 bytes  
  4.   
  5.    Device Boot      Start         End      Blocks   Id  System  
它的名字叫/dev/sdc

于是,我们开始给他分区,首先我们要给他分一块主分区,专门放置我们的小系统的内核等重要的文件。

然后我们要分一块稍微大一点的分区,这是我们的应用分区,我们以后所有的各种文件都将放在这个分区里。

使用fdisk /dev/sdc 设置我们硬盘的各个分区之后,确认,于是硬盘成了这个样子:

  1. Disk /dev/sdc: 8589 MB, 8589934592 bytes  
  2. 255 heads, 63 sectors/track, 1044 cylinders  
  3. Units = cylinders of 16065 * 512 = 8225280 bytes  
  4.   
  5.    Device Boot      Start         End      Blocks   Id  System  
  6. /dev/sdc1               1          13      104391   83  Linux  
  7. /dev/sdc2              14         136      987997+  83  Linux  
好的~,我们将其格式化成ext3文件系统,然后分别将两块硬盘挂载在我们新建的两个目录上,

1.我们将/dev/sdc1挂载在/mnt/boot中(这就是我们的存放内核等重要文件的分区)

2.我们将/dev/sdc2挂载在/mut/sysroot下(而这个,就是我们日常应用的分区)


好的,接下来。我们就要开始将boot loader,整个磁盘的引导信息写入我们新的硬盘中了。

Linux为我们提供了grub这个好用的写入也是读取更是引导程序。我们只需要使用命令:

  1. [root@station86 ~]# grub-install --root-directory=/mnt /dev/sdc  

即可将grub安装在了我们的sdc上,并且默认给他的目录是/mnt。为什么是/mnt而不是/mnt/boot呢?

因为 grub安装后,会自动在那个磁盘的根目录下创建/boot目录,所以我们只需要指定它的父目录,即/mnt即可。

于是,我们看看刚才安装的/mnt下有

  1. total 14  
  2. drwxr-xr-x 2 root root  1024 Aug  3 07:45 grub  
  3. drwx------ 2 root root 12288 Aug  3 07:42 lost+found  
而进入grub里,则是已经安装在我们这里的文件
  1. total 197  
  2. -rw-r--r-- 1 root root     60 Aug  3 07:45 device.map  
  3. -rw-r--r-- 1 root root   7584 Aug  3 07:45 e2fs_stage1_5  
  4. -rw-r--r-- 1 root root   7456 Aug  3 07:45 fat_stage1_5  
  5. -rw-r--r-- 1 root root   6720 Aug  3 07:45 ffs_stage1_5  
  6. -rw-r--r-- 1 root root   6720 Aug  3 07:45 iso9660_stage1_5  
  7. -rw-r--r-- 1 root root   8192 Aug  3 07:45 jfs_stage1_5  
  8. -rw-r--r-- 1 root root   6880 Aug  3 07:45 minix_stage1_5  
  9. -rw-r--r-- 1 root root   9248 Aug  3 07:45 reiserfs_stage1_5  
  10. -rw-r--r-- 1 root root    512 Aug  3 07:45 stage1  
  11. -rw-r--r-- 1 root root 104988 Aug  3 07:45 stage2  
  12. -rw-r--r-- 1 root root   7072 Aug  3 07:45 ufs2_stage1_5  
  13. -rw-r--r-- 1 root root   6272 Aug  3 07:45 vstafs_stage1_5  
  14. -rw-r--r-- 1 root root   8904 Aug  3 07:45 xfs_stage1_5  
  • 1
  • 2
  • 3
  • 下一页

相关内容