Linux 配置一个由Grub引导的单独直接运行的bash系统

操作环境:Centos 6(其它操作系统可能有略微差别,但是原理相同)
操作虚拟机:VMware

1、给虚拟机新添加一块硬盘,大小适宜,这里我用的20G。
Linux 配置一个由Grub引导的单独直接运行的bash系统

2、可以用fdisk -l查看一下当先系统的分区情况。
Linux 配置一个由Grub引导的单独直接运行的bash系统

可以看到sdb为新添加的磁盘,还没有分区,一共分3个分区,分区结果为:
->/dev/sdb1 200M (把他当做虚拟boot分区)
->/dev/sdb2 2G (为swap分区,要注意把格式改为82,大小这里我给了2G)
->/dev/sdb3 5G (为根分区,这里我给了5G)

下面开始分区:
Linux 配置一个由Grub引导的单独直接运行的bash系统

Linux 配置一个由Grub引导的单独直接运行的bash系统

保存退出,然后重读磁盘分区:
Linux 配置一个由Grub引导的单独直接运行的bash系统

3、下面开始格式化分区
Linux 配置一个由Grub引导的单独直接运行的bash系统

Linux 配置一个由Grub引导的单独直接运行的bash系统

4、开始挂载分区,把sdb1分区挂载至boot目录下,但是不能是本地的boot目录,因为本地的boot目录正在使用,因此我在/mnt目录下新建一个boot目录。
Linux 配置一个由Grub引导的单独直接运行的bash系统

5、安装grub,需要指定grub安装目录为/mnt,它会自动找boot目录
Linux 配置一个由Grub引导的单独直接运行的bash系统

安装完grub后,可以查看一下/mnt/boot/grub/目录下的文件,发现没有grub.conf配置文件,这个文件装好后默认是没有的,所以需要我们手动添加。在添加配置文件之前看一下/mnt/boot/目录下也没有内核相关的文件,所以要把原来 /boot目录下的一些文件拷贝到/mnt/boot目录下,并改一下名字(可改可不改)。
Linux 配置一个由Grub引导的单独直接运行的bash系统

Linux 配置一个由Grub引导的单独直接运行的bash系统

Linux 配置一个由Grub引导的单独直接运行的bash系统
Linux 配置一个由Grub引导的单独直接运行的bash系统
上面的那个配置文件中编辑的内容,其中kernel那一行,root=/dev/sda3,解释一下为什么是sda3,而不是sdb3:
此前,我们创建分区的时候把sdb3当成为根分区,但是若要在新的磁盘上使用bash,则此分区就变成了主分区,故要变成sda3

6、然后把/dev/sdb3挂载到/mnt/sysroot(此目录需要另行创建);其次,任何一个根它都有一些最基本的目录,如bin、sbin、root等等。
Linux 配置一个由Grub引导的单独直接运行的bash系统

Linux 配置一个由Grub引导的单独直接运行的bash系统

7、我们知道,任何时候系统运行起来运行的第一个程序是bash(init除外),所以就把真正根的bash文件复制到/mnt/sysroot/bin目录下(init太复杂,就不整了),但是复制完并不算成功了,因为任何一个应用程序如果是基于动态编译的,它就会依赖于一些库,bash就是如此,故把这些库也复制进来(可用ldd命令查看应用程序有那些依赖库)。在复制库过来的时候要注意是64位的还是32位的,若是64位的就复制到 lib64 目录下,要是32位的就复制到 lib 目录下(本例中是32位的)。复制完后sync同步一下。
Linux 配置一个由Grub引导的单独直接运行的bash系统

8、上述所有步骤完成后切换一下根,回车后就会出现新的bash界面了。
Linux 配置一个由Grub引导的单独直接运行的bash系统

切换成功后会发现好多命令都没有,但是一些内建命令还是有的,如exit命令。若是想要有多一点命令,可以去原来bin目录下复制一些命令到当前bin目录即可,注意依赖库关系。

上述就是这个实验的详细步骤,但是若是想要把这一块硬盘移动到新的虚拟机上使用也是可以的,下面大致说一下步骤。
在做下面实验之前,需要把上面我们做的那个磁盘上的grub配置文件修改一下,否则在启动新的虚拟机时会报错。修改内容为:
Linux 配置一个由Grub引导的单独直接运行的bash系统
一定要注意,新添加的selinux=0不要写在最后位置。

下面开始

1、新建一个虚拟机,在选择磁盘的时候要选择现有的虚拟磁盘,就是上面做好的磁盘。
Linux 配置一个由Grub引导的单独直接运行的bash系统

2、然后会让选择是哪一个磁盘,这个时候我们就要看一下我们在上面创建的第二块磁盘的位置和名字是啥了,然后选择的时候就选那个,然后其它的就一直下一步即可,最后保持现有格式创建。

3、然后启动虚拟机,接下来会显示grub界面,正常启动即可。

以上实验需要大家懂得如何分区,配置grub等操作。