今天自己利用vmwere软件做了一个小型的linux,下面把实验心得写出来分享给大家。
实验环境:使用vmwere软件,在已经创建的一个虚拟机中再添加一块硬盘,5G左右就已经足够(为了以后实验别太吝啬自己的空间哟)。
实验操作:
打开此虚拟机,以root或管理员身份登录后,使用fdisk –l命令查看硬盘分区情况,此时发现新添加的硬盘未分区(这里我们假设第一块硬盘是/dev/sda,第二块硬盘是/dev/sdb),此处便是/dev/sdb未做任何处理,
然后对此块硬盘进行分区,由于实验需要,暂时我们将此硬盘分为两个分区(根分区和boot分区)/dev/sdb1及/dev/sdb2,方便操作以及后期的使用,此处我们将这两个分区格式化为ext3格式,
fdisk /dev/sdb
mke2fs –j/dev/sdb1
mke2fs –j /dev/sdb2
(此处硬盘规划:将/dev/sdb1创建为500M大小,为以后的boot分区,/dev/sdb1创建为512M大小为以后的根分区/)
然后建立两个挂载点,/mnt/boot及/mnt/sysroot,分别将先前的两个分区挂载在这两个挂载点上,
mkdir /mnt/boot
mkdir /mnt/sysroot
mount /dev/sdb1 /mnt/boot
mount /dev/sdb2/mnt/sysroot
然后我们就可以在第一块分区上创建系统引导程序(这里我们使用grub-install命令创建grub),
grub-install –root-directory=/mnt/dev/sdb
cd/mnt/boot
切换到/mnt/boot目录下,我们就发现已经多了几个文件,更包含grub目录,此时grub目录下面并没有grub.conf配置文件,稍后我们将作配置,这时系统肯定无法启动,
接下来我们再将系统中的vmlinuz-2.6.18-164.el5(此处因为版本不同可能会和您的版本号不同)文件拷到/mnt/boot目录下,
cpvmlinuz-2.6.18-164.el5.img.
此时我们需要对另外一个文件initrd-2.6.18-164.el5.img作一定的处理,切换到系统/tmp目录中,创建一个目录:
mkdirinitrd
cp/boot/ initrd-2.6.18-164.el5.img/tmp/initrd
切换到此目录下利用zcat和cpio命令展开此文件
zcat initrd-2.6.18-128.el5.img |cpio –id
然后编辑展开目录下的init文件中
修改mkrootdev -t ext3 -o defaults,ro /dev/vol0/root
为mkrootdev -t ext3 -o defaults,rosda2
保存退出(此处sda2为要创建文件的根目录)
然后再将此目录下的文件归档并压缩到指定目录,命名为initrd.gz
rm –finitrd-2.6.18-164.el5.img
find . |cpio -H newc -o --quiet |gzip -9 > /mnt/boot/initrd.g
这时再来编辑grub配置文件grub.conf
default=0
timeout=10
title kingshuo's little linux
root (hd0,0)
kernel /vmlinuz ro root=/dev/sda2quiet
initrd /initrd.gz
然后进入/mnt/sysroot目录中创建系统必需的目录
mkdir -p {boot,proc,sys,dev,home,root,etc/{rc.d,sysconfig,init.d},bin,sbin,lib,usr/{bin,sbin,lib,include},var/{log,run},tmp,mnt,opt,media
再编辑/mnt/sysroot/etc/inittab文件
id:3:initdefault:
si::sysinit:/etc/rc.d/rc.sysinit
保存退出
再编辑/mnt/sysroot/etc/rc.d/rc.sysinit文件
#!/bin/bash
echo -e echo -e "\t\tWelcome to \033[31;1mLittle\033[0m Linux..."
/bin/bash
因为此文件是个系统初始化启动脚本故需要添加执行权限
chmod+x/mnt/sysroot/etc/rc.d/rc.sysinit
此时系统还没有运行环境,需要使用拷贝bash
还需要拷贝与bash运行调用的库函数
ldd /bin/bash
cp /bin/bash/mnt/sysroot/bin/bash
cd/mnt/sysroot/bin/
cp /lib/libtermcap.so.2 /mnt/sysroot/lib/
cp /lib/libdl.so.2/mnt/sysroot/lib/
cp /lib/libc.so.6/mnt/sysroot/lib/
cp /lib/ld-linux.so.2/mnt/sysroot/lib/
然后进入/mnt/boot/bash,建立链接
ln–svbash sh
这时您就可以在当前虚拟机上测试了
这时您还不太相信吧,接下来您可以再新建一个虚拟机,利用现有的虚拟磁盘
准备停当后打开刚建的虚拟机,见证奇迹的时刻到了!
当然在这个系统中不能实现过多的命令,当您想实现更多的功能,想要添加相应的命令时,按照上述命令执行相应命令及函数的拷贝,自己赶快实验吧!
由于能力有限,可能某些细节及原理上叙述的不是很清楚,也难免有错误,欢迎大家指正!下面有个小脚本能够实行小linux的创建,有兴趣的话可以尝试一下!