1. 程式人生 > >ubuntu系統下安裝windows雙系統及問題處理

ubuntu系統下安裝windows雙系統及問題處理

雙系統的安裝

準備工作

至少需要兩個U盤,一個製作成ubuntu啟動盤,一個製作成windows 7啟動盤,製作方法可用rufus,網址http://rufus.akeo.ie/,還可用UltraISO,推薦前者。都是把作業系統的映象寫入U盤,事先要把U盤中重要的資料備份出來,U盤在製作過程中會被格式化。,windows系統如果是恢復ghost映象,可以製作winpe啟動盤。

兩塊磁碟兩個系統

現在安裝雙磁碟的比較多,如果是兩個系統分別裝在兩個不同磁碟上,一種最簡單辦法是分別把兩個磁碟都做成帶活動分割槽的磁碟,分別裝兩個系統,引導時通過修改啟動順序來引導這兩個系統,適用於不常切換系統的人使用,安裝非常簡單,用起來有些小麻煩。當然也可以製作成雙啟動,和下面一塊磁碟多分割槽情況類似。

先安裝的window系統後安裝ubuntu

這個非常簡單,用windows優盤先安裝windows系統,成功後,再用ubuntu優盤安裝ubuntu系統,按部就班操作即可。前提是在一塊磁碟的情況下需要給兩個系統都準備大小合適的分割槽空間。

win10系統下安裝ubuntu的問題

看不到磁碟

安裝ubuntu過程中看不到磁碟,無法安裝,進入bios後沒有硬碟控制器,譬如ideapad701s ,這種情況需要對這個操蛋的bios進行升級,即重新刷bios,到官方網站查詢,必須下載正確的版本,和機器必須配,刷bios有風險,要慎重!!!!,刷過bios後再進入bios就可以看到磁碟控制方面的設定,這種型號改原來的raid模式為AHCI模式。ok。

win10無損轉換磁碟控制器模式

問題又來了,win10無法正常啟動了,訪問不了硬碟了,別慌,重新進入bios,修改回raid模式,重啟系統,又可以進入win10了,但仍然無法安裝ubuntu,解決辦法是,設定進入進入最小安全模式,在這種模式下進入bios修改磁碟控制器,重啟後讓系統在最小安全模式下修復,(安全模式是不行的),然後再改回正常模式。操作如下;

  1. 以管理員身份開啟命令視窗
  2. 執行以下命令
bcdedit /set {current} safeboot minimal
  1. 不成功,或者下面命令,一般會成功的。
bcdedit /set safeboot minimal
  1. 重啟進入bios 設定磁碟控制器為AHCI模式
  2. 重啟電腦進入安全模式,可以正常進入win10了
  3. 以管理員身份開啟命令視窗,執行以下命令
bcdedit /deletevalue {current} safeboot
  1. 重啟電腦,ok。可以安裝ubuntu了。

先裝ubuntu後裝windows

windows系統安裝ubuntu很容易,但在ubuntu下如何安裝windows構成雙系統呢?下面重點談談這種情況。
系統環境:ubuntu16.04LTS,安裝windows 7-64位。
為了保險起見,還是要對重要的資料進行以下備份。linux的系統備份很簡單,如下所示:

備份和恢復linux系統

(資料不重要可以省去這一步)

備份系統

我該如何備份我的Ubuntu系統呢?很簡單,就像你備份或壓縮其它東西一樣,使用TAR。和Windows不同,Linux不會限制root訪問任何東西,你可以把分割槽上的所有東西都扔到一個TAR檔案裡去!

  • 首先成為root使用者:
$ sudo su
  • 然後進入檔案系統的根目錄(當然,如果你不想備份整個檔案系統,你也可以進入你想要備份的目錄,包括遠端目錄或者行動硬碟上的目錄):
# cd /
  • 下面是我用來備份系統的完整命令:
# tar cvpzf backup.tgz --exclude=/proc --exclude=/lost+found --exclude=/backup.tgz --exclude=/mnt --exclude=/sys --exclude=/media /

