分类: LINUX
2011-08-18 22:43:38
这次我说的是自己制作小Linux的方法:
环境:需要在rhlinux5做宿主机,一块IDE 、40G的硬盘,也就是在这块硬盘上做属于自己的linux.
在IDE硬盘,创建一个至少两个分区并格式化,一个做boot引导,一个做根目录,当然也可以创建个交换分区(不是必须的)
格式化的命令是fdisk /dev/sdb
#mkfs.ext3 /dev/sdb1
#mkfs.ext3 /dev/sdb2
创建目录用来挂载的:
#mkdir /mnt/{boot , sysboot}
#mount /dev/sdb1 /mnt/boot
#mount /dev/sdb2 /mnt/sysboot
在/mnt/sysboot中创建根目录所需的目录:
# mkdir -pv etc/rc.d lib bin sbin usr/{bin,etc,lib,sbin} proc sys dev tmp /tmp/initrd
此时我们要copy一些linux需要的库和SHELL,在这里说一下:linux其实就是个shell,这里只是构建最简单的。这一步copy, bash需要的脚本和依赖的库,你可以用which bash 和 ldd /bin/bash看到所需的脚本和依赖的库
cp /lib/libsepol.so.1 /mnt/sysboot/lib/
cp /lib/libselinux.so.1 /mnt/sysboot/lib/
cp /lib/libtermcap.so.2 /mnt/sysboot/lib/
cp /lib/ld-linux.so.2 /mnt/sysboot/lib/
cp /lib/libdl.so.2 /mnt/sysboot/lib/
cp /lib/libc.so.6 /mnt/sysboot/lib/
cp /sbin/init /mnt/sysboot/sbin/
cp /bin/bash /mnt/sysboot/bin/
cp /boot/vmlinuz-2.6.18-164.el5 /mnt/boot/vmlinuz
拷贝完了,你要验证一下:chroot /mnt/sysboot ,如果你能进到shell中,那你就说明你的bash可以用。下一步开始做/mnt/boot的,这个目录就是linux在启动时需要用到的也是你能否进入linux中。很是关键!
安装GRUB, 这是个引导工具
#grub-install --root-directory=/mnt /dev/sdb
重新生成内核:
# cd /tmp/initrd
# zcat /boot/initrd-2.6.18-164.el5.img | cpio –id
打开init并找到mkrootdev ***** Ro /dev/vol10/root这类似的一行将ro /dev/**** 改成 ro sda2 (注意这里的***是省去的文字)
重新封装
#find . | cpio --quiet -H newc -o | gzip -9 -n > /mnt/boot/initrd.gz
更改gub.conf
#cd /mnt/boot/grub/
把如下文字复制在grub.conf文件中,可能有时你会找不到该文件,那你就自己创建个该文件touch grub.conf (位置一定要对/mnt/boot/grub)
#default=0
#timeout=3
# title my little linux
# root (hd0,0)
#kernel /vmlinuz ro root=/dev/sda2
#initrd /initrd.gz
注这里的#,你在复制时一定要去掉!!!
编辑inittab文件,该文件的位置在/mnt/sysboot/etc/inittab (没有initab自己创建),写下面内容
#id:3:indefault:
#si::sysinit:/etc/rc.d/rc.sysinit
编辑rc.sysinit文件,文件的位置/mnt/sysboot/etc/rc.d/,在文件中写面内容
#!bin/bash
#echo –e “\033[32m my linux \033[0m”
#mount –n –o remount..rw /
#mount –n -a
#/bin/bash
让该文件具有执行权限
#chmod +x rc.sysinit
让磁盘同步一下
#sync
# sync
这里你就完成了,可以令创建一个虚拟机,在选择硬盘在时候使用链接的,用上这个40G、IDE的硬盘,启动机器。你就可以进入到你自己的linux中去了,当然此时的功能很是少,你可以将你需要命令和网络一起复制里面就行了。
要用网络需要能有网络模块才可以, 需要pcnet32和mii模块;
这里你要有以下命令才可,当然也是用来验证的 (ping , ifocnfig ,insmod, rmmod ,modprobe这是必须的)
Modinfo pcnet32 查看到详细信息 ,modinfo mii 也以能看信息,将模块拷贝能/mnt/sysboot/ 相应的目录下
当让你的linux能启动就可以使用需要在开机就装载,需要改/mn/sysboot/etc/rc.d/rc.sysinit 添加如下内容:
#!bin/bash
#echo –e “\033[32m my linux \033[0m”
#mount –n –o remount..rw /
#mount –n –a
# [ -e /lib/modules/mii.ko ] && /sbin/insmod /lib/modules/mii.ko 判断是不装载并装载模块
# [ -e /lib/modules/mii.ko ] && /sbin/insmod /lib/modules/pcnet32.ko
# echo “ Load modules card drive OK “ 用来显示
# echo “ Set the address for lo”
# /sbin/ifconfig lo 127.0.0.1 设置ip
# /sbin/ifconfig eth0 192.168.0.111
#/bin/bash
这样就OK了,小linux就此初步完成,且具就网络功能!!