为运行于虚拟机上的CentOS 6添加一块新硬件,提供两个主分区
(1) 为硬盘新建两个主分区;并为其安装grub;
(2) 为硬盘的第一个主分区提供内核和ramdisk文件; 为第二个分区提供rootfs;
(3) 为rootfs提供bash、ls、cat程序及所依赖的库文件;
(4) 为grub提供配置文件;
(5) 将新的硬盘设置为第一启动项并能够正常启动目标主机;
为硬盘新建两个主分区
1 | [root@centos ~]# fdisk -l #先来看看磁盘情况啊,你不看,一上来直接搞,小心搞出事情!! |
不错不错,看到sdb了, 分的40G
开始分区
1 | [root@centos ~]# fdisk /dev/sdb |
分区完了就开始格式化了啊
1 | [root@centos ~]# mkfs.ext4 /dev/sdb1 |
挂载分区sdb1到/mnt/boot下
1 | [root@centos mnt]#mkdir boot |
安装grub
1 | [root@centos mnt]# grub-install --root-de |
复制内核及ramdisk文件到sdb1上
1 | [root@centos mnt]# cp /boot/vmlinuz-2.6.32-642.13.1.el6.x86_64 /mnt/boot/vmlinuz |
在/mnt/boot/grub目录下编辑新建grub.conf文件
内容如下:
1 | default=0 |
挂载分区/dev/sdb2到/mnt/sysroot下
1 | mkdir /mnt/sysroot |
建立FHS
1 | [root@centos sysroot]# mkdir -pv /mnt/sysroot/{bin,dev,etc/{rc.d/init.d,sysconfig/network-scripts},lib/modules,lib64,proc,sbin,sys,tmp,usr/local/{bin,sbin},var/{lock,log,run}} |
拷贝bash、ls、cat程序及其依赖库
1 | [root@centos sysroot]# cp /bin/{bash,ls,cat} /mnt/sysroot/bin |
chroot先测试一下
1 | [root@centos bin]# chroot /mnt/sysroot |
OK,接下来挂载到另外一台虚拟机上测试一下,亲测成功。
制作一个kickstart文件以及一个引导镜像。
思路
- 找到一个已安装好的centos的ks文件,一般位于/root/anaconda-ks.cfg,修修改改,生成一个自定义的ks.cfg文件。
- 放到解压的原版IOS到某目录,添加ks文件。
- 修改光盘的isolinux.cfg文件,在 append 指令后附加 ks 设置。
- 再生成自定义的ISO文件。
- 最后用此ISO去安装启动一台裸虚拟机测试是否能自动安装。
找到一个已安装好的centos的ks文件,一般位于/root/anaconda-ks.cfg,修修改改,生成一个自定义的ks.cfg文件
1 | #platform=x86, AMD64, 或 Intel EM64T |
放到解压的原版IOS到某目录,添加ks文件
我这里是用软碟通直接提取修改,所以就省略了
还有一个坑就是ks配置文件里面用cdrom参数制定本地光盘安装会报错,建议用url方式。这个坑踩得我受伤了,就不写了。
应用服务服务脚本
(1) 能接受四个参数:start, stop, restart, status
start: 输出“starting 脚本名 finished.”
…
(2) 其它任意参数,均报错退出;
1 |
|
判断给定的用户是否登录了当前系统
(1) 如果登录了,则显示用户登录,脚本终止;
(2) 每3秒钟,查看一次用户是否登录;
1 |
|
显示用户选定要查看的信息;
cpu) display cpu info
mem) display memory info
disk) display disk info
quit) quit
非此四项选择,则提示错误,并要求用户重新选择,只到其给出正确的选择为止;
1 |
|
尝试用shell函数
(1) 用函数实现返回一个用户的UID和SHELL;用户名通过参数传递而来;
(2) 提示用户输入一个用户名或输入“quit”退出;
当输入的是用户名,则调用函数显示用户信息;
当用户输入quit,则退出脚本;进一步地:显示键入的用户相关信息后,再次提醒输出用户名或quit:
1 |
|
完成如下功能(使用shell函数)
(1) 提示用户输入一个可执行命令的名字;获取此命令依赖的所有库文件;
(2) 复制命令文件至/mnt/sysroot目录下的对应的rootfs的路径上,例如,如果复制的文件原路径是/usr/bin/useradd,则复制到/mnt/sysroot/usr/bin/目录中;
(3) 复制此命令依赖的各库文件至/mnt/sysroot目录下的对应的rootfs的路径上;规则同上面命令相关的要求;
1 |
|