讓我們來簡單看一下這個命令:

  • “tar”當然就是我們備份系統所使用的程式了。
  • “cvpfz”是tar的選項,意思是“建立檔案檔案”、“保持許可權”(保留所有東西原來的許可權)、“使用gzip來減小檔案尺寸”。
  • “backup.gz”是我們將要得到的檔案檔案的檔名。
  • “/”是我們要備份的目錄,在這裡是整個檔案系統。
  • 在檔案檔名“backup.gz”和要備份的目錄名“/”之間給出了備份時必須排除在外的目錄。有些目錄是無用的,例如“/proc”、“/lost+found”、“/sys”。當然,“backup.gz”這個檔案檔案本身必須排除在外,否則你可能會得到一些超出常理的結果。如果不把“/mnt”排除在外,那麼掛載在“/mnt”上的其它分割槽也會被備份。另外需要確認一下“/media”上沒有掛載任何東西(例如光碟、行動硬碟),如果有掛載東西,必須把“/media”也排除在外。有人可能會建議你把“/dev”目錄排除在外,但是我認為這樣做很不妥,具體原因這裡就不討論了。
  • 執行備份命令之前請再確認一下你所鍵入的命令是不是你想要的。執行備份命令可能需要一段不短的時間。改排除的一定要排除,比如可以拷貝的映象檔案等大檔案。
  • 備份完成後,在檔案系統的根目錄將生成一個名為“backup.tgz”的檔案,它的尺寸有可能非常大。現在你可以把它燒錄到DVD上或者放到你認為安全的地方去。
  • 在備份命令結束時你可能會看到這樣一個提示:’tar: Error exit delayed from previous
    errors’,多數情況下你可以忽略它。
  • 你還可以用Bzip2來壓縮檔案,Bzip2比gzip的壓縮率高,但是速度慢一些。如果壓縮率對你來說很重要,那麼你應該使用Bzip2,用“j”代替命令中的“z”,並且給檔案檔案一個正確的副檔名“bz2”。完整的命令如下:
# tar cvpjf backup.tar.bz2 --exclude=/proc --exclude=/lost+found --exclude=/backup.tar.bz2 –exclude=/mnt –exclude=/sys /

大檔案的分割和合並

檔案切割

檔案切割模式分為兩種:文字檔案和二進位制模式。

文字模式

文字模式只適用於文字檔案,用這種模式切割後的每個檔案都是可讀的。文字模式又分為兩種:按最大檔案大小切割和按文字行數切割。

  • 按檔案大小切割
split -C 50k log.log splog

將文字檔案log.log按每塊最大50k的大小進行切割,不打碎行。輸出檔名類似splogaa, splogab……

  • 按文字行數切割
 split -l 100 log.log splog

每個分塊100行,不考慮大小。日誌分析時應該有用。

二進位制模式
            split -b 50k log.log splog

每個分塊(當然,最後一個不保證)大小都是50k,基本不可讀。任何型別檔案都可以用這種切割模式。

檔案合併

不管用什麼方式切割,合併方法不變。

    cat splog* >newLog.log
補充說明
split 引數:
    -a:指定輸出檔名的字尾長度,預設為2個(aa,ab...)
    -d:指定輸出檔名的字尾用數字代替
    -b:指定輸出檔案的最大位元組數,如1k,1m...
    -C:指定每一個輸出檔案中單行的最大位元組數
    -l:指定每一個輸出檔案的最大行數

恢復系統

在進行恢復系統的操作時一定要小心!如果你不清楚自己在做什麼,那麼你有可能把重要的資料弄丟,請務必小心!

接著上面的例子。切換到root使用者,並把檔案“backup.tgz”拷貝到分割槽的根目錄下。

在 Linux中有一件很美妙的事情,就是你可以在一個執行的系統中恢復系統,而不需要用boot-cd來專門引導。當然,如果你的系統已經掛掉不能啟動了, 你可以用Live CD來啟動,效果是一樣的。你還可以用一個命令把Linux系統中的所有檔案幹掉,當然在這裡我不打算給出這個命令!

使用下面的命令來恢復系統:

# tar xvpfz backup.tgz -C /

如果你的檔案檔案是使用Bzip2壓縮的,應該用:

# tar xvpfj backup.tar.bz2 -C /

注意:上面的命令會用檔案檔案中的檔案覆蓋分割槽上的所有檔案。
執行恢復命令之前請再確認一下你所鍵入的命令是不是你想要的,執行恢復命令可能需要一段不短的時間。
恢復命令結束時,你的工作還沒完成,別忘了重新建立那些在備份時被排除在外的目錄:

# mkdir proc
# mkdir lost+found
# mkdir mnt
# mkdir sys

等等,當你重啟電腦,你會發現一切東西恢復到你建立備份時的樣子了!
重要的一點是,如果恢復的電腦不是原來的電腦,需要在待恢復的電腦上有和備份的系統版本一至的系統,最好重新裝個,然後把/boot/,initrd.img,vmlinuz 備份到其他位置,待恢復完後,再把這幾個恢復到原來位置,以防止uuid不一致造成不能正確引導。

需要為windows系統騰挪磁碟空間的情況

