用 VirtualBox 開啟實體硬碟中的 Windows

如果用 Linux 當開發環境,常常會碰到一個問題:因為一般企業使用的管理系統沒有 Linux 版本,導致有些操作必須使用 Windows 來完成。對於大部分的應用來說,在 VirtualBox 內安裝 Windows 可能就能解決,問題是,通常 VirtualBox 的 Windows 都是由工程師自行安裝,不是正式授權;再來,在 VirtualBox 內安裝 Windows,意味加上原來預設的 Windows,硬碟內要有兩套 Windows,這真的讓人很難接受,一套已經很佔空間了,居然還要兩套?

於是我有個想法,要是 VirtualBox 可以用實體空間來開機的話,就能直接在 VirtualBox 執行原本配置的系統,如此一來,可以用 IT 已經安裝好的授權軟體不說,也省掉了後續資料交換的麻煩。Google 後發現還真的有這種應用,當然馬上試試看。

列出分區

首先因為是使用硬碟的資料,我們需要確認 Windows 安裝在哪個 Partition,使用 fdisk -l 列出所有 Partition 的狀態

ken:~$ sudo fdisk -l /dev/nvme0n1
Disk /dev/nvme0n1: 119.2 GiB, 128035676160 bytes, 250069680 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 664C31C9-8F24-4D89-B16A-426FDCDBB716
Device             Start       End   Sectors  Size Type
/dev/nvme0n1p1      2048    534527    532480  260M EFI System
/dev/nvme0n1p2    534528    567295     32768   16M Microsoft reserved
/dev/nvme0n1p3    567296 111706111 111138816   53G Microsoft basic data
/dev/nvme0n1p4 248020992 250068991   2048000 1000M Windows recovery environment
/dev/nvme0n1p5 111706112 112504831    798720  390M Linux filesystem
/dev/nvme0n1p6 112504832 144502783  31997952 15.3G Linux swap
/dev/nvme0n1p7 144502784 248020991 103518208 49.4G Linux filesystem

可以看到 Windows 的資料位於 dev/nvme0n1

創建 VMDK 檔

接著,為了讓 VirtualBox 可以從實體硬碟開機,我們需要建立 vmdk 檔來表示實體硬碟。使用 VirtualBox 指令

ken:~$ sudo VBoxManage internalcommands createrawvmdk -filename ~/vmdk/windows_10.vmdk -rawdisk /dev/nvme0n1p1
RAW host disk access VMDK file /home/ken/vmdk/windows_10.vmdk created successfully.

創建虛擬機

再來,開啟 VirtualBox,用剛剛建好的 vmdk 檔來開機

這邊要注意,雖然我們的系統安裝在 SSD,使用的是 NVMe,但 VirtualBox 的 NVMe 似乎有問題,因此這邊選擇用 SATA

前面看到 nvme0n1 開頭是 EFI,因此記得要 Enable EFI

啟動虛擬機

設定都完成後,只要開啟 Virtual Machine,應該能看到 GRUB 的畫面,選擇 Windows Boot Manager,進入 Windows,完工。

小結

使用 VirtualBox 開啟 Windows 後,就能省掉很多資料交換的麻煩,但畢竟是 Virtual Machine,使用上不比 Native,可能會有些狀況;另外,我電腦的 Windows 跟 Ubuntu 開機都安裝在 SSD,要用 EFI 從 dev/nvme0n1 開機,但如果可以的話,最好將兩個系統切開,免得不小心開到 Ubuntu,造成資料損壞。

Reference

Read more

Weekly Issue 第 16 期:Anduril 的 MVP

近期嘗試降低 AI 相關選文,主要是因為我在閱讀時,不容易判斷內容是正確還是錯誤。本次選的「AI Evals 大辯論」在這點上就做得很棒,正反意見並陳,讓讀者知道自己哪些論點也有人支持,哪些論點具有爭議。 🗞️ 熱門新聞 The Amusement Park for Engineers 原本看是 Anduril 嘀咕幾聲(我對國防工業沒興趣),但看到一半覺得太讚了,推薦所有做產品的人閱讀。 這句話開始點亮我的眼睛:「那座臨時搭建的塔,是我們自掏腰包、為了驗證可行性而做的,幫助攔截了近一千磅的大麻,並導致數十起毒品走私逮捕 」 業界都說要做 MVP,但到底什麼是 viable?沒有 viable 的 MVP 只能稱為 prototype 而已。合作的 PM 有次說的傳神:「別人要樣品屋,但我們只有沒屋頂的牆壁。」 這篇雖然沒有講到 agile,卻做到

By Ken Chen

Weekly Issue 第 15 期:Go 語言從 1.25 支援 Flight Recorder

最近安排旅遊計畫,會到 Brisbane 居住三個月,突然跟熟悉的環境分開,用陌生眼光看待周圍一切,真是個特別的體驗。 世界依然在轉動,只是用了不同速度,反映在每週週報上,是項目變少了,可是內容變長了。 🗞️ 熱門新聞 Flight Recorder in Go 1.25 Go 1.25 開始支援 Flight Recorder。 以前要抓 trace,都是要等到事發後才能抓,有沒有可能事發前抓呢?有,原理很簡單,配置一塊記憶體存放臨時的 trace,如果符合條件,輸出持久化,否則丟棄,這就是 Flight Recorder。 官方給的範例很讚,像 slow request 這類例子,常常是處理 request 時遇到問題,在沒有 Flight Recorder

By Ken Chen

Weekly Issue 第 14 期:Product Hunt 已死

近期台灣技術圈新聞應該要算 Vibe Coding,無獨有偶的是,HN 上也談到類似的議題:行銷跟技術的界線在哪?哪些東西可以包裝成商品販售,哪些則是應該要有基本的自我審核? 🗞️ 熱門新聞 Product Hunt is Dead 有位產品創辦人寫了篇 Blog,標題比較聳動:Product Hunt 已死。 我沒特別 Follow Product Hunt,只有偶爾看看,但看完還是五味雜陳。依照文中所說,當你在 Product Hunt 發布產品後,會有一堆人來跟你說需不需要買讚,這讓我想到以前書市買榜的例子。 有人可能會覺得這是行銷,只是對我來說,行銷跟欺騙還是兩回事。我比較不確定的是,假設今天換個場景,改為無傷大雅的善意謊言,我會同意嗎? ✨ 科技觀點 How to Lead in a Room Full of Experts

By Ken Chen

Weekly Issue 第 13 期:Google 無須出售 Chrome

Chrome 的判決出來了,Google 不用分拆,只需要保障競爭者能跟它公平競爭。 這個判決有指標意義,所有人都知道 Google 長期利用 Chrome 數據改善它的搜尋引擎,讓其他廠商處於競爭劣勢。要解決這問題,最簡單方式是要求 Google 出售 Chrome,而法官在仔細評估後,給出相當審慎的判決。 我喜歡這種法律見解,具有實務與原則的平衡,法律條文不應該是照本宣科。 🗞️ 熱門新聞 Google Can Continue Paying for Firefox Search Deal, Judge Rules 以前很少注意 Chrome 的新聞,剛好最近判決出來了,看了一些。 最驚訝的是,Mozilla 有 85% 的年度收入是由 Google 給的,如果判決禁止 Google 出錢成為瀏覽器預設的搜尋引擎,將直接影響到 Mozilla

By Ken Chen