分类 系统 下的文章

一. Multipass 是什么?

Multipass 是一个轻量级 Linux 虚拟机命令行管理工具,支持 Linux、Windows 与 macOS。

二. 为什么要用 Multipass

  1. 能够以最小的成本和资源在本地快速搭建具备完整 Ubuntu 功能小型虚拟机集群(如测试 K8s各类特性、数据库小集群等)
  2. 可以方便快速的做各类 Linux 试验,而不用担心把系统搞坏,重建一个新系统只要几分钟
  3. 实例通过命令行管理,对开发非常友好,每个实例IP固定

三. 如何安装

安装方法

四. 功能介绍

可在 Multipass 官网 查看详细使用文档。

$ multipass help

用法: multipass [options] <command>
创建, 控制和连接 Ubuntu 实例。

multipass 命令行工具, 用于管理 ubuntu 实例。

参数:
  -h, --help     查看本帮助内容
  -v, --verbose  增加日志显示的详细程度。 通过在短参数中增加 'v' 来获取更多日志信息
                 最多支持4个等级,如: -vvvv。

可用的命令:
  delete    删除实例
  exec      在实例中执行命令
  find      查找并列出可用于创建实例的镜像
  get       获取某个配置项
  help      查看帮助
  info      查看实例信息
  launch    创建并启动实例
  list      列出所有实例
  mount     挂载文件夹到实例
  purge     清除已删除的实例
  recover   恢复已删除的实例
  restart   重启实例
  set       设置某个配置项
  shell     通过 shell 连接实例
  start     启动实例
  stop      停止实例
  suspend   挂起实例
  transfer  在本机和实例之间传输文件
  umount    移除实例中挂载的文件夹
  version   查看版本号

五. 常见问题(以 MacOS 为例)

问题一:最开始设置的内存或 CPU 数量小了,想扩容,怎么办?

multipass 通过 /var/root/Library/Application Support/multipassd/multipassd-vm-instances.json 中的配置来管理实例,可直接在这个配置文件中修改:

mem_size 来增加或减少内存
num_cores 来增加或减少CPU核心数

修改之前需要先停止 multipass 的进程,原因是 multipass 会在被关闭的时候将各个实例的状态写入到配置文件,所以在没有关闭 multipass 进程的时候修改配置文件,会被覆盖。

# 停止 multipassd 进程
sudo launchctl unload /Library/LaunchDaemons/com.canonical.multipassd.plist

# 编辑 /var/root/Library/Application Support/multipassd/multipassd-vm-instances.json 文件
# 需要 root 权限

# 重新启动 multipassd 进程
sudo launchctl load /Library/LaunchDaemons/com.canonical.multipassd.plist

问题二:电脑意外关机,无法启动实例,怎么办?

实例的启动关闭状态也维护在 /var/root/Library/Application Support/multipassd/multipassd-vm-instances.json 文件中的 state 字段,当电脑意外关机,state 字段不会被正确的维护,导致无法启动或关闭实例,这时候,可以先停止 multipassd 进程,然后手动到配置文件中修改 state 为 0,即关机状态,保存配置文件,并启动 multipassd 实例即可,这时候就可以正常启动各个实例了。

问题三:能安装 Cent OS 实例么?

暂时不能,该工具为 Ubuntu 背后的公司 Canonical 开发,目前仅支持 Ubuntu 系统。

问题四:如果在实例之间传递文件?

最简单的方式是通过挂载相同的文件夹到不同的实例中来共享文件。

参考

  1. multipass 官网

绕过 Apple 启动应用时连接 Apple 服务器的验证。这样可以有效提升应用加载速度。

sudo vim /etc/host

127.0.0.1 ocsp.apple.com

EPEL(Extra Packages for Enterprise Linux)是由Fedora Special Interest Group 维护的 Enterprise Linux(RHEL、CentOS)中经常用到的包。

What is Extra Packages for Enterprise Linux (or EPEL)?

Extra Packages for Enterprise Linux (or EPEL) is a Fedora Special Interest Group that creates, maintains, and manages a high quality set of additional packages for Enterprise Linux, including, but not limited to, Red Hat Enterprise Linux (RHEL), CentOS and Scientific Linux (SL), Oracle Linux (OL).

EPEL packages are usually based on their Fedora counterparts and will never conflict with or replace packages in the base Enterprise Linux distributions. EPEL uses much of the same infrastructure as Fedora, including buildsystem, bugzilla instance, updates manager, mirror manager and more.

Learn more about EPEL in the following pages:

Quickstart

You may retrieve signed binary configuration files from one the above two links (varying by the major release number of the installation target machine). They may be automatically installed by root thus:

  • RHEL/CentOS 7:

yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

  • on RHEL 7 it is recommended to also enable the optional, extras, and HA repositories since EPEL packages may depend on packages from these repositories:
# subscription-manager repos --enable "rhel--optional-rpms" --enable "rhel--extras-rpms" --enable "rhel-ha-for-rhel-*-server-rpms"
  • RHEL/CentOS 8:
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
  • CentOS Stream 8:
