用 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

自訂網域很難嗎?DNS 的限制與實踐

自訂網域很難嗎?DNS 的限制與實踐

自訂網域(Custom Domain)是 SaaS 常見的服務,只是我通常都沒花錢買。某次跟朋友聊天,她想聽聽我對內容平台的觀點,嘰哩呱啦分析完一堆後,我最後建議她,最好還是買個網域: 「你想想看,妳現在投入這麼多心力在經營內容,建立自己的品牌形象。如果妳的網址永遠都掛在別人的平台底下,就像在別人家租房子,雖然方便,但終究不是自己的。」 「有了自訂網域,妳的品牌就是自己的,無論未來平台怎麼變,妳的讀者都能透過固定的網址找到妳,這對品牌來說很重要。就算未來妳想換平台,也不會流失妳辛苦建立起來的流量。」 後來我在 Ghost 官方頁面看到類似說法 If you would like to make your site memorable and easy to find with a branded custom domain, then you can

By Ken Chen
從個人貢獻者到管理者:關於領導的反思

從個人貢獻者到管理者:關於領導的反思

某個下雪天,我拖著病體,組裝一套供使用者簡報之用的破爛系統,莎朗進來發現我在操控台前勉強支撐,她便離開了,幾分鐘後,她端著一鍋湯回來,為我倒了一杯,我的精神為之一振。我問她要做的管理工作那麼多,怎麼會有空做這種事,她向我展露她的招牌微笑,說:「湯姆,這就是管理。」 -《Peopleware: Productive Projects and Teams》 有次跟一名職涯顧問聊天。我提到:「我希望透過打造產品來替別人創造價值,如果有很棒的團隊,我相信自己能辦到。」她問:「團隊是必須的嗎?」我愣住了,隨口說:「因為打造產品需要很多不同的職能……還需要可持續性的運作,對,我想團隊是必要的。」事後回想,她的問題很有趣,現代社會好像把「團隊」和「領導」當成是成功的標配,人力市場也一堆團隊主管的職缺,這是一則現代神話嗎?還是某種工業革命時代的遺產? 身為個人貢獻者的管理者 不是說團隊不重要,只是在現代,你會用不同的角度審視完成目標需要的條件。你想想,如果你是個開發者,自己架網站、

By Ken Chen
CDN 的快取失效設計:內容平台場景

CDN 的快取失效設計:內容平台場景

Phil Karlton 有句名言:「計算機科學中只有兩件難事:快取失效和命名。」 想像你在管理網站,因為傳輸速度與伺服器效能問題,網站讀取速度很差,特別是當你的使用者來自地球另外一端,常常需要等待幾秒才能看到畫面,這讓他們的使用體驗大打折扣。身為一名重視使用體驗的開發者,你肯定知道該如何解決這問題,沒錯,答案就是 CDN(內容傳遞網路)。 CDN 可以看成是服務商在全球各地建置伺服器,當你的網站內容(例如圖片、CSS、JavaScript、影片等)流經這些伺服器時,它會保留一份複本(稱為快取),等到下次有人讀取同樣的內容,CDN 會拿出複本給使用者。因為全球各地都有 CDN 節點,美國的使用者可以由美國節點提供,日本的使用者可以由日本節點提供。這樣既加速網路傳遞效率,也降低來源伺服器的效能壓力,可謂一舉兩得。 當然這是有條件的。CDN 會使用網址來判斷快取是否是相同檔案,假設你的內容以圖片為主,通常來說,當你更換圖片,新舊兩張圖片會有不同網址,被當成兩個不同的檔案,新圖使用新快取,舊快取留著也沒差;但如果你的內容是文字,新舊版文字很可能有相同網址,

By Ken Chen
收拾行李搬家去:從 Medium 到 Ghost

收拾行李搬家去:從 Medium 到 Ghost

想搬家想很久,連身邊的朋友都搬完了,我還沒動工。 原因是我懶,我討厭麻煩,每次有人問我吃什麼,我都回答麥當勞。搬家是一件麻煩事,我已經有一份很讚的工作了,全副精神都放在工作上,偶爾才會想起來,反正家什麼時候都能搬,一點也不急,有什麼好急的呢對吧。這樣一拖,就拖到現在。 繼續用 Medium 不好嗎? 跟男女朋友分手一樣,通常被問到:「對方不好嗎?」得到回答是:「也沒有不好啦,只是……(以下開放填空)。」 從優點開始講吧!Medium 的編輯器很棒,它是 WYSIWYG(所見即所得)類型的編輯器,能讓創作者快速發佈內容,也因為它讓內容發佈更容易了,它開始吸引一批優秀的創作者,這批創作者持續創作內容,又吸引來更多讀者,更多讀者激勵創作者產出內容,內容又再吸引讀者……這形成一個增強迴圈。Medium 還能支援多人協作,拜它時尚簡約的風格所賜,科技公司會使用 Medium 來打造品牌形象,例如我前公司的 Tech Blog

By Ken Chen