做出一个简单的linux系统首先要有内核,驱动,init,ini听他爸,常用指令,库文件,做完后,做一个简单的应用。
【详细步骤】
1首先先在宿主机上添加一块硬盘
然后对硬盘进行分区
[root@localhost ~]# fdisk /dev/sdb
n添加p主分区
查看
做标示
做可引导
w保存退出
前面两分区格式化
[root@localhost ~]# mkfs -t ext3 /dev/sdb1
[root@localhost ~]# mkfs -t ext3 /dev/sdb2
建立挂载点
[root@localhost boot]# mkdir /mnt/boot
[root@localhost boot]# mkdir /mnt/boot
挂载
[root@localhost boot]# mount /dev/sdb1 /mnt/boot
[root@localhost boot]# mount /dev/sdb2 /mnt/sysroot
建grub第二阶段
[root@localhost boot]# grub-install --root-directory=/mnt/ /dev/sdb
查看grub
[root@localhost boot]# ll /mnt/boot/grub/
发现没有grub, 接下来建第一阶段,手工建grub
grub> root (hd1,0)
grub> setup (hd1)
grub第一阶段做完,然后去编写grub
首先拷贝内核和驱动
[root@localhost grub]# cp /boot/vmlinuz-2.6.18-164.el5 /mnt/boot/
驱动
建个文件夹
mkdir abc
[root@localhost abc]# zcat /boot/initrd-2.6.18-164.el5.img |cpio -id
ll
vi init
93行禁用加载卷标的没用
95 行sda2
打包
[root@localhost abc]# find . |cpio -o -H newc --quiet |gzip -9 -n >/mnt/boot/initrd.gz
[root@localhost boot]# cd /mnt/boot/
[root@localhost boot]# cd grub/
[root@localhost grub]# vi grub.conf
default=0
timeout=5
title redhat enterprise linux5.4
root (hd0,0)
kernel /vmlinuz-2.6.18-164.el5 ro root=/dev/sda2 quiet
initrd /initrd.gz
一阶段内核驱动都有做init
在根分区建文件夹
[root@localhost sysroot]# mkdir bin boot dev etc home lib media mnt misc net opt proc root sbin selinux srv sys tftpboot tmp usr var
[root@localhost sysroot]# mkdir usr/bin
[root@localhost sysroot]# mkdir usr/sbin
[root@localhost sysroot]# mkdir etc/rc.d
拷贝原init到第二块硬盘应为有很多库文件,所以编写一个脚本
[root@localhost sysroot]# cp /sbin/init /mnt/sysroot/sbin
拷贝库文件太多所以编写一个脚本
#!/bin/bash
while [ true ];do
read -p "A COMMAND " COMMAND
COMMANDSTRING=`which $COMMAND|tail -1`
COMMANDPATH=${COMMANDSTRING%/*}
COMMANDNAME=${COMMANDSTRING##*/}
/bin/cp -f $COMMANDPATH/$COMMANDNAME /mnt/sysroot$COMMANDPATH
for i in `/usr/bin/ldd $COMMANDSTRING`;do
if echo $i |grep /lib &>/dev/null; then
LIBSTRING=`echo $i |grep /lib `
LIBNAME=${LIBSTRING##*/}
LIBPATH=${LIBSTRING%/*}
/bin/cp -f $LIBPATH/$LIBNAME /mnt/sysroot$LIBPATH
fi
done
done
~
init建好了,下面建表格
[root@localhost ~]# cd /mnt/sysroot/etc
[root@localhost etc]# vi /etc/inittab
[root@localhost etc]# vi /inittab
进入rc.d 建rc.sysinit
[root@localhost etc]# cd rc.d
[root@localhost rc.d]# vi rc.sysinit
#!/bin/bash
echo -e "\033[31m my linux \033[0m"
/bin/bash
~
~
可执行
[root@localhost rc.d]# chmod a+x rc.sysinit
[root@localhost rc.d]# sync同步
然后见一个空壳虚拟机,
因为现在0,6 级别不能用所以就编写[root@localhost ~]# cd /mnt/sysroot/etc下的inittab
编写sysshutdown,sysreboot 脚本
[root@localhost rc.d]# vi sysshutdown
#!/bin/bash
exec /sbin/halt -p
~
[root@localhost rc.d]# vi sysreboot
#!/bin/bash
exec /sbin/reboot -f
~
改变权限
[root@localhost rc.d]# chmod a+x sys*
sync同步
然后测试机器
可知机器成功
当我们用什么服时只需在宿主机拷贝即可,这样我们以后工作时可以自己做linux,可以避开linux的多余功能。