linux系统组成之小型RedHat little linux制作一
⑴、利用Redhat.Enterprise.Linux.v5.8为环境宿主机,对RedHat系统进行精简,制作一个能实现linux级别功能的微型linux小系统。环境搭建:RedHat Enterprise Linux 5.8系统,新增一块IDE接口的硬盘。
具体制作步骤:
1、新增加一块IDE硬盘,新建两个分区hda1和hda2,分别挂载到/mnt/boot,/mnt/sysroot下。
命令如下:
[*] fdisk /dev/hda ....
[*] partprobe /dev/hda
[*] mke2fs -j /dev/hda1
[*] mke2fs -j /dev/hda2
[*] fdisk -l
结果如下
挂载硬盘:
[*] mkdir -p /mnt/boot
[*] mkdir -p /mnt/sysroot
[*] mount /dev/hda1 /mnt/boot/
[*] Mount /dev/hda2 /mnt/sysroot/
[*] mount
2、安装内核:利用系统内的内核直接复制过来利用,并放在新建的分区1下命名为vmkinux
[*] cp /boot/vmlinuz-2.6.18-e.. /mnt/boot/vmlinuz/mnt/boot/vmlinuz
3、制作initrd:利用系统原有的initrd文件制作新的initrd
vim init//把不需要的模块都给注释点,启动的时候不在加载,保留下面的即可
把加载root目录的路径修改为/dev/hda2
删除lib下不需要的库文件,只保留firmware、ext3.kofirmwarejbd.ko即可
重启打包并复制到/mnt/boot下。重新命名为initrd.gz
[*] find . | cpio -H newc --quiet -o | gzip -9 >/mnt/boot/
[*] find . | cpio -H newc --quiet -o | gzip -9 >/mnt/boot/initrd.gz
至此inited制作完毕
4、系统引导之grub的制作:
安装grub:grub-install --root-directory=/mnt /dev/hda
进入grub文件,配置grub.conf文件
[*] cd /mnt/boot/grub/grub.conf
[*] vimgrub.cong
[*] 加入以下命令
[*] default=0
[*] timeout=3
[*] title chris tille linux
[*] root (hd0,0)
[*] kernel /vmlinuz
[*] initrd /initrd.gz
[*] grub配置完成。
5、建立真正的根目录/mnt/sysroot
新建目录并把原系统内的initrd展开到此文件,对init进行编辑
[*] cd /mnt
[*] mkdir test
[*] cd test
[*] zcat /boot/initrd-2.6.18-308.el5.img | cpio -id
[*] cd /mntsysroot/
[*] 创建必须的文件目录
[*] mkdir -p sys etc/{rc.d,init.d} root boot bin sbin var{log,lock,run} dev home tmp lib usr/{bin,sbin}
[*] 配置系统启动文件etc/inittab,添加如下内容
[*] id:3:initdefault:
[*] si::sysinit:/etc/rc.d/rc.sysinit
[*] 配置增加启动脚本/etc/rc.d/rc.sysinit,添加如下内容
[*] vim etc/rc.d/rc.sysinit
[*] #!/bin/bash
[*] #
[*] echo "welecome chris little linux"
[*] /bin/bash
[*] 对脚本增加执行权限
[*] chmod +x etc/rc.d/rc.sysinit
6、增加系统运行环境和命令(由于命令运行的时候需要依赖一些库文件,所以此利用一个脚本增加命令)
[*] 脚本addshell.sh如下
[*] #!/bin/bash
[*] #!/bin/bash
[*] #
[*] DEST=/mnt/sysroot
[*] DIRE() {
[*] if [ -d $DEST/$CMD ]; then
[*] echo "this direstory is inxted"
[*] else
[*] mkdir -p $DEST/$CMD &> /dev/null
[*] echo "$CMD is a directory,mkdir finished"
[*] fi
[*] }
[*] 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/[^[:space:]]\{1,\}"`; do
[*] libcp $LIB
[*] done
[*] }
[*] read -p "Your command: " CMD
[*] until [ $CMD == 'q' ]; do
[*] which $CMD &>/dev/null
[*] MM=`echo $?`
[*] if [ $MM -eq 0 ]; then
[*] ! which $CMD && echo "Wrong command" && read -p "Input againe: " CMD && continue
[*] COMMAND=` which $CMD | grep -v "^alias" | grep -o "[^[:space:]]\{1,\}"`
[*] bincp $COMMAND
[*] echo "copy $COMMAND finished."
[*] read -p "Continue:" CMD
[*] else
[*] DIRE
[*] read -p "Continue:" CMD
[*] fi
[*] done
增加系统的第一个进程init
增加系统的bash等
至此:一个极其简单的小linux建立成功,sync同步数据,利用IDE硬盘新建一个系统测试结果如下
页:
[1]