ubuntu和windows應該安裝在硬碟的兩個不同分割槽,如果你有空閒的分割槽,可略過下面一大段。如果當初將ubuntu安裝在一整塊硬碟上,安裝windows時需要在硬碟上為它騰出一塊地方。可以使用pe帶的磁碟分割槽工具來調整磁碟分割槽大小,或者使用ubuntu系統的分割槽工具來調整,如下所示:

  • 首先插上ubuntu啟動盤,開機進入BOOT MENU(不同電腦介面不同),選擇USB項。
  • 有試用ubuntu和安裝ubuntu兩個選項出現,選擇安裝ubuntu。
  • 在下一頁,選擇最下面 其它選項,然後繼續。
  • 在下一頁出現的分割槽列表中選擇需要調整出空間的分割槽。
  • 點選左下角change,會彈出編輯分割槽這個對話方塊,大小是你想為原系統即ubuntu保留的大小,比如我一共有150GB,想為windows7分出50GB的大小,在這裡改變到100GB左右即可,點選確定。
  • 完成後後退到最初的介面,選擇試用ubuntu。
  • ctrl+alt+t開啟終端,執行
sudo gparted
  • 會開啟 gparted這個工具,右鍵選擇灰色的未分配區域,新建並格式化為ntfs格式的檔案系統(操作完成後記得點選介面上方應用),然後關機。

    安裝win7系統

關機後插上windows7的啟動盤,與開啟ubuntu啟動盤類似,在新分配的分割槽安裝windows7系統。

安裝完成後,會自動進入windows系統,但是可能無法正常進入grub啟動選單;如果是ghost恢復的系統是不會自動進入windows系統的,後面再說這種情況;即不能多引導,需要修復啟動項。

修復啟動項

重建grub啟動項

關機後插上ubuntu啟動盤,並進入ubuntu桌面,終端輸入

sudo fdisk -l (小寫的L)  

輸出內容:

Disk /dev/sda: 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: dos
Disk identifier: 0x04bcd6c6

裝置       啟動     Start    末尾    扇區   Size Id 型別
/dev/sda1  *         2048 234041343 234039296 111.6G 83 Linux
/dev/sda2       234043390 250068991  16025602   7.7G  5 擴充套件
/dev/sda5       234043392 250068991  16025600   7.7G 82 Linux 交換 / Solaris


Disk /dev/sdb: 465.8 GiB, 500107862016 bytes, 976773168 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: dos
Disk identifier: 0x853aba59

裝置       啟動     Start    末尾    扇區   Size Id 型別
/dev/sdb1  *         2048 167776255 167774208    80G  7 HPFS/NTFS/exFAT
/dev/sdb2       167776256 976773119 808996864 385.8G  f W95 擴充套件 (LBA)
/dev/sdb5       167778304 976773119 808994816 385.8G  7 HPFS/NTFS/exFAT

我這是兩塊磁碟情況,可以看出都做成了啟動盤。
其中,sda是第一塊磁碟,sdaX是我的ubuntu分割槽;sdb是第二塊磁碟,sdaX是win7分割槽,每個人可能情況不同,請自行辨認。/dev/sdb1劃分了80G安裝win7。
接著,終端輸入

sudo -i (得到root許可權,無需再輸入密碼,便於下面操作)  
mkdir /media/tempdir (用來掛載sda1的,就是建立一個tempdir,名字什麼的自己定)  
mount /dev/sda1 /media/tempdir (將sda1掛載在tempdir下)  
grub-install --root-directory=/media/tempdir /dev/sda (重新安裝grub2到硬碟的主引導記錄(mbr))  

操作成功出現:Installation finished.No Error Reported.

重啟後就可以進入原來的ubuntu系統,但是windows暫時無法引導,下面就是更新grub2讓它可以引導windows7。進入到系統後開啟終端,輸入

sudo update-grub2  

update-grub或者update-grub2,根據grub版本選擇,這個重新生成了grub.cfg.

Generating grub configuration file ...  
Warning: Setting GRUB_TIMEOUT to a non-zero value when GRUB_HIDDEN_TIMEOUT is set is no longer supported.  
Found linux image: /boot/vmlinuz-3.13.0-37-generic  
Found initrd image: /boot/initrd.img-3.13.0-37-generic  
Found memtest86+ image: /boot/memtest86+.elf  
Found memtest86+ image: /boot/memtest86+.bin  
Found Windows 7 (loader) on /dev/sda2  
done  

重啟電腦,即可發現win7引導選單,可正常引導系統。

Grub一般性引導錯誤修復

GRUB是大多數Linux系統預設使用的載入程式, 可以通過啟動選單的方式選擇進入不同的作業系統(如果有的話).

當 “/boot/grub/grub.conf” 配置檔案丟失, 或者關鍵配置出現錯誤, 或者MBR記錄中的載入程式遭到破壞時, Linux主機啟動後可能只會出現“grub>”的提示符,無法完成進一步的系統啟動過程.