dnf install epel-release
  • on RHEL 8 it is required to also enable the codeready-builder-for-rhel-8-*-rpms repository since EPEL packages may depend on packages from it:
subscription-manager repos --enable "codeready-builder-for-rhel-8-$(arch)-rpms"
  • on CentOS 8 it is recommended to also enable the powertools repository since EPEL packages may depend on packages from it:
dnf config-manager --set-enabled powertools

https://docs.fedoraproject.org/zh_CN/epel/#_quickstart

remove_old_kernels.sh

#!/bin/bash
# Run this script without any param for a dry run
# Run the script with root and with exec param for removing old kernels after checking
# the list printed in the dry run

uname -a
IN_USE=$(uname -a | awk '{ print $3 }')
echo "Your in use kernel is $IN_USE"

OLD_KERNELS=$(
    dpkg --list |
        grep -v "$IN_USE" |
        grep -Ei 'linux-image|linux-headers|linux-modules' |
        awk '{ print $2 }'
)
echo "Old Kernels to be removed:"
echo "$OLD_KERNELS"

if [ "$1" == "exec" ]; then
    for PACKAGE in $OLD_KERNELS; do
        yes | apt purge "$PACKAGE"
    done
fi

Run it like this for a dry run:

remove_old_kernels.sh

If all looks good, run it again like this:

sudo remove_old_kernels.sh exec

https://askubuntu.com/questions/1253347/how-to-easily-remove-old-kernels-in-ubuntu-20-04-lts?newreg=6a13fc7693b44ef8a5aa06b6487983b9

中文输入法
由于搜狗输入法目前还不支持Ubuntu20.04,加之其对高分屏支持不太友好,因此不再折腾选择了 ibus-libpinyin。

安装

sudo apt install ibus-libpinyin 
sudo apt install ibus-clutter

接着在应用程序中找到「Language Support」(语言支持),更改「Keyboard input method system」(键盘输入法系统)为「IBUS」。重启系统,然后在Settings>Region & Language>Input Sources(设置>区域与语言>输入源)中新增「Chinese(Intelligent Pinyin)」(中文(智能拼音))就可以使用中文输入法了。

写给工程师的 Ubuntu 20.04 最佳配置指南

您可以将外置驱动器或备用宗卷用作安装 Mac 操作系统的启动磁盘。

以下高级步骤主要适用于系统管理员以及熟悉命令行的其他人员。升级 macOS重新安装 macOS 不需要可引导安装器,但如果您要在多台电脑上安装 macOS,而又不想每次都下载安装器,这时可引导安装器就会很有用。

创建可引导安装器需要满足的条件

  • USB 闪存驱动器或其他备用宗卷(格式化为 Mac OS 扩展格式),至少有 14 GB 可用储存空间
  • 已下载 macOS Big Sur、Catalina、Mojave、High Sierra 或 El Capitan 的安装器

下载 macOS

在"终端"中使用"createinstallmedia"命令

  1. 连接要用于保存可引导安装器的 USB 闪存驱动器或其他宗卷。
  2. 打开"应用程序"文件夹内"实用工具"文件夹中的"终端"。
  3. 在"终端"中键入或粘贴以下命令之一。这些命令假设安装器位于您的"应用程序"文件夹中,并且"MyVolume"是您所使用的 USB 闪存驱动器或其他宗卷的名称。如果不是这个名称,请将这些命令中的 MyVolume 替换为您的宗卷名称。

Big Sur*:


sudo /Applications/Install\ macOS\ Big\ Sur.app/Contents/Resources/createinstallmedia --volume /Volumes/MyVolume 

Catalina*:


sudo /Applications/Install\ macOS\ Catalina.app/Contents/Resources/createinstallmedia --volume /Volumes/MyVolume 

Mojave*:


sudo /Applications/Install\ macOS\ Mojave.app/Contents/Resources/createinstallmedia --volume /Volumes/MyVolume 

High Sierra*:


sudo /Applications/Install\ macOS\ High\ Sierra.app/Contents/Resources/createinstallmedia --volume /Volumes/MyVolume 

El Capitan:


sudo /Applications/Install\ OS\ X\ El\ Capitan.app/Contents/Resources/createinstallmedia --volume /Volumes/MyVolume --applicationpath /Applications/Install\ OS\ X\ El\ Capitan.app 

* 如果您的 Mac 运行的是 macOS Sierra 或更低版本,请使用 --applicationpath 参数和安装器路径,具体方法与在适用于 El Capitan 的命令中完成这个操作的方法类似。

