一、說明
雖然說大部分的場合,docker都能解決問題,但是有些大型的軟件安裝時如果修改配置會很麻煩,比方說前面遇到的code-server和dify 默認都是80和443端口要使用,安裝在一起就會端口沖突,通過該端口來解決問題,理論上都行,但是實際我在應用當中發現出現了一些意想不到的問題,也許別人沒有遇到過,但是我確實遇到了,沒辦法,只能把兩個安裝在各自獨立的系統中,這樣就完全隔離。都可以使用原版的軟件,另外保持服務器宿主機本身的完全干凈,畢竟我們平時安裝的東西太多,服務器又沒必要也不適合使用圖形界面,所以命令行安裝就有必要了,這里只是做個記錄,網上教程很多
在 Ubuntu Server 25.04 命令行中安裝 Ubuntu 虛擬機,可以使用?KVM/QEMU?虛擬化工具?
二、 安裝
1、確認系統支持虛擬化
egrep -c '(vmx|svm)' /proc/cpuinfo# 輸出值應大于 0。如果為 0,需在 BIOS 中啟用虛擬化支持。
?2、安裝 KVM/QEMU 及相關工具
sudo apt update
sudo apt install -y qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virtinst
3、 云鏡像下載以及安裝目錄和權限確定
# 目錄和權限設置后面用的到
mkdir -p ~/vm-data
sudo chown -R $USER:libvirt-qemu ~/vm-data
sudo chmod 775 ~/vm-data
sudo chown -R $USER:libvirt-qemu /home/mucuna
sudo chmod 775 /home/mucuna# 下載云鏡像
wget -O /home/mucuna/vm-data/ubuntu-25.04-server-cloudimg-amd64.img https://cloud-images.ubuntu.com/releases/plucky/release/ubuntu-25.04-server-cloudimg-amd64.img
4、將用戶加入 libvirt 組
sudo usermod -aG libvirt $USER
newgrp libvirt # 立即生效或重新登錄sudo systemctl enable --now libvirtd
5、檢測KVM情況
在 Ubuntu Server 中遇到?"WARNING KVM acceleration not available, using 'qemu'"?表示虛擬機無法使用硬件加速(KVM),將退回到純軟件模擬(QEMU),導致性能顯著下降
1、檢查 CPU 是否支持 Intel VT-x 或 AMD-V 技術:
?egrep -c '(vmx|svm)' /proc/cpuinfo
輸出大于 0:CPU 支持虛擬化,但可能未啟用。
輸出為 0:CPU 不支持或 BIOS 中禁用虛擬化
2、檢查 KVM 內核模塊是否加載
lsmod | grep kvm
正常輸出:應顯示?
kvm_intel
?或?kvm_amd
。3、驗證?
/dev/kvm
?權限ls -l /dev/kvm
權限問題:若輸出顯示組為?
kvm
,將用戶加入?kvm
?組:sudo usermod -aG kvm $USER
newgrp kvm ?# 立即生效或重新登錄
mucuna@x58:~/vm-data$ kvm-ok
INFO: /dev/kvm exists
KVM acceleration can be used
?
6、確保?osinfo-db
?支持 Ubuntu 25.04
sudo apt install libosinfo-bin# 查看支持的 Ubuntu 版本
osinfo-query os | grep ubuntu# 更新數據庫(Ubuntu 中通常通過 apt)
sudo apt update
sudo apt install osinfo-db
7、編輯元數據信息
#配置用戶與SSH,并設置主機名。
cat > user-data << EOF
#cloud-config
user: root
password: 123456
chpasswd: { expire: False }
ssh_pwauth: True
package_update: true
packages:- qemu-guest-agent
EOFcat > meta-data << EOF
instance-id: dify-vm
local-hostname: dify
EOF
8、生成cloud-init ISO
sudo apt install genisoimagesudo genisoimage -output /home/mucuna/vm-data/ubuntu-cloud-vm.iso -volid cidata -joliet -rock user-data meta-data
9、配置網絡為橋接模式
network:version: 2ethernets:enp2s0:dhcp4: nodhcp6: nobridges:br0:interfaces: [enp2s0]dhcp4: nodhcp4: noaddresses:- "192.168.1.111/24"nameservers:addresses:- 8.8.8.8- 8.8.4.4search: []routes:- to: "default"via: "192.168.1.1"
?應用配置,立馬生效
sudo netplan apply
sudo netplan generate
sudo netplan --debug apply
查看命令
#不是最小安裝已經安裝過了
sudo apt install bridge-utils -ybrctl show
9、創建虛擬機
利用?virt-install?命令的?--import?選項,您可以直接從現有的云鏡像文件創建虛擬機,而無需進行操作系統安裝過程
sudo virt-install \
--name dify-vm \
--vcpus 4 \
--memory 8192 \
--disk path=/home/mucuna/vm-data/ubuntu-25.04-server-cloudimg-amd64.img \
--disk path=/home/mucuna/vm-data/ubuntu-cloud-vm.iso \
--import \
--os-variant ubuntu25.04 \
--network bridge=br0,model=virtio \
--graphics none \
--console pty,target_type=serial
參數說明:
--nographics
: 禁用圖形輸出,強制使用控制臺。
--extra-args
: 向安裝內核傳遞串口控制臺參數。
--location
: 指定ISO路徑,自動檢測內核和initrd
--name
: 虛擬機的名稱--ram
: 分配給虛擬機的內存,單位是MB,這里是2048MB(2GB)--vcpus
: 分配的虛擬CPU數量--disk
: 指定虛擬機的磁盤路徑和大小 ,path=/var/lib/libvirt/images/myvm.img
是磁盤文件的路徑,size=20
是磁盤大小(GB)--os-variant
: 操作系統的版本,用于 優化虛擬機配置--network
: 指定使用libvirt
的默認NAT網絡(network=default
)115200n8
: (也可以不寫) 串行端口的波特率設置,115200 是波特率,n
?表示無奇偶校驗位,8
?表示每個數據字節有 8 位console=ttyS0
: 將控制臺輸出重定向到第一個串行端口(ttyS0
)?
安裝完后直接按回車,進入虛擬機登錄界面?,就是在宿主機的命令行界面
我們在元數據信息中設置用戶為root 密碼為123456用這個登錄,直接就進去了
?
這個時候已經進了虛擬機界面了 ,ping一下百度,可以連接外網
直接用shutdown now命令就可以關閉了
然后在用?virsh start dify-vm 就可以啟動虛擬機
用virsh console dify-vm可以進入上面的界面登錄
10、配置靜態ip
network:version: 2ethernets:enp1s0:dhcp4: nodhcp6: noaddresses:- "192.168.1.111/24"nameservers:addresses:- 8.8.8.8- 8.8.4.4search: []routes:- to: "default"via: "192.168.1.1"
11、管理虛擬機命令
virsh list --all # 查看所有虛擬機
virsh start dify-vm # 啟動虛擬機
virsh shutdown dify-vm # 正常關閉
virsh destroy dify-vm # 強制停止
virsh edit dify-vm # 編輯虛擬機配置
virsh undefine dify-vm # 刪除虛擬機(需先destroy)
virsh console dify-vm # 進入命令行
?三、遠程ssh登錄
登錄時出現錯誤,修改配置
nano /etc/ssh/sshd_config
找到?#Authentication
,將?PermitRootLogin
?參數修改為?yes
找到?#Authentication
,將?PasswordAuthentication
?參數修改為 yes
?由于這個是安裝的云鏡像,
/etc/ssh/sshd_config.d目錄下的50-cloud-init.conf? , 60-cloudimg-settings.conf兩個文件中也有PasswordAuthentication
?參數,也要改
修改后?sudo systemctl restart sshd
登錄成功
?四、設置虛擬機開機自啟動
我們有需求,就是在宿主機啟動時,同步啟動虛擬機,很簡單
直接執行
sudo virsh autostart dify-vm
?宿主機開機后,發現虛擬機已經運行了,說明自啟動成功
五、硬盤不夠,咋辦
靠,這云鏡像怎么搞的,這么點?
sudo virsh domblklist dify-vm
?通過執行虛擬磁盤來檢索有關虛擬磁盤的更多詳細信息,例如其當前大小。qemu-img info
命令以 VM 磁盤的完整路徑為下:
#vda /home/mucuna/vm-data/ubuntu-25.04-server-cloudimg-amd64.img
#vdb /home/mucuna/vm-data/ubuntu-cloud-vm.iso
sudo qemu-img info /home/mucuna/vm-data/ubuntu-25.04-server-cloudimg-amd64.img
才3.5g啊?
檢查快照,有快照不能調節大小,下面顯示沒有
sudo virsh snapshot-list dify-vm
調整KVM虛擬磁盤的大小
調整為增加80g
sudo qemu-img resize /home/mucuna/vm-data/ubuntu-25.04-server-cloudimg-amd64.img +80G
sudo qemu-img info /home/mucuna/vm-data/ubuntu-25.04-server-cloudimg-amd64.img
?
?