加入收藏 | 设为首页 | 会员中心 | 我要投稿 吕梁站长网 (https://www.0358zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 资源网站 > 空间 > 正文

Linux 竟然如此强大!能当主力,能入虚拟机,还能随时打包带走。。。

发布时间:2018-09-07 18:24:12 所属栏目:空间 来源:佚名
导读:9月15日技术沙龙 | 如何将智能化和运维工作相结合,实现智能运维! 这里介绍一下自己管理自己的Linux桌面的一点经验吧,我觉得还是有不少可取之处的。先来说一下大多数人管理Linux桌面的方法有哪些不方便的地方吧: 买新电脑了,又得在新电脑上安装Linux,

Linux下大家最熟悉的容器就是chroot了,但是作者并不喜欢chroot,主要原因有两点:

  • /proc、 /dev等东西不会自动挂载,每次手动挂载挂的心好累
  • 没有一个相对完整的开机过程,好多我希望自动启动的服务并不会运行起来

基于上面的原因,作者在这里推荐的容器是systemd-nspawn。systemd-nspawn的使用非常简单,假设你的linux分区已经mount到了/mnt上去了,那么你只需要下面步骤就能启动一个systemd-nspawn容器(以Debian为例):

  1. cd /mnt/debian 
  2. systemd-nspawn -b 

然后就能看到刷刷刷的开机界面了,真的是非常的方便快捷。这里还有一点小技巧是,如果嫌每次开容器都要把linux分区挂载到/mnt上太麻烦,可以在/var/lib/machines里面为每个系统新建一个目录,然后在fstab里面设置一下自动把相应的子卷挂载进去:

Linux 竟然如此强大!能当主力,能入虚拟机,还能随时打包带走。。。

这么做的好处是,根目录位于/var/lib/machines的系统,在启动systemd-nspawn的时候可以直接使用-M选项来指定系统,而不需要进入相应目录。比如如果想启动Ubuntu系统:

  1. systemd-nspawn -b -M ubuntu 

虚拟机

如果只是想运行一下其他系统里面的程序,那么容器完全就够用了,但是有的时候我们还是需要玩玩不同的内核的,这就必须得用虚拟机了。通常情况下,大家用虚拟机,都是新建一个磁盘镜像,然后插入安装光盘,然后把光盘安装到镜像上。这么做的坏处,一个是访问镜像中的文件不方便,另一个是,我们在本地已经有安装过若干系统了,不去充分利用一下这些而去再重新往镜像里面安装那实在是舍近求远。那我们就来找一个把子卷当成虚拟机rootfs的方法。困难在于,虚拟机是个很独立的东西,是无法直接访问宿主机的文件系统的。然而幸运的是,Linux的内核虚拟化方案KVM提供了一个把本地文件系统传递给虚拟机的解决方案,用到的东西叫做VirtFS。

好消息是,VirtFS是可以作为rootfs的。但是要能正常挂载VirtFS,内核必须要有相应的驱动才行。这里有两种方法可以做到这一点。如果你是自己编译内核的话,那么建议直接将相应的驱动编译进内核而不是模块。根据官网的指示,涉及到的内核配置如下:

  1. CONFIG_NET_9P=y 
  2. CONFIG_NET_9P_VIRTIO=y 
  3. CONFIG_9P_FS=y 
  4. CONFIG_9P_FS_POSIX_ACL=y 

如果使用的是发行版提供的内核的话,那么可以修改initramfs的相关设置保证9p、9pnet、9pnet_virtio三个modules能被安装到initramfs里面去。这里以Ubuntu做guest为例,具体做法是修改Ubuntu系统中的/etc/initramfs-tools/modules文件,增加下面三行:

  1. 9p 
  2. 9pnet 
  3. 9pnet_virtio 

然后重新生成initramfs即可:

  1. update-initramfs -u 

内核驱动设置好了,就可以启动qemu虚拟机了,这里假定Ubuntu的rootfs已经被mount到了/var/lib/machines/ubuntu:

  1. qemu-system-x86_64 -enable-kvm -m 16G -kernel /var/lib/machines/ubuntu/vmlinuz -initrd /var/lib/machines/ubuntu/initrd.img -virtfs local,id=root9p,path=/var/lib/machines/ubuntu,security_model=passthrough,mount_tag=root9p -nographic -append 'root=root9p rw rootfstype=9p rootflags=trans=virtio console=ttyS0 init=/lib/systemd/systemd' 

最后放一张成功的截图:

Linux 竟然如此强大!能当主力,能入虚拟机,还能随时打包带走。。。

(编辑:吕梁站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读