平台: ubuntu-22.04-desktop-amd64.
对象: ubuntu core、qemu、raspberry pi、generic x86 pc.
文件: ubuntu-core-22-amd64.img.xz、ubuntu-core-22-arm64+raspi.img.xz

详细介绍通过Qemu运行ubuntu core,简单介绍x64电脑和树莓派上的使用方法。

1.账号

1.1 注册ubuntu账号

由于Ubuntu Core不使用用户名和密码登录系统,而是使用ssh和上传到Ubuntu One的ssh-key进行登录,所以需要注册Ubuntu One账号.

登录以下地址,进行注册:

[https://login.ubuntu.com]

1.2 添加ssh-key

向 https://login.ubuntu.com/ssh-keys 添加本地ssh-key信息,它支持:rsa、dsa、ecdsa、ed25519格式的key。

这里以ed25519为例,设置其它格式也可:

$ sudo apt install ssh
$ mkdir -p ~/.ssh
$ chmod 770 ~/.ssh
$ cd ~/.ssh
$ ssh-keygen -t ed25519 -C "t460@ubuntu22"
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/phoebus/.ssh/id_ed25519): id_ubuntucore
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in id_ubuntucore
Your public key has been saved in id_ubuntucore.pub
[...]

上面:"t460@ubuntu22",就是个名字,随便起,这里含义是:t460电脑型号,ubuntu22系统。
上面:ssh的名字设置成了id_ubuntucore,会生成两个文件id_ubuntucore和id_ubuntucore.pub,前者是私钥,后者是公钥。
上面:Enter passphrase,ssh-key密码,不设置就直接回车,也可以设置字符串密码。

