Skip to content

Debian 虚拟机

why

在更偏向生产的环境中,debian 非滚动更新带来的稳定性更加可靠。

本文主要包含命令行版 debian 虚拟机使用记录,用于 ssh 连接远程开发,以及未来 docker 部署。

how

○ 下载镜像

官方最新 amd64 镜像,Debian 13

○ 创建虚拟机

sh
# 创建虚拟系统文件
sudo qemu-img create -f qcow2 debian_base.qcow2 80G

# 安装虚拟系统
sudo qemu-system-x86_64 \
  -enable-kvm \
  -cpu host \
  -smp 8 \
  -m 16G \
  -usb \
  -device usb-tablet \
  -drive file=./debian_base.qcow2 \
  -cdrom ./debian-live-13.0.0-amd64-kde.iso \
  -boot order=d

# 后续在上方虚拟机的基础上,复制后使用
cp debian_base.qcow2 ./debian_android.qcow2

○ 运行

sh
# 启动虚拟系统
# 非 spice 虚拟机中,无法粘贴,输入命令体验差。改为 ssh 连接虚拟机来提升粘贴输入体验
# hostfwd 端口转发,宿主 60022 端口映射访客 22 端口,后续用于 ssh 连接
sudo qemu-system-x86_64 \
  -enable-kvm \
  -cpu host \
  -smp 8 \
  -m 16G \
  -net nic \
  -net user,hostfwd=tcp::60022-:22 \
  -vga qxl \
  -drive file=./debian_android.qcow2

# 指定 vnc,后台静默运行
sudo qemu-system-x86_64 \
  -enable-kvm \
  -cpu host \
  -smp 8 \
  -m 16G \
  -vga qxl \
  -net nic \
  -net user,hostfwd=tcp::60022-:22 \
  -vnc :0\
  -drive file=./debian_android.qcow2

# 可 spice 连接,剪切板共享,推荐👍
sudo qemu-system-x86_64 \
  -enable-kvm \
  -cpu host \
  -smp 8 \
  -m 16G \
  -vga qxl \
  -device virtio-net-pci,netdev=n1 \
  -netdev user,id=n1,hostfwd=tcp::2222-:22 \
  -device virtio-serial-pci \
  -device virtserialport,chardev=spicechannel0,name=com.redhat.spice.0 \
  -chardev spicevmc,id=spicechannel0,name=vdagent \
  -spice port=5900,disable-ticketing=on \
  -drive file=./debian_android.qcow2,if=virtio,cache=writeback

# spice 连接
spicy -h 127.0.0.1 -p 5900

# 直通 USB 前,主机获取 USB 信息
# 安装 usbutils
paru -S usbutils
# 若无 lsusb 执行权限,需添加当前用户到 plugdev 组
sudo usermod -aG plugdev $USER
# 查看外接设备信息
lsusb
# 设备信息参考解析:Bus 总线号,Device 设备号,ID verderID:productID,描述信息。
# 描述信息为“Linux Foundation 3.0 root hub”时,属于系统自带的 USB 根集线器,不是外接设备。
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 004 Device 002: ID 0bda:9210 Realtek Semiconductor Corp. RTL9210 M.2 NVME Adapter
Bus 003 Device 006: ID 2d95:6013 vivo iQOO Neo9

## 直通 USB 时,启动添加参数
-device qemu-xhci,id=xhci \
-device usb-host,bus=xhci.0,vendorid=0x2d95,productid=0x6013 \
-usb \

# 关机
shutdown -h now

○ 准备系统

sh
# 设置 root 用户密码
sudo passwd root

# 编辑镜像源,取消光盘镜像源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
vi /etc/apt/sources.list
apt-get update
apt-get upgrade -y

dpkg -l
apt-get install sudo vim build-essential

# 检查 ssh 状态,无则安装
service sshd status
systemctl status ssh
apt-get install openssh-server
systemctl enable ssh

# ssh 连接虚拟机,已开启端口转发
ssh -p 60022 $user@127.0.0.1

# 用户权限
su root
vim /etc/sudoers
# root 下面添加行:
$user ALL=(ALL:ALL) NOPASSWD: ALL

○ 安卓开发

sh
# 真机调试时,需开启 USB 直通
# 获取 adb
sudo apt-get install adb
# 连接安卓设备,设备上启动 usb 调试
adb devices
# 安卓设备上亮屏点允许连接

# 添加 zulu 源
# https://docs.azul.com/core/install/debian
sudo apt install gnupg ca-certificates curl

curl -s https://repos.azul.com/azul-repo.key | sudo gpg --dearmor -o /usr/share/keyrings/azul.gpg

echo "deb [signed-by=/usr/share/keyrings/azul.gpg] https://repos.azul.com/zulu/deb stable main" | sudo tee /etc/apt/sources.list.d/zulu.list

# debian 安装工具
sudo apt install -y curl unzip git zulu17-jdk wget
java -version

# https://developer.android.com/studio/install#linux
cd ~/Downloads
wget https://redirector.gvt1.com/edgedl/android/studio/ide-zips/2025.1.2.11/android-studio-2025.1.2.11-linux.tar.gz
sudo tar -xzf android-studio-2025.1.2.11-linux.tar.gz -C /opt/

# 启动 android studio
sudo ln -s /opt/android-studio/bin/studio.sh /bin/studio
/bin/studio
# 创建项目后,可通过顶部 Tools -> Create Desktop Entry 创建桌面快捷方式

# 修改内存为 8192 MB,Help -> Change Memory Settings

○ Docker

sh
# docker
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
systemctl status docker
sudo docker run hello-world

○ Starship

sh
apt-get install fontconfig
apt-get install fonts-noto/stable fonts-noto-cjk/stable fonts-noto-color-emoji/stable

# guest
mkdir -p ~/.local/share/fonts
mkdir -p ~/.config/fontconfig

# host 下载 nerd fonts
# 字体和配置文件传输到 guest
scp -P 60022 -r ~/Downloads/JetBrainsMono/* aubur@127.0.0.1:/home/aubur/.local/share/fonts
scp -P 60022 ~/Downloads/fonts.conf aubur@127.0.0.1:/home/aubur/.config/fontconfig/

# guest,执行后重新登录
fc-cache -fv
cp ./fonts.conf ~/.config/fontconfig/
curl -sS https://starship.rs/install.sh | sh
# 编辑,添加:eval "$(starship init bash)"
sudo vim /etc/bash.bashrc

○ Go

sh
mkdir -p ~/work
cd ~/work

curl -LO https://go.dev/dl/go1.24.2.linux-amd64.tar.gz
file go1.24.2.linux-amd64.tar.gz

sudo tar -xzvf ~/work/go1.24.2.linux-amd64.tar.gz -C /opt
# 添加环境变量:export PATH=$PATH:/opt/go/bin
sudo vim /etc/bash.bashrc
source /etc/bash.bashrc

what

由此,得到了 Debian 虚拟机系统,安装好后建议立即备份 qcow2,便于后续其他用途。

参考

访问量 PV:Blocked用户数 UV:Blocked