error : unknow filesystem
grub rescue>

這表示你的grub2的配置檔案損壞, Grub找不到Ubuntu系統的引導項. 從而進入修復模式了(grub rescue), 也稱救援模式。在救援模式下只有很少的命令可以用: set, ls, insmod, root, prefix

命令  描述
set 檢視環境變數,這裡可以檢視啟動路徑和分割槽
ls  檢視裝置
insmod  載入模組
root    指定用於啟動系統的分割槽,在救援模式下設定grub啟動分割槽
prefix  設定grub啟動路徑

具體修復步驟如下:

檢視分割槽

grub rescue> ls

列出磁碟分割槽

(hd0) (hd0,msdos9) (hd0,msdos8) (hd0,msdos7) (hd0,msdos6) (hd0,msdos5) (hd0,msdos2) (hd0,msdos1

尋找ubuntu所在分割槽

就是尋找你的Linux系統是裝在以上哪個分割槽裡

grub rescue> ls (hd0,msdos1)/
  • 若出現unknown filesystem字樣,則嘗試下一個。
  • 若出現的是你的ubuntu主資料夾下的資料夾和檔案的名字,那就是的要找的分割槽了。
  • 你可以用ls (hd0,msdosX)/boot/grub 繼續檢視裡面的具體內容。
  • 接下來用Set命令 設定root 和prefix
    假如你找到的啟動分割槽是 (hd0,msdos8)

進入啟動項

grub rescue>set                 //檢視當前設定
grub rescue>root=(hd0,msdos5)
grub rescue>prefix=/boot/grub                 //grub路徑設定
grub rescue>set root=(hd0,msdos8)               //修改設定
grub rescue>set prefix=(hd0,msdos8)/boot/grub
grub rescue>insmod normal                     //啟動normal啟動
grub rescue>normal

之後你就會看到熟悉的啟動選單欄了。
進入系統啟動選項介面後還是進不去, 因為你還沒有真正的修改grub, 這個要到ubuntu裡修改進入系統啟動項介面後,按C進入命令列模式

grub >set root=hd0,msdos8
grub >set prefix=(hd0,msdos8)/boot/grub
grub >linux /vmlinuz-xxx-xxx root=/dev/sda8 //裡邊的xxxx可以按Tab鍵,如果有acpi問題,在最後加一句acpi=off
grub >initrd /initrd.img-xxx-xxx
grub >boot

如果grub配置沒有大的損壞,就可以正常進入系統了。如果以上方法不能啟動系統,需要重建一下grub請看下面。

進入ubuntu修復grub

其實前面的操作, 已經恢復了引導項了, 我們進入Ubuntu後, 可以更新下GRUB引導項, 在終端裡執行

sudo update-grub
sudo grub-install /dev/sda

/dev/sda是啟用的引導磁碟,對照實際情況。

通過引導盤恢復或重新安裝GRUB

前一種方法的前提是Grub引導依舊可以使用, 只是丟失了Ubuntu的引導項, 而如果我們的Grub都已經損毀或者丟失, 則需要使用光碟或U盤進入一個可以使用或者修復的Linux系統來完成GRUB的重新安裝。
把系統光碟放入光碟機或U盤, 重啟 Linux 系統. 系統啟動時按”F2”鍵, 在”boot:” 提示符下輸入 “linuxrescue” 後”回車”, 進入”急救模式”引導光碟中的Linux系統。
之後依次按回車鍵接收預設的語言、鍵盤格式,提示是否配置網絡卡是一般選擇“NO”,然後系統會自動查詢硬碟中的Linux分割槽並嘗試將其掛載到”/mnt/sysimage”目錄(選擇”Continue”確認並繼續).
接下來需要特別注意 : 當出現是否初始化磁碟的警告視窗時,一定要選擇”NO”, 以免對硬碟資料造成進一步損壞. 最後選擇”OK”確認後將進入到帶”sh-x.x#”提示符的Bash Shell環境。
如果對這種方式不是很放心,也可以在啟動時選擇“試用ubuntu”,即從U盤或光碟機載入系統,不從硬碟啟動。
如果MBR扇區載入程式沒有被損壞, 確認待修復的Linux系統分割槽的掛載情況, 並重修 grub.conf檔案,不會修改,看下面。

如果MBR扇區載入程式被損壞,即使重建grub.conf配置檔案後仍然無法啟動系統。這時可以在急救模式的shell環境中使用grub-install重新安裝grub,第一種情況下如果不會修改grub.conf檔案, 可以使用這種方法處理。具體操作方法見上面修復啟動項。