Linux 配置一个由Grub引导的单独直接运行的bash系统
2017-04-28 18:40
429 查看
操作环境:Centos 6(其它操作系统可能有略微差别,但是原理相同)
操作虚拟机:VMware
1、给虚拟机新添加一块硬盘,大小适宜,这里我用的20G。
2、可以用fdisk -l查看一下当先系统的分区情况。
可以看到sdb为新添加的磁盘,还没有分区,一共分3个分区,分区结果为:
->/dev/sdb1 200M (把他当做虚拟boot分区)
->/dev/sdb2 2G (为swap分区,要注意把格式改为82,大小这里我给了2G)
->/dev/sdb3 5G (为根分区,这里我给了5G)
下面开始分区:
保存退出,然后重读磁盘分区:
3、下面开始格式化分区
4、开始挂载分区,把sdb1分区挂载至boot目录下,但是不能是本地的boot目录,因为本地的boot目录正在使用,因此我在/mnt目录下新建一个boot目录。
5、安装grub,需要指定grub安装目录为/mnt,它会自动找boot目录
安装完grub后,可以查看一下/mnt/boot/grub/目录下的文件,发现没有grub.conf配置文件,这个文件装好后默认是没有的,所以需要我们手动添加。在添加配置文件之前看一下/mnt/boot/目录下也没有内核相关的文件,所以要把原来 /boot目录下的一些文件拷贝到/mnt/boot目录下,并改一下名字(可改可不改)。
上面的那个配置文件中编辑的内容,其中kernel那一行,root=/dev/sda3,解释一下为什么是sda3,而不是sdb3:
此前,我们创建分区的时候把sdb3当成为根分区,但是若要在新的磁盘上使用bash,则此分区就变成了主分区,故要变成sda3
6、然后把/dev/sdb3挂载到/mnt/sysroot(此目录需要另行创建);其次,任何一个根它都有一些最基本的目录,如bin、sbin、root等等。
7、我们知道,任何时候系统运行起来运行的第一个程序是bash(init除外),所以就把真正根的bash文件复制到/mnt/sysroot/bin目录下(init太复杂,就不整了),但是复制完并不算成功了,因为任何一个应用程序如果是基于动态编译的,它就会依赖于一些库,bash就是如此,故把这些库也复制进来(可用ldd命令查看应用程序有那些依赖库)。在复制库过来的时候要注意是64位的还是32位的,若是64位的就复制到 lib64 目录下,要是32位的就复制到 lib 目录下(本例中是32位的)。复制完后sync同步一下。
8、上述所有步骤完成后切换一下根,回车后就会出现新的bash界面了。
切换成功后会发现好多命令都没有,但是一些内建命令还是有的,如exit命令。若是想要有多一点命令,可以去原来bin目录下复制一些命令到当前bin目录即可,注意依赖库关系。
上述就是这个实验的详细步骤,但是若是想要把这一块硬盘移动到新的虚拟机上使用也是可以的,下面大致说一下步骤。
在做下面实验之前,需要把上面我们做的那个磁盘上的grub配置文件修改一下,否则在启动新的虚拟机时会报错。修改内容为:
一定要注意,新添加的selinux=0不要写在最后位置。
下面开始
1、新建一个虚拟机,在选择磁盘的时候要选择现有的虚拟磁盘,就是上面做好的磁盘。
2、然后会让选择是哪一个磁盘,这个时候我们就要看一下我们在上面创建的第二块磁盘的位置和名字是啥了,然后选择的时候就选那个,然后其它的就一直下一步即可,最后保持现有格式创建。
3、然后启动虚拟机,接下来会显示grub界面,正常启动即可。
以上实验需要大家懂得如何分区,配置grub等操作。
操作虚拟机:VMware
1、给虚拟机新添加一块硬盘,大小适宜,这里我用的20G。
2、可以用fdisk -l查看一下当先系统的分区情况。
可以看到sdb为新添加的磁盘,还没有分区,一共分3个分区,分区结果为:
->/dev/sdb1 200M (把他当做虚拟boot分区)
->/dev/sdb2 2G (为swap分区,要注意把格式改为82,大小这里我给了2G)
->/dev/sdb3 5G (为根分区,这里我给了5G)
下面开始分区:
保存退出,然后重读磁盘分区:
3、下面开始格式化分区
4、开始挂载分区,把sdb1分区挂载至boot目录下,但是不能是本地的boot目录,因为本地的boot目录正在使用,因此我在/mnt目录下新建一个boot目录。
5、安装grub,需要指定grub安装目录为/mnt,它会自动找boot目录
安装完grub后,可以查看一下/mnt/boot/grub/目录下的文件,发现没有grub.conf配置文件,这个文件装好后默认是没有的,所以需要我们手动添加。在添加配置文件之前看一下/mnt/boot/目录下也没有内核相关的文件,所以要把原来 /boot目录下的一些文件拷贝到/mnt/boot目录下,并改一下名字(可改可不改)。
上面的那个配置文件中编辑的内容,其中kernel那一行,root=/dev/sda3,解释一下为什么是sda3,而不是sdb3:
此前,我们创建分区的时候把sdb3当成为根分区,但是若要在新的磁盘上使用bash,则此分区就变成了主分区,故要变成sda3
6、然后把/dev/sdb3挂载到/mnt/sysroot(此目录需要另行创建);其次,任何一个根它都有一些最基本的目录,如bin、sbin、root等等。
7、我们知道,任何时候系统运行起来运行的第一个程序是bash(init除外),所以就把真正根的bash文件复制到/mnt/sysroot/bin目录下(init太复杂,就不整了),但是复制完并不算成功了,因为任何一个应用程序如果是基于动态编译的,它就会依赖于一些库,bash就是如此,故把这些库也复制进来(可用ldd命令查看应用程序有那些依赖库)。在复制库过来的时候要注意是64位的还是32位的,若是64位的就复制到 lib64 目录下,要是32位的就复制到 lib 目录下(本例中是32位的)。复制完后sync同步一下。
8、上述所有步骤完成后切换一下根,回车后就会出现新的bash界面了。
切换成功后会发现好多命令都没有,但是一些内建命令还是有的,如exit命令。若是想要有多一点命令,可以去原来bin目录下复制一些命令到当前bin目录即可,注意依赖库关系。
上述就是这个实验的详细步骤,但是若是想要把这一块硬盘移动到新的虚拟机上使用也是可以的,下面大致说一下步骤。
在做下面实验之前,需要把上面我们做的那个磁盘上的grub配置文件修改一下,否则在启动新的虚拟机时会报错。修改内容为:
一定要注意,新添加的selinux=0不要写在最后位置。
下面开始
1、新建一个虚拟机,在选择磁盘的时候要选择现有的虚拟磁盘,就是上面做好的磁盘。
2、然后会让选择是哪一个磁盘,这个时候我们就要看一下我们在上面创建的第二块磁盘的位置和名字是啥了,然后选择的时候就选那个,然后其它的就一直下一步即可,最后保持现有格式创建。
3、然后启动虚拟机,接下来会显示grub界面,正常启动即可。
以上实验需要大家懂得如何分区,配置grub等操作。
相关文章推荐
- 在red hat Linux下配置GRUB实现多系统引导
- 在linux或者unix操作系统中在系统的引导的时候会开启很多服务,这些服务就叫做守护进程。守护进程是在后台运行不与任何控制终端关联,是Linux中的后台服务进程。它是一个生存期较长的进程,通常独立于
- Linux系统管理实践(3):GRUB系统引导配置
- Linux 学习笔记_5_Linux引导流程解析_3_GRUB配置及Linux系统修复
- 一个设想:基于colinux,去厚重虚拟化,共盘直接文件系统安装运行的windows,linux
- 在Linux下配置GRUB实现多系统引导
- 一个将java程序运行在linux系统后台的脚本
- Linux系统启动过程及grub引导故障排错(二)
- 编写在Android的Linux系统中直接运行的可执行程序
- 基于Linux系统调用使用php实现一个在线编译运行C语言程序的系统
- Jetty的配置、部署与API使用——(3)Linux下利用Jetty API运行一个Jetty服务器
- Linux操作系统GRUB引导程序配置方法大全(2)
- linux的引导流程及grub的配置
- 拿到一个系统,肯定要看看系统配置,linux下看配置,可没有windows那么直观。你只能一个一个查看。
- linux的引导流程grub的配置
- Jetty的配置、部署与API使用——(3)Linux下利用Jetty API运行一个Jetty服务器
- 修改grub引导的Linux和Windows双系统的启动顺序和删除Linux系统的方法
- 恢复LINUX多系统GRUB引导的方法
- 使用GRUB引导linux和winxp双系统
- 双系统卸载linux的并去除Grub引导的办法