Qemu仿真----(7)运行Ubuntu Core
平台: 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账号.
登录以下地址,进行注册:
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 进入配置
直接点击OK.
3.4.2 配置网络
qemu的虚拟有线网络,会自动获取IP,不需要设置,直接"Done".
3.4.3 输入账号
输入邮件地址,邮件地址就是我们注册的Ubuntu One的账号且账号已设置ssh-key.
3.4.4 完成设置
出现此页面,我们就可以通过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"类似,不过没有使用有线网,使用的是无线网,所以配置网络步骤如下:
选择wlan0 --> Edit Wifi --> 输入wifi网络ID和密码,之后会自动获取IP。其它步骤与第3步一样。
所有配置完成之后,显示类似下图:
就可以连接了,这里没有使用端口转发,所以直接:
# 如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,然后配置网络和登录账号,即可使用。