在vmware中以redhat系统为基础构建小型linux

 vmware中以redhat系统为基础构建小型linux

在做这个小玩意之前,我们一起去看下这样一篇文章: Linux 操作系统启动流程以及trouble shooting。以及一篇比较易懂的文章:剖析Linux系统的启动过程

1、 准备磁盘。

a)   关闭或者挂起vmware下的redhat系统在原有redhat系统上创建一个新的磁   盘,为了方便以后的使用,对与这个磁盘的存放方式我们采用单独的文件,存放到一个容易找到的地方比如在D:\vm\SingleDisk 大小: 10G

b)   启动vmware下的redhat系统。在此系统下对新添加的磁盘进行操作:

i.      在命令行下输入{fdisk -l}来查看磁盘信息,我们会看到多出一块大小为 10G 左右的硬盘。

ii.  为这个硬盘(sdb)添加第一个分区,不必太大, 100M 足以。这里我们使用传统的配置方式:1fdisk /dev/sdb  你会看到这样的一句Command (m for help): 输入m,在出现的列表里面 nadd a new partition 表示添加一个新的分区,我们输入n之后会出现e extended (表示扩展分区); p primary partition (1-4)(表示主分区),其中(1-4)是主分区的分区号。为什么是1-4呢?因为在每个磁盘下最多能创建4个主分区。这个问题在这里不做深究。我们输入p ,接下来出现的是分区号的选择Partition number (1-4):  我们输入阿拉伯数字1,表示创建一个分区号为1的主分区。此时按下回车键,表示采用default value

       而后输入 + 100M ,按下enter键。最后输入w (表示写入write

iii.  #partprobe  à磁盘探测,不运行这个命令,在接下来,对新建的分区进行格式化#mkfs –t ext3/dev/sda2 的时候,你会发现 出现了这样的一句---Could not stat /dev/sda2 ---nosuch file or directory

iv.  接下来我们要对新建的分区进行格式化。采用命令mkfs -t ext3 /dev/sdb1 mkfsmake file system),-ttype), ext3(这个是系统的文件类型), /dev/sdb1(我们在sdb上创建的第一个分区)

2,、安装grub,并配置/boot/grub/grub.conf文件。

       GrubgrubGRand Unified Bootloader的缩写

它可以载入操作系统的内核和初始化操作系统

    我们知道linux对硬件的管理是以文件的形式进行的,所以在grub的安装之前,我们还要进行磁盘挂载。否则grub是没办法安装到硬盘的第一个分区(sdb1)上去的我们执行:

#mkdir /mnt/boot 

#mount /dev/sdb1 /mnt/boot

#grub-install --root-directory=/mnt /dev/sdb1

上述三条命令执行完毕后,我们cdchange directory)到/mnt/boot/目录下,然后执行lslist),这时我们可以看到lost+found目录和grub目录。lost+found目录的出现表示我们建立的分区是正常的,grub目录的出现表示我们的grub安装是正常的。

我们在/mnt/boot/grub/目录下创建grub.conf文件

#vim grub.conf

default=0  à这个跟title相对应,title可以有多个,0表示第一个title

timeout=5  à超时时间,有多个title时给用户的选择时间

title MyLinux

      root (hd0,0)  à 根,表示grub所使用的根即将hd0,0设置访问系统启动文件的起始点

      kernel /vmlinuz ro root=/dev/sda2   à指定内核文件和系统根目录。为什么能够直接访问/vmlinz文件,在文章开头我们说过grub的作用是载入操作系统的内核并初始化操作系统,所有我们有理由相信grub是可以直接     读取硬盘分区的

       initrd /initrd.gz    àLinux® 初始 RAM 磁盘(initrd)是在系统引导过程中挂载的一个临时根文件系统,用来支持两阶段的引导过程。initrd 文件中包含了各种可执行程序和驱动程序, 它们可以用来挂载实际的根文件系统,然后再将这个initrd RAM 磁盘卸载,并释放内存。如果你想对initrd文件有更进一步的了解请参看IBMinitrd文件的解释

#sync  à同步磁盘数据

#cd /boot/ à切换到redhat系统的/boot目录下并察看目录下的内容 #ll –ls

一、复制内核文件到/mnt/boot目录下,重命名为vmlinz

       #cp /boot/vmlinuz- 2.6.18 -164.el5 ./vmlinz

二、复制initrd文件到/mnt/boot目录下。

       在使用这个文件之前,我们还需要对其做些小的修改

