cfan曾分享過如何將wubi安裝好的ubuntu系統遷移到windows xp和windows 7系統下的方法,但這一方法并不適用于windows 10,我們需要另辟蹊徑,借助grub-2.02-for-windows來實現windows 10下的遷移,這個方法的一大好處就是,只要讀者的windows 10電腦硬盤足夠大,就可以遷移任意多個ubuntu系統,并且無需讀者自己創建每個ubuntu系統的引導文件wubildr和wubildr.mbr,以及無需修改每個ubuntu系統內部的grub.cfg配置文件。
圖1 用7-zip打開的ubuntu映像文件root.disk
首先準備wubi安裝好的ubuntu系統,拷貝復制“x:/ubuntu”文件夾到windows 10電腦下的一個ntfs分區,用7-zip打開ubuntu系統映像文件root.disk(圖1),導出其中的“/boot/grub/grub.cfg”文件到一個文件夾中,然后找到grub.cfg配置文件中的ubuntu啟動菜單項(圖2)。
圖2 ubuntu內部grub.cfg配置文件中的啟動菜單項關鍵內容
下載并解壓grub-2.02-for-windows.zip,以系統管理員身份打開command窗口,進入grub-2.02-for-windows文件夾,執行命令“grub-install.exe boot-directory=c: --target=i386-pc //./physicaldrive0”(圖3)。此處三個參數分別為:
“boot-directory=c:”表示grub安裝于c盤
“--target=i386-pc”表示引導目標平臺是i386-pc(也是默認目標平臺,還有其他平臺模式,比如i386-efi、x86_64-efi等等)
“//./physicaldrive0”表示電腦硬盤1的設備號,此設備號由windows命令行中執行“wmic diskdrive list brief”獲得,硬盤1是“//./physicaldrive0”,硬盤2是“//./physicaldrive1”,其他類推。
以上安裝完成后,此電腦啟動管理開始由grub2負責。
圖3 windows 10管理員權限命令行中安裝grub-2.02-for-windiws
現在我們來grub-2.02-for-windiws配置文件grub.cfg。使用notepad++或者其他文本工具在c盤grub文件夾下創建grub.cfg文件,增加windows 10和ubuntu啟動菜單項。windows 10啟動菜單項內容簡單,設置c盤為根文件系統(hd0是硬盤1,msdos1是主分區1,主分區2是msdos2,擴展分區1是msdos5,擴展分區2是 msdos6,其他類推),裝載windows 10系統的bootmgr文件,執行boot啟動windows 10。打開前面從root.disk中導出的ubuntu系統內部grub.cfg文件,找到linux內核文件名和內存盤文件名(比如“linux 3.13.0-62-lowlatency”和“initrd.img-3.13.0-62-lowlatency”圖2紅色標示部分),參考圖2中ubuntu啟動菜單項,拷貝其中部分代碼到正的grub.cfg文件中,增加ubuntu啟動菜單項。grub.cfg文件完整內容如下表所示(表1)。
表1 grub-2.02-for-windiws配置文件grub.cfg內容(見附圖)
表1-grub.cfg文件內容截圖
重新啟動電腦,進入windows 10(圖4、圖5)。
圖4 grub-2.02-for-windiws啟動管理界面
圖5 windows 10系統
啟動ubuntu。遷移的電腦硬盤分區與原安裝電腦根本不同,引導ubuntu會出現uuid錯誤并進入initramfs系統。不過我們可以在grub引導界面鍵入“c”鍵進入grub的命令行模式,執行三次ls命令(圖6),得到分區號和uuid信息及ubuntu系統映像文件主文件夾名并記住(圖6黃色標示的部分),鍵入“esc”鍵回到grub引導界面啟動windows 10,在windows 10系統中前面創建的grub.cfg配置文件,修改分區號(表1第13行)、uuid(表1第16行)和root.disk文件全路徑名稱(表1第14和第16行),再次啟動電腦進入ubuntu(圖7)。
圖6 grub-2.02-for-windiws命令行模式執行ls命令結果
圖7 ubuntu系統
后我們說說多個ubuntu遷移到windows 10的問題。對于多個ubuntu系統遷移,只需將“x:/ubuntu”文件夾拷貝完成后(x:/ubuntu1、x:/ubuntu2……),修改grub.cfg文件,增加啟動菜單項即可(圖8)。所有啟動菜單項格式內容一樣,區別的是啟動菜單項名稱(表1第10行),分區號(表1第13行)、uuid(表1第16行)、root.disk文件全路徑名(表1第14和第16行)、內核文件名和內存盤文件名(表1第16和第17行)。
圖8 增加多個ubuntu啟動菜單項
對于中文名稱啟動菜單項,grub-2.02-for-windows是支持的,grub.cfg配置文件時在啟動菜單項名稱前面(表1中第3行與第4行之間)插入相應內容即可(表2)。
表2-支持中文菜單顯示截圖