QEMU(quick emulator)是一款由法布里斯·贝拉(Fabrice Bellard)等人编写的通用且免费的可执行硬件虚拟化的(hardware virtualization)开源仿真器(Emulator)。1
下载:https://www.qemu.org/download/
文档:https://qemu.weilnetz.de/doc/latest/
参数:https://qemu.weilnetz.de/doc/latest/system/invocation.html
## create
qemu-img create -f qcow2 debian.qcow2 8G
## backing file
qemu-img create -b debian.qcow2 -F qcow2 -f qcow2 debian-snap.qcow2 8G
qemu-img commit debian-snap.qcow2 ## 会合并到 debian.qcow2 释放自身占用的存储空间
## run
qemu-system-x86_64 -m 2G -accel tcg -smp 2 -hda debian.qcow2 -netdev user,id=n1 -device virtio-net,netdev=n1
## resize
qemu-img resize rhel6u3-a.img +2G
qemu-img resize rhel6u3-b.img -1G ## qcow2格式文件不支持缩小镜像的操作
## 压缩
qemu-img convert -c -O qcow2 data.qcow2 data1.qcow2
## snap
qemu-img snapshot -c snapshot01 test.qcow2 //创建
qemu-img snapshot -l test.qcow2 //查看
qemu-img snapshot -a snapshot01 test.qcow2 //revert到快照点
qemu-img snapshot -d snapshot01 test.qcow2 //删除
debain有构建好的qcow2镜像,可以直接使用。对于其他系统,可以在此镜像基础上使用docker构建对应的环境。
https://cloud.debian.org/images/cloud/bookworm/latest/
下载nocloud版本即可
# 先扩容
qemu-img resize debian.qcow2 +80G
amd64
#!/bin/bash
qemu-system-x86_64 -m 8G -accel whpx -smp 4 \
-net nic \
-net user,hostfwd=tcp::2002-:22 \
-hda debian-11-nocloud-amd64-20230912-1501.qcow2
aarch64、arm64:需要在qemu中将视图切换到serial才能看到系统启动
#!/bin/bash
qemu-system-aarch64 \
-M virt \
-cpu host \
-accel hvf \
-smp 4 \
-m 4G \
-net nic \
-net user,hostfwd=tcp::2022-:22 \
-bios QEMU_EFI.fd \
-drive id=hd0,media=disk,if=none,file=./debian-11-nocloud-arm64-20230912-1501.qcow2 \
-device virtio-scsi-pci \
-device scsi-hd,drive=hd0
切换阿里源
sed -i 's/http:\/\/deb.debian.org/https:\/\/mirrors.aliyun.com/' /etc/apt/sources.list
sed -i 's/http:\/\/security.debian.org/https:\/\/mirrors.aliyun.com/' /etc/apt/sources.list
apt update
sshd服务需要重装
apt remove openssh-server
apt install openssh-server
vim /etc/ssh/sshd_config ## 打开密码登录
systemctl restart sshd
## 解决sudo告警问题
vim /etc/hosts # 在 localhost 后边添加 debian
添加用户
useradd -s /bin/bash -m -p "123456" dev
usermod -aG sudo dev
echo "dev ALL=(ALL) NOPASSWD:ALL" | tee /etc/sudoers.d/dev
设置时区
su dev
echo "TZ='Asia/Shanghai'; export TZ" >> ~/.profile
source ~/.profile
安装docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo groupadd docker
sudo chgrp docker /var/run/docker.sock
sudo gpasswd -a dev docker
sudo usermod -aG docker dev
id
newgrp ## 如果id命令显示出没有docker组,使用这个刷新下
## 设置代理
vim ~/.docker/config.json,对于root则是 vim /etc/docker/daemon.json
{
"registry-mirrors": [
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn"
]
}
如果后续要改变磁盘大小,需要进行如下操作:
## 扩充大小
qemu-img resize rhel6u3-a.img +2G
## 挂载
sudo cfdisk
wirte
quit
sudo mkdir /data
sudo mkfs.ext4 /dev/sda3
sudo mount /dev/sda3 /data
## 开机自动挂载 !!!!!
sudo vim /etc/fstab
## 添加
/dev/sda3 /data ext4 defaults 0 0
## 或者直接使用
sudo apt-get install cloud-guest-utils
sudo growpart /dev/vda 1
-net nic -net tap,ifname=tap0
需要安装tap0网卡