基于HOST制作一个简单的可启动的Linux
能装载网卡驱动,并配置IP地址。使用init脚本
一、准备工作
HOST:宿主机
Target:目标机
1、首先需要在宿主机上添加一个新目标磁盘
2、给目标磁盘分区
分成:/dev/sdb1(100M), /dev/sdb2 (1G)
命令:fdisk/dev/sdb
格式化两个分区:
命令:mke2fs-t ext4 /dev/sdb1
mke2fs-t ext4 /dev/sdb2
3、将 /dev/sdb1 挂载至 /mnt/boot
将/dev/sdb2 挂载至 /mnt/sysroot
命令:mkdir /mnt/boot
mount/dev/sdb1 /mnt/boot/
mkdir /mnt/sysroot
mount/dev/sdb2 /mnt/sysroot/
二、安装grub至目标磁盘
命令:grub-install --root-directory=/mnt /dev/sdb
三、复制内核和initrd文件
命令:
cp /boot/vmlinuz-2.6.32-358.el6.x86_64 /mnt/boot/vmlinuz
cp /boot/initramfs-2.6.32-358.el6.x86_64.img /mnt/boot/initramfs.img
四.创建根文件,复制根文件系统
1、先创建目标主机的根文件系统
命令:
mkdir -pv /mnt/sysroot/{etc/rc.d,usr,proc,sys,dev,lib,lib64,bin,sbin,boot,srv,mnt,media,home,root}
2、接着去移植bash
写拷贝命令的脚本,这里给大家提供一个移植命令并且能让其正常工作的脚本cpcmd.sh
#!/bin/bash
#
target=/mnt/sysroot
clearCmd() {
if which $cmd &> /dev/null; then
cmdPath=`which --skip-alias $cmd`
else
echo "No such command"
return 5
fi
}
cmdCopy() {
cmdDir=`dirname $1`
[ -d ${target}${cmdDir} ]|| mkdir -p ${target}${cmdDir}
[ -f ${target}${1} ] || cp $1 ${target}${cmdDir}
}
libCopy() {
for lib in `ldd $1 | grep -o "/[^[:space:]]\{1,\}" `;do
libDir=`dirname $lib`
[ -d ${target}${libDir} ] || mkdir -p ${target}${libDir}
[ -f ${target}${lib} ] || cp $lib ${target}${libDir}
done
}
while true;do
read -p "Enter a command: " cmd
if [ "$cmd" == "quit" ]; then
echo "quit"
exit 6
fi
clearCmd $cmd
cmdCopy $cmdPath
libCopy $cmdPath
done
ls,cat,mkdir,mv,bash,mount,umount,insmod,rmmod,ifconfig,ip,ping,passwd,vim
使用“quit”退出脚本
复制个人需要使用到的命令
建立软链接sh -> bash
检验命令能否正常使用
可以正常使用
五、为grub提供配置文件
命令: vim /mnt/boot/grub/grub.conf
脚本:
default=0
timeout=5
title MagEdu Little Linux
root(hd0,0)
kernel /vmlinuz ro root=/dev/sda2 quiet selinux=0 init=/sbin/init
initrd /initramfs.img
六、配置init脚本
命令:vim /mnt/sysroot/sbin/init
脚本:
#!/bin/bash
#
echo �Ce “\tWelcometo \033[034mMageEdu Tiny\033[0m Linux”
mount �Cn �Ct proc proc /proc
mount �Cn �Ct sysfs sysfs /sys
mount �Cn �Co remount,rw /dev/sda2
/bin/bash
加执行权限chmod +x /mnt/sysroot/sbin/init
以上操作完成之后,执行sync:将内存数据存入硬盘
七、启动目标机
1、挂起宿主机
2、建立一个新的目标机,使用一个已存在的磁盘,选择目标磁盘
3、启动
八、为目标机配置网卡、IP
这里有两种方法:
先手动复制从宿主机复制网卡驱动至目标机
命令:
mkdir /mnt/sysroot/lib/modules
cp /lib/modules/2.6.32-358.el6.x86_64/kernel/drivers/net/e1000/e1000.ko/mnt/sysroot/lib/modules/
第一种方法:
1、在目标机上手动安装网卡驱动
命令:
insmod /lib.modules/e1000.ko
2、配置ip
ifconfig eth0 172.16.88.8/16
第二种方法:
在init配置文件中自动安装网卡驱动,自动配置IP
脚本:
#!/bin/bash
#
echo -e "\tWelcome to \033[034mMageEdu Tiny\033[0m Linux"
mount -n -t proc proc /proc
mount -n -t sysfs sysfs /sys
insmod /lib/modules/e1000.ko
ifconfig lo 127.0.0.1/8
ifconfig eth0 172.16.88.8/16
mount -n -o remount,rw /dev/sda2
/bin/bash
重启目标机
查看ip
网卡驱动自动安装成功,ip自动配置成功。
以上就是基于HOST制作一个简单的可启动的Linux