定制属于自己的linux

以下是我在虚拟机制作一个小的linux的过程

准备工作:

在虚拟机上在一个已经安装的linux系统上加一块小硬盘,并分好两个区(boot分区和根分区)并格式化。

步骤:

1、/mnt上创建两个目录bootsysroot,并把刚分好的两个分区挂载到这两个目录上

定制属于自己的linux_定制属于自己的linux

2、复制本系统的内核到/mnt/boot

(1)复制/boot/vmlinuz-2.6.18-308.el5/mnt/boot

(2)解压展开initrd-2.6.18-308.el5.img到一临时文件夹

定制属于自己的linux_定制属于自己的linux_02

(3)更改init文件,如图:

定制属于自己的linux_定制属于自己的linux_03

(4)、去除lib里多余的模块

定制属于自己的linux_定制属于自己的linux_04

5)、归档压缩至/mnt/boot命名为initrd.gz

定制属于自己的linux_定制属于自己的linux_05

3、安装grub,创建grub的配置文件

定制属于自己的linux_定制属于自己的linux_06

grub下创建grub配置文件grub.conf,内容如图:

4、创建常用目录

定制属于自己的linux_定制属于自己的linux_07

5、编辑initab文件

定制属于自己的linux_定制属于自己的linux_08

内容如下图:

 

定制属于自己的linux_定制属于自己的linux_09

 

6、编辑rc.sysinit文件

定制属于自己的linux_定制属于自己的linux_10

内容如下图:

定制属于自己的linux_定制属于自己的linux_11

7、给加上权限

定制属于自己的linux_定制属于自己的linux_12

8、复制initbash及常用命令和它们依赖的库

  这里用写的一个脚本完成,该脚本内容如:

#!/bin/bash

#

read -t 30 -p "Target System Directory[/mnt/sysroot]: " DEST

DEST=${DEST:-/mnt/sysroot}

libcp() {

  LIBPATH=${1%/*}

  [ ! -d $DEST$LIBPATH ] && mkdir -p $DEST$LIBPATH

  [ ! -e $DEST${1} ] && cp $1 $DEST$LIBPATH && echo "copy lib $1 finished."

}

bincp() {

  CMDPATH=${1%/*}

  [ ! -d $DEST$CMDPATH ] && mkdir -p $DEST$CMDPATH

  [ ! -e $DEST${1} ] && cp $1 $DEST$CMDPATH

  for LIB in  `ldd $1 | grep -o "/.*lib\(64\)\{0,1\}/[^[:space:]]\{1,\}"`; do

    libcp $LIB

  done

}

read -p "Your command: " CMD

until [ $CMD == 'q' ]; do

   ! which $CMD && echo "Wrong command" && read -p "Input again:" CMD && continue

  COMMAND=` which $CMD | grep -v "^alias" | grep -o "[^[:space:]]\{1,\}"`

  bincp $COMMAND

  echo "copy $COMMAND finished."

  read -p "Continue: " CMD

done

添加过程如图:

 

定制属于自己的linux_定制属于自己的linux_13

9、挂起虚拟机,新建一个虚拟机,选择已存在硬盘,如图:

定制属于自己的linux_定制属于自己的linux_14

10、把刚配置的那块硬盘挂上启动,这样就算能基本启动一个linux系统了如图:

定制属于自己的linux_定制属于自己的linux_15

到这一步只是做了个能进去的linux系统,还有许多功能没加上去,后面我们会接着这个加上用户,运行级别,ssh远程登录等功能,请继续关注