键入命令后:

  1. 按下 Return 键以输入这个命令。
  2. 出现提示时,请键入您的管理员密码,然后再次按下 Return 键。在您键入密码时,"终端"不会显示任何字符。
  3. 出现提示时,请键入 Y 以确认您要抹掉宗卷,然后按下 Return 键。在抹掉宗卷的过程中,"终端"会显示进度。
  4. 宗卷被抹掉后,您可能会看到一条提醒,提示"终端"要访问可移除宗卷上的文件。点按"好"以允许继续拷贝。
  5. 当"终端"显示操作已完成时,相应宗卷将拥有与您下载的安装器相同的名称,例如"安装 macOS Big Sur"。您现在可以退出"终端"并弹出宗卷。

使用可引导安装器

确定您使用的是不是搭载 Apple 芯片的 Mac,然后按照相应的步骤操作:

Apple 芯片

  1. 将可引导安装器插入已连接到互联网且与您要安装的 macOS 版本兼容的 Mac。
  2. 将 Mac 开机并继续按住电源按钮,直到看到启动选项窗口,其中会显示可引导宗卷。
  3. 选择包含可引导安装器的宗卷,然后点按"继续"。
  4. macOS 安装器打开后,请按照屏幕上的说明操作。

Intel 处理器

  1. 将可引导安装器插入已连接到互联网且与您要安装的 macOS 版本兼容的 Mac。
  2. 将 Mac 开机或重新启动后,立即按住 Option (Alt) ⌥ 键。
  3. 当您看到显示可引导宗卷的黑屏时,松开 Option 键。
  4. 选择包含可引导安装器的宗卷。然后点按向上箭头或按下 Return 键。
    如果您无法从可引导安装器启动,请确保"启动安全性实用工具"中的"外部启动"设置已设为允许从外部介质启动。
  5. 根据提示选取您的语言。
  6. 从"实用工具"窗口中选择"安装 macOS"(或"安装 OS X"),然后点按"继续",并按照屏幕上的说明进行操作。

进一步了解

可引导安装器不会从互联网下载 macOS,但却需要互联网连接才能获取特定于 Mac 机型的固件和其他信息。

要了解 createinstallmedia 命令以及可与它搭配使用的参数,请确保 macOS 安装器位于您的"应用程序"文件夹中,然后在"终端"中输入相应的路径:


/Applications/Install\ macOS\ Big\ Sur.app/Contents/Resources/createinstallmedia 

/Applications/Install\ macOS\ Catalina.app/Contents/Resources/createinstallmedia 

/Applications/Install\ macOS\ Mojave.app/Contents/Resources/createinstallmedia 

/Applications/Install\ macOS\ High\ Sierra.app/Contents/Resources/createinstallmedia 

/Applications/Install\ OS\ X\ El\ Capitan.app/Contents/Resources/createinstallmedia 

发布日期: 2021 年 05 月 13 日

https://support.apple.com/zh-cn/HT201372

大部分情况下,Homestead 的安装是非常简单的,我就基本上没遇到过问题。然而如果你遇到 vagrant up 后卡在 SSH auth method: private key 的情况,可以按照本文办法进行尝试:

问题

homestead-7: Warning: Host appears down. Retrying...
homestead-7: Warning: Host appears down. Retrying...
homestead-7: Warning: Host appears down. Retrying...
homestead-7: Warning: Host appears down. Retrying...
homestead-7: Warning: Host appears down. Retrying...
homestead-7: Warning: Host appears down. Retrying...

解决办法

重新生成 insecure_private_key,运行

> vagrant ssh-config
Host homestead-7
  HostName 10.211.55.3
  User vagrant
  Port 22
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile /Users/x/Homestead/.vagrant/machines/homestead-7/parallels/private_key
  IdentitiesOnly yes
  LogLevel FATAL
  ForwardAgent yes

移除文件 /Users/x/Homestead/.vagrant/machines/homestead-7/parallels/private_key

vagrant halt
vagrant up

软件的稳定性其实往往来源于:足够多的使用者与足够多的反馈跟改进。

Linux系统,在服务器端的大多数常用软件都有足够多的使用者,所以就足够稳定,由于它在服务器端市场占有率远高于微软,所以服务器端就是比微软稳定,很正常的事。

在桌面端,市场占用率远低于微软,不稳定也是自然的。

为什么Linux下命令行程序往往又好用又稳定?是因为用户喜欢装逼吗?不是,因为命令行程序是服务器端跟桌面端通用的,而服务器端程序经过了足够多用户的使用,经过了足够的反馈开发迭代,所以稳定。而图形界面只有桌面用户用,桌面占有率那么低,这些程序往往缺乏足够的测试人力也缺乏足够的开发维护人力,所以并不会非常稳定。

那么,你要想体验Linux稳定,怎么办?答案就是只使用市场占有率高,用户量大,因而获得了充分测试的软件,这就稳定了。比方说只使用服务器端。或者桌面端只使用最常用的那些,例如终端仿真器,浏览器,输入法,gcc编译器之类,肯定是稳定的。

你看我就用浏览器,输入法,xterm,screen,编程ide,vim,以及一堆命令行的东西,稳定得很啊,六个月才重启一次电脑,重启的那一次还是因为ubuntu升级。