grub的制作:
系统版本:CentOS7.2
1.添加一块新的硬盘并分区/dev/sdb,fdisk 进行创建 boot ,swap,/ 三个分区,完事后partx -a /dev/sdb,如果觉得麻烦没关系,之前工作中写了一个自动分区和挂载的小脚本,有需要的朋友或者懒癌患者可以参考下:此脚本的目的在于分区后将盘挂载至/data目录下,仅供参考,写得比较糙,请根据实际情况修改,
#!/bin/bash
#Describe mount 150G SAS
#Date 05/31/2015 2nd
#Date 08/11/2015 V3
#Author DYL release 2nd
###
###进入交互式自动分区
mkdir /data
device="/dev/sdb"
disk_part () {
fdisk $device << EOF
n
p
4
1
t
8e
w
EOF
###创建pv--vg--lv逻辑卷
pvcreate ${device}4
vgcreate vg_sdb4 ${device}4
lvcreate -n lv_sdb4 -l +100%FREE vg_sdb4
mkfs.ext4 /dev/vg_sdb4/lv_sdb4
}
fdisk -l|grep sdb
if [ $? -eq 0 ]
then
echo "Disk was added already."
fdisk -l | grep sdb4
if [ $? -eq 0 ]
then
echo "Device was parted ok."
elif [ $? -ne 0 ]
then
echo "$device was not parted,you need to do it."
echo "$device was added,now mount begin!"
disk_part
fi
else
echo "No avaliable device,please added a disk!"
fi
###设置开机自动挂载
grep sdb4 /etc/fstab
if [ $? -ne 0 ]
then
echo "/dev/vg_sdb4/lv_sdb4 /data auto defaults 0 0" >> /etc/fstab && echo "mount success."
fi
mount -a
#cp -pr /data/* /data
chown jboss. /data/ -R
chmod 775 /data/ -R
cp /boot/vmlinuz* /mnt/boot/vmlinuz ; cp /boot/initramfs* /mnt/boot/initramfs.img
- vi /mnt/boot/grub.conf
default=0
timeout=5
title grubtest
root (hd0,0)
kernel /vmlinuz ro root=/dev/sda3 selinux=0 init=/bin/bash 经过测试selinux默认是开启的,这会导致grub引导出现异常,于是直接关掉,而init则是进入用户空间调用的第一个接口,传统的不是这个。。。是sysinit ?
initrd /initramfs.img
6.制作基本的根文件系统:
cd /mnt/sysroot
mkdir -pv root etc lib lib64 home mnt media sys proc usr tmp var ...
cp /bin/bash /mnt/sysroot/bin
ldd /bin/bash 文件系统不能自动识别,应该创建文件系统的驱动模块,ldd是查看文件系统依赖哪些模块
cp /lib64/libc.so.6 /mnt/sysroot/lib64 当然不止一个模块,有四个,不一一列举了
为了验证我新创建的根文件系统里面的bash是否成功,进行根切换测试:
chroot /mnt/sysroot 结果显示为bash的提示符 像这样
基本差不多了吧。。。现在进入grub引导测试
7.将之前创建grub的这个系统给挂起或者关掉,查看/dev/sdb存放的位置,新建一个虚拟机,将/dev/sdb挂上去,然后启动新的虚拟机。。。等待结果。。。
哎,不知道为什么,全得重新手动敲了一遍,按常理可以自动补全的。。。然后boot启动后就是这个样子了
看到bash-4.1#也就成功了。。。
AUTHOR:网名为什么那么长