最近工作上開始需要自動化測試有開啟 secure boot 的機器,鴕鳥了好多年終於開始要好好面對這件事情了 XD
下面是跟著這篇 wiki 的資訊所作的測試。有些指令我有根據自己的狀況(host machine:Ubuntu Trusty)調整。覺得太繁瑣的話可以直接跳到幾乎是最後面的小結 XDD
因為我的系統中沒有 uvt 這個指令,找了一下沒有看到 uvt 這個指令從哪來,所以採用 wiki 中提供的另外一種作法:
但會得到:
表示要安裝 virt-veiwer package 來顯示開機過程的畫面:
接下來就會看到開機畫面啦!
下一篇打算來解釋細節,敬請期待。
要印螢幕的時候按了 alt ,鍵盤的訊號同時被 host machine 和 guest machine 捕捉到的一瞬間 XD
根據這封 virt-tool mailing list 中的 email,這是因為我們沒有事先告訴 virt-manager (or virtsh) 使用的 disk storage 存放位置(專有名詞叫做「pool」,一個 pool 下面可以有好幾個 storage file。),所以 virt-manager 認為這個地方它不敢亂動。
首先綁定資料夾 /tmp 成為 pool 之一,名字叫做 tmppool 的 pool
啟動 pool
接下來把上面一長串中 --disk 選項後面指定的位置改為 /tmp (新的 pool 位置)就可以用了:
檢查 pool 相關的指令有哪些
驗證一下是不是真的多了 tmppool 這個 pool
使用 virt-install 建立新的 virtual machine instance (domain) 之後,我們只選 try ubuntu 但是不安裝,然後關機 or reboot。下一次只要直接使用 connect 和 start 就可以開啟虛擬機器了(這兩個動作請見下篇解釋)
啟動後因為不像 virt-install 一樣有自己啟動 virt-viewer ,所以要自己開:
(thho-trusty-amd64-01 是 domain name)
開啟了之後就會進入 UEFI shell 如圖。
因為 storage (可以想成是虛擬硬碟)中我們還沒有安裝任何作業系統(上面只選 try ubuntu 但沒有安裝),所以開機後會進入 UEFI shell。這個 shell 是 ovmf 提供的。
比較:
所有指令和選項都一樣,但把 --boot=loader=OVMF.fd 拿掉。
也就是說我們預期不使用 OVMF.fd 這個 bootloader 開機,所以應該要直接進入使用 cdrom 開機。
果然直接進入 cdrom iso
小結:
因為我有打算在不久的將來自動化這些指令,所以刻意選擇使用 virsh 而不是 virt-manager。virt-manger 應該也是可以作到上面說的這些事情,只是在自動化上大概就會遇到問題。
下面是跟著這篇 wiki 的資訊所作的測試。有些指令我有根據自己的狀況(host machine:Ubuntu Trusty)調整。覺得太繁瑣的話可以直接跳到幾乎是最後面的小結 XDD
因為我的系統中沒有 uvt 這個指令,找了一下沒有看到 uvt 這個指令從哪來,所以採用 wiki 中提供的另外一種作法:
virt-install --connect=qemu:///system --name=sb-saucy-amd64 --arch=x86_64 --ram=768 \
--disk=path=<path to>/sb-saucy-amd64.qcow2,size=8,format=qcow2,bus=ide,sparse=True \
--virt-type=kvm --accelerate --hvm --cdrom=<path to>/saucy-desktop-amd64.iso \
--os-type=linux --os-variant=generic26 --graphics=vnc --network=network=default,model=virtio \
--video=cirrus --noreboot --boot=loader=OVMF.fd
但會得到:
ERROR Format cannot be specified for unmanaged storage.
這看起來似乎是要事先先建立好給虛擬機器使用的 storage file。因為急著想要看到結果,我使用 --nodisk 來取代 --disk [1]
virt-install --connect=qemu:///system --name=sb-trusty-amd64-02 --arch=x86_64 --ram=768 --nodisk --virt-type=kvm --accelerate --hvm --cdrom=./uuu/ubuntu-14.04.2-desktop-amd64.iso --os-type=linux --os-variant=generic26 --graphics=vnc --network=network=default,model=virtio --video=cirrus --noreboot --boot=loader=OVMF.fd如果遇到這個訊息
Starting install...
Creating domain... | 0 B 00:00
WARNING Unable to connect to graphical console: virt-viewer not installed. Please install the 'virt-viewer' package.
Domain installation still in progress. You can reconnect to
the console to complete the installation process.
sudo apt-get install virt-viewer
接下來就會看到開機畫面啦!
下一篇打算來解釋細節,敬請期待。
要印螢幕的時候按了 alt ,鍵盤的訊號同時被 host machine 和 guest machine 捕捉到的一瞬間 XD
根據這封 virt-tool mailing list 中的 email,這是因為我們沒有事先告訴 virt-manager (or virtsh) 使用的 disk storage 存放位置(專有名詞叫做「pool」,一個 pool 下面可以有好幾個 storage file。),所以 virt-manager 認為這個地方它不敢亂動。
首先綁定資料夾 /tmp 成為 pool 之一,名字叫做 tmppool 的 pool
virsh pool-define-as --name tmppool --type dir --target /tmp
啟動 pool
virsh pool-start tmppool
接下來把上面一長串中 --disk 選項後面指定的位置改為 /tmp (新的 pool 位置)就可以用了:
$ virt-install --connect=qemu:///system --name=thho-trusty-amd64-01 --arch=x86_64 --ram=768 --disk=path=/tmp/thho-trusty-amd64.qcow2,size=8,format=qcow2,bus=ide,sparse=True --virt-type=kvm --accelerate --hvm --cdrom=./uuu/ubuntu-14.04.2-desktop-amd64.iso --os-type=linux --os-variant=generic26 --graphics=vnc --network=network=default,model=virtio --video=cirrus --noreboot --boot=loader=OVMF.fd
Starting install...
Allocating 'thho-trusty-amd64.qcow2' | 8.0 GB 00:00
Creating domain...
檢查 pool 相關的指令有哪些
virsh help pool
驗證一下是不是真的多了 tmppool 這個 pool
$ virsh pool-list
Name State Autostart
-------------------------------------------
default active yes
tmppool active no
uvtool active yes
使用 virt-install 建立新的 virtual machine instance (domain) 之後,我們只選 try ubuntu 但是不安裝,然後關機 or reboot。下一次只要直接使用 connect 和 start 就可以開啟虛擬機器了(這兩個動作請見下篇解釋)
virsh --connect qemu:///system start thho-trusty-amd64-01
啟動後因為不像 virt-install 一樣有自己啟動 virt-viewer ,所以要自己開:
virt-viewer thho-trusty-amd64-01
(thho-trusty-amd64-01 是 domain name)
開啟了之後就會進入 UEFI shell 如圖。
因為 storage (可以想成是虛擬硬碟)中我們還沒有安裝任何作業系統(上面只選 try ubuntu 但沒有安裝),所以開機後會進入 UEFI shell。這個 shell 是 ovmf 提供的。
比較:
所有指令和選項都一樣,但把 --boot=loader=OVMF.fd 拿掉。
也就是說我們預期不使用 OVMF.fd 這個 bootloader 開機,所以應該要直接進入使用 cdrom 開機。
virt-install --connect=qemu:///system --name=thho-trusty-amd64-02 --arch=x86_64 --ram=768 --disk=path=/tmp/thho-trusty-amd64-02.qcow2,size=8,format=qcow2,bus=ide,sparse=True --virt-type=kvm --accelerate --hvm --cdrom=./uuu/ubuntu-14.04.2-desktop-amd64.iso --os-type=linux --os-variant=generic26 --graphics=vnc --network=network=default,model=virtio --video=cirrus --noreboot
果然直接進入 cdrom iso
小結:
- 使用 virt-install 建立虛擬機器。並且是建立一個擁有 ovmf 這個韌體的虛擬機器。
- 使用 virsh 啟動 virt-install 建立的虛擬機器,開始操作 ovmf 提供的 UEFI shell。
因為我有打算在不久的將來自動化這些指令,所以刻意選擇使用 virsh 而不是 virt-manager。virt-manger 應該也是可以作到上面說的這些事情,只是在自動化上大概就會遇到問題。
沒有留言:
張貼留言