#cp initrd- 2.6.18 -164.el5.img /tmp  à-2.6.18-164.el5这些跟版本号有关,我们可以不保留.

#cd /tmp

#mv initrd- 2.6.18 -164.el5.img initrd-2.6.18-164.el5.img.gz

#gzip -d initrd- 2.6.18 -164.el5.img.gz

#mkdir linux

#cp initrd- 2.6.18 -164.el5.img linux/

#cd linux

#cpio -id < initrd- 2.6.18 -164.el5.img  à-i”表示从哪里读入<”表示输入重定向

#vim init

    将倒数第7行改为

#mkrootdev –t ext3 –o defaults ,ro /dev/sda2         à这里出现了sda2,我们还没有建立这个分区

     保存退出

#rm initrd- 2.6.18 -164.el5.img     

       /tmp/linux目录下进行封装:

#find . | cpio –o –H newc –quiet | gzip -9 > /mnt/boot/initrd.gz  à找到/tmp/linux目录下所有的文件,用cpio进行打包后进行gzip 然后输出重定向为/mnt/boot目录下的initrd.gz件。

       现在我们创建第二个分区并将其挂载到/mnt/sysroot目录

#echo '

>n

>P

>2

>  

>+ 512M

>w ' | fdisk /dev/sdb &> /dev/null

#partprobe             à磁盘探测

#mkfs –t ext3 /dev/sdb2  àsdb2进行格式化

#mkdir /mnt/sysroot             à/mnt目录下创建sysroot目录

#mount /dev/sdb2 /mnt/sysroot  à/dev/sdb2 挂载到目录/mnt/sysroot目录下

       接下来我们对系统运行所必需的文件进行简单的配置:

#cd /mnt/sysroot à我们切换到/mnt下的sysroot目录下进行下面将要进行的操作!

#cp /sbin/init sbin/ àinit的运行需要inittab所以我们在/mnt/sysrootmkdir etc

#mkdir etc然后创建inittab文件

#vim etc/inittab  à这是在/mnt/sysroot 目录下进行的

       添加如下内容:

id:3initdefault:

si::susinit:/etc/rc.d/rc.sysinit

       保存退出

       在这里我们看到了一个PATH /etc/rc.d/rc.sysinit 在这里我们从名称上对rc.sysinit进行解读rc à run command ; sysinit à系统初始化  所以我们可以得到的信息是,这可能是一个系统初始化脚本,他的确是一个system initialize run command简称rc.sysinit

       我们的小系统还没有这个脚本,所以我们要自己制作一个。

       制作/etc/rc.d/rc.sysinit脚本

#mkdir etc/rc.d

vim etc/rc.d/rc.sysinit

       添加如下内容:

#!bin/bash

echo –e \tMyLinux 如果系统可以成功启动,你可以看到MyLinux这几个字

/bin/bash

       保存退出!

#chmod +x etc/rc.d/rc.sysinit   à添加执行权限

       因为系统内核是没有bash的执行条件的,所以我们要自己建立bash的运行环境。

       复制/bin/bash/mnt/sysroot目录下

#mkdir bin

#cp /bin/bash bin/

#ldd /bin/bash à查看bash程序运行所需要的库文件

#mkdir lib   à同样也是/mnt/sysroot/目录下的操作,lib:library的简称

#cp /lib/libtermcap.so.2 lib/

#cp /lib/libdl.so.2 lib/

#cp /lib/libc.so.6 lib/

#cp /lib/ld-linux.so.2 lib/

#ldd /sbin/init  à察看init运行所要的库文件

#cp /lib/libsepol.so.1 lib/

#cp /lib/libselinux.so.1 lib/

   到此为止,我们的准备工作已经完成了,下面我们在虚拟机上新建一个系统,需要注意的地方是

           1install from 我们选择最后那个,I will install the operating system later

           2、内存的选择。不要太大, 512M

           3、磁盘的选择    Use an existing virtual disk 接下来就是选择开始时创建的第二块硬盘,我们的位于D:\vm\SingleDisk目录下

注意:

在你启动新建系统前,需要挂起或者关闭宿主机,也就是前面我们操作的那台机器,因为一个正在被使用的硬盘是无法再另一个系统下被使用的。

附加:

#grub-md5-crypt

创建md5加密的密码 当你需要加密的时候用的着的。

你可能感兴趣的:(linux,职场,构建,休闲,小型linux)