切换主题:hexo
status
Published
date
Mar 4, 2022
slug
use-multipass
summary
category
折腾分享
tags
虚拟机
工具
ubuntu
icon
password

缘由

在折腾办公室远程访问网络的时候,其中一种方案选择了使用wireguard建立VPN进行连接。但是办公室主机是macos,wireguard在macos上的支持并没有linux那么灵活和易操作(主要是路由转发相关代码,尽管后来也折腾出来了),毕竟现在的linux都基本内核级支持wireguard。所以就想到了在macos上安装一台Ubuntu的虚拟机。其实macos已经安装了Parallels Desktop 17 for Mac 虚拟机并且也成功安装了win和Ubuntu。但是考虑到他们是桌面级的系统,肯定是很迟性能,而我只是要小小的一个VPN。尽管它也成安装Ubuntu Server,包括或者选择vmware 或virtualbox。但是有没有更轻量的存在,于是发现了——Multipass
官网宣称,只需一个命令即可获得即时Ubuntu虚拟机。它是由Ubuntu运营公司Canonical开发和维护的开源项目,可以在Linux,Windows和MacOS的上安装运行Ubuntu虚拟机(只能安装Ubuntu)。它在Linux上使用KVM,Windows上抵用Hyper-V,MacoS使用Hyperkit,声称会以最小的开销运行虚拟机。

安装

以Macos为例,有两种安装方式。
方式一
使用Homebrew安装
brew install --cask multipass
方式二
直接从github release下载安装包文件,或官网最新的地址Download Multipass for MacOS,然后正常安装软件一样安装。

使用

创建虚拟机,并命名为abc
multipass launch --name abc
对abc虚拟机内部执行命令lsb_release -a
multipass exec abc -- lsb_release -a
除了默认的方式创建虚拟机,还支持使用配置文件,去控制想要创建的虚拟机的内存大小、核心数、硬盘空间等参数,甚至要集成哪些软件,初始化哪些命令。
multipass launch --name efg --disk 2G --mem 256M 18.04
除此之外,也可以通过配置文件初始化内部的一些配置,比如集成环境、运行配置等。更详细的配置说明可参考官网文档
multipass launch -n efg --cloud-init cloud-config.yaml
其中一个例子就是启动的时候执行命令去修改hosts
#cloud-config # boot commands # default: none # this is very similar to runcmd, but commands run very early # in the boot process, only slightly after a 'boothook' would run. # bootcmd should really only be used for things that could not be # done later in the boot process. bootcmd is very much like # boothook, but possibly with more friendly. # - bootcmd will run on every boot # - the INSTANCE_ID variable will be set to the current instance id. # - you can use 'cloud-init-per' command to help only run once bootcmd: - echo 192.168.1.130 us.archive.ubuntu.com >> /etc/hosts - [ cloud-init-per, once, mymkfs, mkfs, /dev/vdb ]

常用的命令

multipass info abc #可以abc虚拟机信息 multipass list #可以列出所有的虚拟机 multipass info --all #查看所有虚拟机信息 multipass shell abc #进入abc虚拟机的shell环境 multipass mount temp abc:/home/ubuntu/temp #映射本地目录和虚拟机目录 multipass stop abc #停止abc虚拟机 multipass start adc #启动abc虚拟机 multipass delete --purge adc #彻底删除abc虚拟机

关于ssh登录

如果需要远程ssh登录Ubuntu虚拟机的,需要进行配置,默认是无法登录成功的。
首先需要设置root密码,进入内部shell环境后执行sudo passwd设置密码,然后切换到root用户su root去更改ssh连接配置。
vim /etc/ssh/sshd_config
修改的内容为如下,有的话就修改没有就增加
PermitRootLogin yes PasswordAuthentication yes
最后重启下sshservice ssh restart,然后再用item或ssh连接工具访问22端口连接登录。

评价

使用下来和正常vps环境下的Ubuntu没啥区别,各项功能都能正常使用。最后wireguard也搭建成功了。不过就该虚拟机的单一性还是有点局限,如果能支持更多linux版本那将会更受欢迎。另外就是说是说轻量,我个人的感受是可能比docker重但比专业虚拟机轻。实际运行,只跑了一个默认Ubuntu虚拟机,表现上看内存吃的比较多,没有对比也不好说轻重。
Multipass进程看着还行。
notion image
notion image
hyperkit就是前文所说的虚拟化技术进程。这个看起来资源就多了些,但比起IDEA全家桶或是chrome毒瘤,这点内存小巫见大巫。
notion image
notion image
日常偶尔测试使用或者固定跑服务,应该也还算在合理接受范围内。
以后可以多多学习linux!

参考文章

记Docker写磁盘问题和配置代理Live2Gif

  • Utterance
  • Cusdis