/etc/passwd
修改成:
root::0:0:Super User:/root:/bin/bash
/etc/shadow
可以不修改。
在 linux 仓库中执行 make dtbs
生成 dtb 文件
ubuntu2204宿主机中创建网络:
sudo apt install bridge-utils -y # brctl命令
sudo apt-get install uml-utilities -y # tunctl 命令, centos9没有
qemu-system-arm -net nic,model=? -M vexpress-a15 # 查看支持的虚拟网络
sudo tunctl -b # 按顺序创建 tap0 tap1,每输入一次命令创建一个
sudo tunctl -t tap0 -u sonvhi # 指定名称创建
sudo tunctl -t tap1 -u sonvhi
sudo ip link set tap0 up # 激活
sudo ip link set tap1 up # 激活
sudo tunctl -d tap1 # 删除 tap1
sudo brctl show # 查看网桥
sudo brctl addif virbr0 tap0 # tap0 加入网桥
sudo brctl addif virbr0 tap1 # tap1 加入网桥
sudo brctl delif virbr0 tap0 # tap0 移出网桥
sudo brctl addbr br0 # 新建网桥 br0
sudo brctl delbr br0 # 删除网桥 br0
sudo brctl addif br0 enx381428b8c32c # 注意:无线网卡不行, 必须是以太网卡
sudo brctl addif br0 tap0 # tap0 加入网桥
centos9宿主机中没有 tunctl
的解决办法:
sudo ip tuntap add tap0 mode tap user sonvhi
sudo ip tuntap del tap0 mode tap
sudo ip tuntap list
bullseye aarch64 网络无法使用, /etc/network/interfaces
需要把 eth0
改成 enp0s1
(通过dmesg | grep -i eth
找到enp0s1
)
riscv64架构的镜像,可以直接下载ubuntu2204(选择[QEMU emulator])。
qemu-system-riscv64 -netdev ? # 宿主机中查看可用的netdev backend类型
虚拟机中修改配置:
systemctl status systemd-modules-load.service # 查看systemd-modules-load服务状态
# 删除systemd-modules-load服务,怕万一后续有用,只做重命名
mv /lib/systemd/system/systemd-modules-load.service /lib/systemd/system/systemd-modules-load.service.bak
cp /etc/fstab /etc/fstab.bak # 备份
vim /etc/fstab # 删除 LABEL=UEFI 一行
openEuler 22.03 LTS SP2(或更新的版本),Scenario选择“cloud computing”,下载qcow2.xz
,解压:
xz -d openEuler-22.03-LTS-SP2-x86_64.qcow2.xz
qemu启动参数需要做一些小修改 -append "... root=/dev/vda2 ..."
。
默认的登录账号是root
,密码是 openEuler12#$
,具体参考系统安装。
注意需要打开vfat
文件系统相关配置,具体查看《微软文件系统》中vfat
相关的一节。否则会进入emergency mode,如果你实在不想打开vfat
文件系统相关配置,可以编辑/etc/fstab
文件删除/boot
相关的一行,重启系统就可以正常启动了,但不建议哈。
串口打印:
virsh list # 找到虚拟机名称
virsh console <虚拟机名称>
echo "hello" > /dev/ttyS0 # 在虚拟机中执行,有可能是 ttyS1, ttyS2 ...
vim /boot/grub/grub.cfg # 在相应启动选项的 linux /vmlinuz-5.10.0-8-generic 开头的一行最后加 console=ttyS0,115200 loglevel=8