ubuntu系统下安装windows双系统及问题处理

文章目录

    • 双系统的安装
      • 准备工作
      • 两块磁盘两个系统
      • 先安装的window系统后安装ubuntu
        • win10系统下安装ubuntu的问题
          • 看不到磁盘
          • win10无损转换磁盘控制器模式
      • 先装ubuntu后装windows
      • 备份和恢复linux系统
        • 备份系统
        • 大文件的分割和合并
          • 文件切割
            • 文本模式
            • 二进制模式
          • 文件合并
          • 补充说明
        • 恢复系统
      • 需要为windows系统腾挪磁盘空间的情况
      • 安装win7系统
    • 修复启动项
      • 重建grub启动项
      • Grub一般性引导错误修复
        • 查看分区
        • 寻找ubuntu所在分区
        • 进入启动项
        • 进入ubuntu修复grub
      • 通过引导盘恢复或重新安装GRUB
    • 修改默认启动项

双系统的安装

准备工作

至少需要两个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文件, 可以使用这种方法处理。具体操作方法见上面修复启动项。

修改默认启动项

一般情况下,有人可能直接修改GRUB配置文件“/boot/grub/grub.cfg”,但使用“sudu vim /boot/grub/grub.cfg”发现提示这个是系统自动生成的文件,不建议直接编辑,而应该到“/etc/grub.d”和“/etc/default/grub”去修改。

“/etc/grub.d”是操作系统菜单目录,一般由系统生成,我们无需修改,接下来就是修改“/etc/default/grub”文件了。使用“sudo vim /etc/default/grub”命令打开该配置文件。

其中的“GRUB_DEFAULT=0”就是设置的默认启动项了。GRUB启动项是按照启动菜单依次使用数字进行索引了,起始数字为0。结合前面的系统启动菜单,我们可以看到,Windows8的启动项在第5项,因此这里我们就需要修改为4(因为第一项是从0开始的)。

修改完成,保存退出之后,还需要执行一下“sudo update-grub”来重新生成GRUB启动配置项。

到此就大功告成了,重启计算机看一下效果吧。默认启动项成果被切换到“Windows8”了。同样的方式,如果需要,还可以重新将默认启动项切换到任何需要的启动菜单项上的。

你可能感兴趣的:(linux)