简化版linux操作系统:包括MBR引导,GRUB菜单,kernel,init进程,inittab表以及rc.sysinit。
我们知道在linux中,只要该系统有内核、应用、以及库文件该系统就能运行。在Vmware 虚拟环境中如何给一个新系统的硬盘这些内容呢?首先要有一台能正常运行的linux机器,为该机器添加一块新硬盘,再将新系统需要的文件拷贝到新硬盘上,再将新硬盘取出,安装到新机器上,这样新机器所需的系统文件就存在自己的硬盘上,该系统就可以使用。
1.为宿主机添加一块硬盘,用来存放新系统所需文件
将新磁盘对应的文件存放到一个位置E盘下
启动系统,查看磁盘信息
对新磁盘/dev/sdb进行分区
添加一个100M大小的boot分区
再添加一个1G大小的根分区
显示分区情况
将/dev/sdb1分区变为引导分区
分别格式化两个分区
新建挂载点/mnt/boot , /mnt/sysroot,将新磁盘的引导分区,根分区挂载上。
比较宿主机和新硬盘的引导分区中文件
因此要在新硬盘上新建MBR和GRUB第二段。
grub-install --root-directory=/mnt /dev/sdb
--root-directory=/mnt 表明要在/mnt/boot下创建grub的第二段,它会自动查找/mnt/下的boot,所以不能写/mnt/boot。
/dev/sdb 表明要在该磁盘上创建MBR。
再次查看新磁盘的引导分区
这样,MBR创建成功,grub引导的第一部分在MBR中,已经创建成功。grub的第二部分中的grub目录创建成功,但是在新磁盘的引导分区中还缺少一个grub菜单:/mnt/boot/grub/grub.conf,该菜单中记录有系统内核文件vmlinuz和驱动文件initrd,所以要先有系统内核文件vmlinuz和驱动文件initrd。由于新机器和宿主机的硬件一样,所以我们可以直接使用宿主机的内核和驱动。
将宿主机的内核和驱动拷贝到新磁盘的引导分区下:
内核和驱动已经有了,下面要新建grub菜单了位置在 /mnt/boot/grub/grub.conf
注意,此处的root (hd0,0)说明引导分区在第一块硬盘的第一个分区上。因为在新机器上,该磁盘就是第一块磁盘。
同理,root=/dev/sda2表示将根交给第一块硬盘的第二个分区。
grub菜单有了,下面要创建init进程,查找宿主机上的init进程的位置:which init
所以在根目录下应该有sbin目录,查看宿主机的根下都有哪些目录
在新磁盘的/mnt/sysroot下创建部分对应的目录:bin boot dev etc home lib proc root sbin sys tmp usr var
更改权限
将/sbin/init拷贝到新磁盘的/sbin目录下
由于init进程要调用库文件,所以查看宿主机的init进程调用的库文件的位置,并将它们复制到新磁盘的对应目录下
现在init进程可以运行了,下一步要读取inittab表,在/mnt/sysroot/etc/下创建文件inittab(复制宿主机的/etc/inittab)
使用底行命令 m,n d删除里面的部分内容,只保留一行:系统初始化脚本
现在新磁盘中还没有rc.d目录和rc.sysinit文件
编辑rc.d/rc.sysinit
修改/mnt/sysroot/etc/rc.d/rc.sysinit
新系统中还没有/bin/bash脚本文件,复制宿主机的文件
查看/bin/bash的系统调用:ldd /bin/bash
将需要的文件拷贝到新磁盘对应的位置,由于前面拷贝过init进程的库文件,可能会出现重复的情况,覆盖即可
执行sync命令,保存内存文件到硬盘。然后关闭宿主机,取出新硬盘。在虚拟环境下,可以新建虚拟机,来使用刚刚从宿主机上取下的硬盘
新建虚拟机,并移除硬盘
添加一块新硬盘
选择使用已经存在的硬盘
选择从宿主机上拆下来的硬盘文件
启动该系统