怎樣安裝 Windows 7 與 Linux 共存的雙系統(在 Linux 系統下)?
在 Windows 下安裝 Linux 嘗試過,很成功。但是對於一台預裝 Linux 的電腦來說如何安裝雙系統就不甚清楚了~ 希望給點指導
前兩天WIN7運行實在緩慢,決定重裝一下WIN7系統,我的本本是WIN7+Ubuntu11.10,Ubuntu是硬碟安裝不是用wubi安裝的,所以重裝WIN7之後,Ubuntu的引導沒了,只能進WIN7,那麼就需要修復一下雙系統的引導記錄了。
網上搜索了一下方法,覺得還是用Ubuntu
LiveCD修複比較靠普,正好U盤上做了WINPE及Ubuntu11.10的系統安裝盤,於是今天就用Ubuntu
11.10的LiveCD的來修復grub2的引導。插上U盤,選擇U盤啟動Ubuntu 11.10
進入LiveCD模式,進入之後選擇進入終端,先在終端輸入如下命令:
sudo fdisk -l
(注意是小寫的L,不是數字的1,此步用於確定電腦中安裝 Ubuntu11.10的所在分區的位置,輸入以後會輸出類似如下信息,找到ID為83的那行,記住/dev/sdaX的情況,比如本人的電腦是/dev /sda7,以下就以此為例,你自己的請加以更改)Disk /dev/sda: 80.0 GB, 80026361856 bytes255 heads, 63 sectors/track, 9729 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesDisk identifier: 0x624aa2e0
Device Boot Start End Blocks Id System/dev/sda1 * 1 1388 11149078+ 7 HPFS/NTFS/dev/sda2 1389 3825 19575202+ 7 HPFS/NTFS/dev/sda3 3826 9729 47423880 f W95 Ext"d (LBA)/dev/sda5 3826 5851 16273813+ b W95 FAT32
/dev/sda6 5852 8323 19856308+ b W95 FAT32/dev/sda7 8324 9598 10241406 83 Linux/dev/sda8 9599 9729 1052226 82 Linux swap / Solaris然後再輸入sudo -i下面進入了本次恢復最為關鍵和激動人心的時刻,在終端輸入以下命令:
grub-install --root-directory=/media/tempdir /dev/sda(本步驟用於來重新安裝grub2到硬碟的主引導記錄【MBR】裡面,十分關鍵!)輸入以後如果出現「Installation finished.No Error Reported.」字元的時候,就表示操作成功了。但是現在只成功的一半,還有以下操作才能夠完全成功。這時重新啟動你的電腦,就能看到grub2的引導界面了,但是這時只能用來引導Ubuntu 11.10,還暫時無法引導Windows 7,這時選擇進入Ubuntu 11.10,再找到並啟動終端,在終端輸入如下命令:sudo update-grub2按照提示輸入密碼,如果順利的話,會出現如下類似語句,那就表示成功了。Generating grub.cfg ...
Found linux image: /boot/vmlinuz-3.0.0-13-genericFound initrd image: /boot/initrd.img-3.0.0-13-genericFound linux image: /boot/vmlinuz-3.0.0-12-genericFound initrd image: /boot/initrd.img-3.0.0-12-genericFound memtest86+ image: /boot/memtest86+.binFound Windows 7 (loader) on /dev/sda1done如果沒有出現以上類似語句的話,那就在軟體中心裏面搜索grub,可以安裝帶有Ubuntu標誌的那個grub-pc,安裝之後,再輸入sudo update-grub2
更新一下grub2就可以了轉自重裝WIN7之後使用Ubuntu LiveCD修復grub2雙系統引導
如果已經安裝了Linux,要在此基礎上安裝Win7的話,事情可能沒有想像的那麼簡單。總結一句話:Windows一次次挑戰我的極限。親自試驗可行的安裝方法見第二部分。注意,本文僅限於使用安裝版鏡像安裝Windows系統,Ghost方式請另行搜索。
第一部分:使用ms-sys引導U盤安裝首先,直接 dd if=win7.iso of=/dev/sdb 是不行的,
其次,grub2 的 loopback 功能對Win7的ISO不起作用(loopback 只支持iso9660格式的光碟鏡像),於是沒有辦法像linux啟動盤那樣配置一下grub.cfg,放個linux的ISO鏡像那麼簡單明快。最簡單的解決方案見 linux中製作win7安裝U盤 :需要gparted、ms-sys、win7安裝用ISO,4G及以上大小U盤一個
- 用gparted在U盤上建立一個ntfs分區,編輯flag,勾上boot選項。這個分區是用來存放win7iso的內容的,所以大小一定要夠大,boot選項也就是設為活動分區的意思。
- 掛載win7.iso和新建的ntfs分區,並將全部內容複製到那個ntfs分區。
- 編譯安裝ms-sysms-sys是一個寫mbr的工具,起到讓系統知道能夠引導win7安裝的作用,至關重要:http://ms-sys.sourceforge.net安裝就是make,會在代碼目錄下生成 bin/目錄, cd 到 bin/目錄下
- 運行:
ms-sys -7 /dev/sdX
寫入mbr。其中的-7參數指win7, sdX指的是U盤對應的盤符(一般為 sdb)
這樣就搞定了,注意XP的安裝盤是不可以這麼做的。
重啟,U盤啟動,安裝系統(需要事先保證有或能有空閑的主分區用於安裝Win7)即可。
但是很遺憾,使用U盤安裝過程中我遇到「安裝程序無法定位現有系統分區,也無法創建新的系統分區」 錯誤。我曾以為是分區格式問題,重新格式化也是徒勞。而且安裝程序中對分區採取的操作不會向我確認就會被執行(血的教訓!一個簡單的刪除分區操作竟然導致分區表錯位,fdisk重建分區才得以修復)。總之,這種安裝方式不可行(原因可見下文總結)。第二部分:使用Grub引導安裝
知道上述錯誤失敗的原因後,我便嘗試使用grub的bootloader引導Windows安裝程序完成系統安裝。為了保險,這次沒有使用U盤,而是將windows安裝盤鏡像解壓到了硬碟的一塊ntfs分區上(我沒有測試使用這種引導方法引導U盤安裝程序能否解決第一部分中出現的問題)。首先在硬碟或者U盤等可啟動介質上安裝Grub:sudo grub-install --root-directory=/media/cherrot/myUDisk /dev/sdb
然後,在引導目錄(此例中為 /media/cherrot/myUdisk/boot/grub/)中創建 grub.cfg
文件,內容可參考如下配置(關於Grub,GRUB - ArchWiki 是個好去處。配置中兩個Win7的菜單項效果等同,注意修改配置中的加粗的分區號和uuid):set root="(hd0,1)"
set timeout=10
#grub2 loopback does not support Win7.iso, because it"s not iso9660 format.
menuentry "WTF Win7" {
#I have put the install file in the 6th partition
set root="(hd0,6)"
#chainloader /bootmgr
chainloader +1
}
#GRUB supports booting bootmgr directly and chainload of partition boot sector is no longer required to boot Windows in a BIOS-MBR setup.
menuentry "Microsoft Windows Vista/7/8 BIOS-MBR" {
insmod part_msdos
insmod ntfs
insmod search_fs_uuid
insmod ntldr
search --fs-uuid --set=root --hint-bios=hd0,msdos6 --hint-efi=hd0,msdos6 --hint-baremetal=ahci0,msdos669B235F6749E84CE
ntldr /bootmgr
}
#Following configs show how easy it is to install Linux.
menuentry "Ubuntu 13.04 Gnome Desktop AMD64" {
loopback loop (hd0,1)/boot/iso/ubuntu-gnome-13.04-desktop-amd64.iso
linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=/boot/iso/ubuntu-gnome-13.04-desktop-amd64.iso
initrd (loop)/casper/initrd.lz
}
menuentry "Ubuntu 12.04 Alternate AMD64" {
loopback loop (hd0,1)/boot/iso/ubuntu-12.04-alternate-amd64.iso
linux (loop)/install/vmlinuz boot=install iso-scan/filename=/boot/iso/ubuntu-12.04-alternate-amd64.iso
initrd (loop)/install/initrd.gz
}
好了,重啟,使用寫入grub的引導介質啟動,引導進入Windows安裝程序,一路快車完成安裝!
總結如果已有一個Windows或Windows引導區的話,可以參考 How to install and boot Windows on a Logical Parition 總之至少要保證有一個主分區存放windows啟動文件。一個簡單的系統安裝,竟然都要經歷這樣的波折,這讓我感到非常遺憾。一個好的安裝程序絕不會隱藏太多的細節讓人覺得它在操縱一個黑盒子,甚至出現問題都不能知道原因(這一點最讓我不能忍受,因為把出錯信息貼到google後我找了三天才從一堆毫無建設意見的「解決方法」帖中找到一條鏈接 安裝Windows出現「安裝程序無法創建新的系統分區,也無法定位現有系統分區」 告訴了我為什麼安裝程序會抱怨無法定位分區:使用U盤安裝win7的時候,載入到安裝程序中的u盤變成了主引導盤)。上文鏈接中作者的吐槽我深感贊同:Looking at all this pain, I wonder how easy it is to set up GNU/Linux on any partition and the ease of configuration of the boot files and their parameters. When everything works fine both Windows and GNU/Linux are comparable but when things go wrong, they both require almost similar levels of expertise to fix. I don"t know who spread the myth that Windows is easier to configure. Probably those people who never had to configure anything beyond few radio buttons/check boxes or few text fields. Hard core users would find both equally good, equally involved in configuring and probably equally challenging. However being fully open GNU/Linux offers far more flexibility and control in configuration than Windows.
可以按正常方式安裝windows 7 ,然後使用 easyBCD 修復一下就好了。
去度娘或者是需要安裝的具體的linux版本的wiki查看,基本安裝順序和u盤安裝win7/8是差不多的
LZ也沒有說清楚,唉。比如,只有一個硬碟,我用磁碟用GPT分區,用UEFI先安裝好了LINUX,引導用refind,然後我想再安裝個GHOST版WIN7,請問ghost後怎麼樣引導WIN7。一般只要系統安裝在不同的硬碟,refind(或C開頭的那個四葉草)都可自動識別
這個沒裝過。。。但可以這樣思考下。採用光碟或者U盤啟動方式將win7安裝後再修復Linux的啟動項。從而達到雙系統啟動的目的。具體操作的話就只能百度詳細教程了。
推薦閱讀:
※為何 Linux 在現代還堅持使用依賴這種動態庫的方式來做程序?
※什麼是 Linux?
※ubuntu linux 為什麼比Windows 安全得多?
TAG:MicrosoftWindows | 操作系統 | Linux | Linux系統管理 | 計算機 | Ubuntu | Windows7 | 硬碟分區 | 雙系統 |