我们把~/.ssh/id_ubuntucore.pub公钥的内容设置到[https://login.ubuntu.com/ssh-keys]中。

2.下载地址

Ubuntu Core 22:
[https://cdimage.ubuntu.com/ubuntu-core/22/stable/current/]

Ubuntu Core 20:
[https://cdimage.ubuntu.com/ubuntu-core/20/stable/current/]

Ubuntu Core 18:
[https://cdimage.ubuntu.com/ubuntu-core/18/stable/current/]

3.Qemu

3.1 安装依赖

$ sudo apt install qemu-kvm ovmf
$ snap install --edge test-snapd-swtpm

3.2 下载资源

$ wget https://cdimage.ubuntu.com/ubuntu-core/22/stable/current/ubuntu-core-22-amd64.img.xz
$ xz -d ubuntu-core-22-amd64.img.xz

3.3 启动方式

以下方式2选1:

1).带TPM:

sudo qemu-system-x86_64 \
    -enable-kvm \
    -smp 1 \
    -m 2048 \
    -machine q35 \
    -cpu host \
    -global ICH9-LPC.disable_s3=1 \
    -net nic,model=virtio \
    -net user,hostfwd=tcp::8022-:22,hostfwd=tcp::8090-:80  \
    -drive file=/usr/share/OVMF/OVMF_CODE.secboot.fd,if=pflash,format=raw,unit=0,readonly=on \
    -drive file=/usr/share/OVMF/OVMF_VARS.ms.fd,if=pflash,format=raw,unit=1 \
    -chardev socket,id=chrtpm,path="/var/snap/test-snapd-swtpm/current/swtpm-sock" \
    -tpmdev emulator,id=tpm0,chardev=chrtpm \
    -device tpm-tis,tpmdev=tpm0 \
    -drive "file=ubuntu-core-22-amd64.img",if=none,format=raw,id=disk1 \
    -device virtio-blk-pci,drive=disk1,bootindex=1 \
    -serial mon:stdio

2).不带TPM:

sudo qemu-system-x86_64 \
    -enable-kvm \
    -smp 1 \
    -m 2048 \
    -machine q35 \
    -cpu host \
    -global ICH9-LPC.disable_s3=1 \
    -net nic,model=virtio \
    -net user,hostfwd=tcp::8022-:22,hostfwd=tcp::8090-:80  \
    -drive file=/usr/share/OVMF/OVMF_CODE.secboot.fd,if=pflash,format=raw,unit=0,readonly=on \
    -drive file=/usr/share/OVMF/OVMF_VARS.ms.fd,if=pflash,format=raw,unit=1 \
    -drive "file=ubuntu-core-22-amd64.img",if=none,format=raw,id=disk1 \
    -device virtio-blk-pci,drive=disk1,bootindex=1 \
    -serial mon:stdio

其中8022-:22、8090-:80 :

虚拟机的22端口转发到主机的8022,80端口转发到主机的8090。

3.4 配置Ubuntu core

Ubuntu首次启动会自动安装系统,安装完成后,会提示:

Press enter to configure.

按下回车后,就会进入设置界面,我们做如下设置:

3.4.1 进入配置

qemu查看虚拟机信息 qemu版本查看_Ubuntu

直接点击OK.

3.4.2 配置网络

qemu查看虚拟机信息 qemu版本查看_qemu查看虚拟机信息_02

qemu的虚拟有线网络,会自动获取IP,不需要设置,直接"Done".

3.4.3 输入账号

qemu查看虚拟机信息 qemu版本查看_qemu查看虚拟机信息_03

输入邮件地址,邮件地址就是我们注册的Ubuntu One的账号且账号已设置ssh-key.

3.4.4 完成设置

qemu查看虚拟机信息 qemu版本查看_Ubuntu_04

出现此页面,我们就可以通过ssh就行连接了:

# 以下方式任选其一:
ssh <sso-username>@localhost -p 8022

# 或,指定私钥,如ssh -i ~/.ssh/id_ubuntucore hello@localhost -p 8022:
ssh -i <path-to-private-key> <sso-username>@localhost -p 8022

这里使用localhost,而非提示的10.0.2.15,因为后者连不上,如果非要用IP连,就设置Qemu的桥接网络。

4. Raspberry pi

测试机为: Raspberry pi 3b,插了一个USB无线wifi,接了显示器和键盘。

$ wget https://cdimage.ubuntu.com/ubuntu-core/22/stable/current/ubuntu-core-22-arm64+raspi.img.xz
$ xz -d ubuntu-core-22-arm64+raspi.img.xz
# 在电脑上插上SD卡,假设设备节点为:/dev/sdb
$ sudo dd if=ubuntu-core-22-arm64+raspi.img of=/dev/sdb status=progress; sync

写入完成后,把SD插到树莓派上,首次启动,会自动安装系统,步骤和"3. Qemu"类似,不过没有使用有线网,使用的是无线网,所以配置网络步骤如下:

qemu查看虚拟机信息 qemu版本查看_Ubuntu_05

选择wlan0 --> Edit Wifi --> 输入wifi网络ID和密码,之后会自动获取IP。其它步骤与第3步一样。

所有配置完成之后,显示类似下图:

qemu查看虚拟机信息 qemu版本查看_Ubuntu_04

就可以连接了,这里没有使用端口转发,所以直接:

# 如ssh hello@192.168.72.23
ssh <sso-username>@<ip-address>

5. x64电脑

以下方式均可尝试:

5.1 安装到U盘

$ wget https://cdimage.ubuntu.com/ubuntu-core/22/stable/current/ubuntu-core-22-amd64.img.xz
$ xz -d ubuntu-core-22-amd64.img.xz
# 假设U盘节点为/dev/sdb
$ sudo dd if=ubuntu-core-22-amd64.img of=/dev/sdb status=progress; sync

写完之后,电脑以U盘方式启动,首次启动自动安装,操作步骤参考第3、第4步,就可以通过有关联ubuntu one账号的ssh-key密钥的计算机就可以连接了:

ssh <sso-username>@<ip-address>

5.2 安装到硬盘

$ wget https://www.releases.ubuntu.com/jammy/ubuntu-22.04.2-desktop-amd64.iso
# 先安装到U盘/dev/sdb
$ sudo dd if=ubuntu-22.04.2-desktop-amd64.iso of=/dev/sdb status=progress; sync

电脑通过U盘启动,选择"Try or Install Ubuntu" --> "Try Ubuntu",联网,然后启动命令行:

$ wget https://cdimage.ubuntu.com/ubuntu-core/22/stable/current/ubuntu-core-22-amd64.img.xz
$ xz -d ubuntu-core-22-amd64.img.xz
# 假设硬盘节点为:/dev/nvme0
$ sudo dd if=ubuntu-core-22-amd64.img of=/dev/nvme0 status=progress; sync

写完后,重启计算机,拔下U盘,首次启动会自动安装Ubuntu core,然后配置网络和登录账号,即可使用。