问题一 开机卡logo
1.1 原因:
显卡问题
1.2 解决方案
开机进入启动菜单,在Ubuntu选项上按“e”,进入编辑模式。为grub的编辑菜单(此处是临时修改的,不会影响grub.cfg文件),在"quiet"之后加上acpi=off
问题2 联想拯救者r720 deepin关机卡死
2.1 原因:
是因为NVIDIA显卡的原因
当deepin升级到15.7的时候,深度显卡驱动管理器会增加一个关于NVIDIA GPU驱动的解决方案,但是该方案有时不能直接切换成功,这时需要你手动安装一下NVIDIA驱动,才能正常切换。
2.2 解决方案:
开机进入启动菜单,在Deepin的选项上按“e”,进入编辑模式。在删掉“quiet“后的东西,然后加上nouveau.modeset=0。进入系统后,输入cd /etc/grub
,然后输入vim grub.cfg
,在删掉“quiet“后的东西,然后加上nouveau.modeset=0。输入sudo update-grub
(更新grub.cfg文件),然后再看一下/etc/default/grub
文件中对应的quiet是否改对了就行
上面的方案只是一次性的(对于这个牌子的机器),所以看一下永久的吧:
- 禁用开源驱动nouveau
sudo gedit /etc/modprobe.d/blacklist
在文本最后添加:(禁用nouveau第三方驱动,之后也不需要改回来)
blacklist nouveau
options nouveau modeset=0
- 关闭X-Server
sudo service lightdm stop
这会关闭图形界面,按住Ctrl+Alt+F2进入命令行界面,输入用户名和密码就行
在命令行输入:sudo service lightdm start
,然后按住Ctrl+Alt+F2即可恢复图形界面 - 安装NVIDIA闭源驱动
sudo apt-get install nvidia-driver
2.3 关于上面的几个文件
- /boot/grub/grub.cfg
此文档包含了GRUB配置选项。这是由/etc/grub.d与/etc/default/grub所生成的
。若是你修改了这个档案,只要更新内核或是以指令更新grub选单(update-grub or update-grub2),之前的修改就会被覆盖掉。 - /etc/default/grub
此档案为使用者修改grub设定的主要档案,如果改错了,在usr/share/grub/default/
里还有一份,复制过来就行。要修改这个档案,请输入sudo gedit /etc/default/grub
- /etc/grub.d目录
此目录放置档案,会在sudo update-grub
时,合并到/boot/grub/grub.cfg
中。注意这些档案名称结构,前面都有数字。数字越小的,在合并时放在越前面。grub menu要怎么更改选项的顺序?就是更改数字的大小。此外请你在这目录下输入ls -l,看一下各档案的属性,有没有看到都有x属性(可执行)?变动x属性,可以决定这个选项要不要出现在选单内。
2.3.1 关于/etc/default/grub所使用的参数
GRUB_DEFAULT
设定预设选单选项
GRUB_DEFAULT=0
:以位置来设定预设选单选项。第一笔选单选项为0,第二笔为1,以此类推
GRUB_DEFAULT="xxxx"
:在此例中,选单中的位置不会有影响。例如:GRUB_DEFAULT=“Ubuntu, Linux 3.11.0-13-generic”。注意要完整全称。
GRUB_DEFAULT=saved
:由存储预设的作业系统开机。可以用grub-reboot和grub-set-default指令来设定预设作业系统。预设作业系统不会由来自选单中的互动式选择而被设定。
sudo grub-set-default 0
:以位置来设定预设选单选项。第一笔选单选项为 0,第二笔为 1,以此类推。
sudo grub-set-default "xxxx"
:以选单名称来设定
sudo grub-reboot 0
:以位置来设定下次重启开机选项。第一笔选单选项为 0,第二笔为 1,以此类推。
sudo grub-reboot "xxxx"
:以选单名称来重启开机
GRUB_HIDDEN_TIMEOUT
此设定用来决定GRUB选单会有多长时间不被显示。
GRUB_HIDDEN_TIMEOUT=0
:在单一作业系统电脑中,会立刻以预设作业系统开机。在只有一个作业系统状况下,这是预设的设定。加入还是要显示选单,请在这行前加上# 注销掉,并确认GRUB_TIMEOUT 设定为正整数。
GRUB_HIDDEN_TIMEOUT=X
:x为秒数,空白画面几秒后,系统将会依照预设开机,不会出现选单。当萤幕是空白时,使用者可以按下任何键以显示选单。
GRUB_TIMEOUT
选单显示多久之后自动以预设作业系统开机
GRUB_TIMEOUT=10
:10秒后以预设系统开机
GRUB_TIMEOUT=-1
:持续显示选单,直到使用者选择
GRUB_GFXMODE
设定grub选单显示的解析度。一般是注解掉
GRUB_GFXMODE=640x480
:以640x480模式显示,除非开机时选单显示就有问题,不然不要启用这个参数,据说会影响进入grub选单的时间。真的要启用,后面的数值请依照你显卡可以支援的模式填入,如1280x1024x16,800x600x24,640x480
GRUB_DISABLE_LINUX_RECOVERY
救援模式要不要显示?
你在选单中是不是都有看到救援模式(recovery mode)?假如你的电脑一向稳定,而且你不太会去动到系统,可以考虑去除 # 注解
GRUB_DISABLE_LINUX_RECOVERY=true
:‘不’ 显示救援模式
GRUB_DISABLE_OS_PROBER
对其他分割区作业系统的检查
大家应该都知道sudo update-grub可以找到在其他分割区的作业系统,制成选单。但有时我就是不想要他显示到选单内,那怎麼办?那注销掉这一行就可以不检查其他分割区有没有作业系统。
GRUB_DISABLE_OS_PROBER=true
:'不’检查其他作业系统
GRUB_BACKGROUND
背景影像所在。这个参数,需要自行加入。
GRUB_BACKGROUND=
:以/usr/share/background/xxx.jpg当作选单背景。可以.png, .jpg, 或.tga等格式
2.3.2 /etc/grub.d目录下的档案
00_header
:设定初始显示项目 前一段介绍了/etc/default/grub的设定,就是由这一部份来负责,所以你不需要更动这个档案。
10_linux
:指定目前使用中的Linux作业系统核心位置。用来建立这些linux不同核心显示在选单中的名称。若您不想要所有的旧核心版本全都显示在选单中,请移除旧核心。
30_os-prober
:此档案使用 os-prober 来搜寻其他分割区的作业系统。结果将会依据此档案中的内容而放至 grub.cfg 中。此档案被划分成四个段落,代表四种作业系统类型:Windows, Linux, OSX 和 Hurd。假如你要去修改这个档案了,那你必须熟悉scripts的撰写。
41_costom
:用来加入自订选单选项的样板。会在执行 update-grub 时,嵌入至 grub.cfg 中。
60_memtest86+
:搜寻 /boot/memtest86+.bin。memtest86+ 主要是进行记忆体测试。你会常用到吗?假如用不到,不用移除,只要拿掉x属性即可不再出现在选单当中。请输入:
sudo chmod -x /etc/grub.d/20_memtest86+
既然不怎么需要作修改,那知道这个目录有什麼用?就像最早简介中所述:更改数字,可以改变顺序,小的在前面,大的在后面;更改x属性,可以决定要不要在选单中出现。
如,你想要windows系统出现在前面,你可以把os-prober的数字改成小,他就会出现在现有的linux前面。
如,你不想要出现memtest86+,就把x属性拿掉。
问题三 开机进入grub
3.1 grub是什么?
grub—全称为“Grand unified bootloader”的缩写,是GNU项目的一个启动加载包,GRUB是源于对宇宙的大统一理论(grand unified theories)称呼的玩笑。从此GRUB就上了科学终极理论—大统一理论GUT的豪气。因为GRUB属于GNU项目,所以也以GNU GRUB合而称呼。
在Linux系统启动过程中,GRUB在MBR(主引导加载程序或主引导记录master boot record)之后启动,故又将GRUB称为次引导加载程序。主引导程序通过分区表查找活动分区,并将处于活动分区中的次引导加载程序GRUB读取至内存运行
GRUB的作用就是负责加载所选择的内核,当有多个系统内核时,可以手动选择要启动的系统,在GRUB图形界面上有多系统选项菜单。
GNU GRUB(简称“GRUB”)是一个来自GNU项目的多操作系统启动管理器,它允许用户可在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。GRUB可用于选择操作系统分区的不同内核,也可用于向这些内核传递启动参数。
在X86架构的机器中,Linux,BSD或其他Unix累的操作系统中GRUB,LILO是大家最为常用的。Windows也有类似的工具NTLOADER,比如我们在机器中安装了windows 98之后,我们在安装一个Windows XP,在机器启动的时候会有一个菜单让我们选择进入的是Windows98还是进入WindowsXP。这个也可以引导Linux,只是极为麻烦。
3.2 引导过程
由硬盘启动的时候,BIOS通常是转向第一块硬盘的第一个的扇区,即主引导记录(MBR)。装在GRUB和操作系统的过程中,包括以下几个步骤:
- 装载记录
基本引导装载程序所做的唯一的事情就是装载第二引导装载程序 - 装载GRUB
这第二引导装载程序实际上是引出更高级的功能,以允许用户装载一个特定的操作系统。GRUB把机器的控制权移交给操作系统。
不同的是,微软操作系统都是使用一种称为链式装载的引导方式来启动的,主引导记录仅仅是简单的指向操作系统所在分区的第一个扇区 - 找
当GRUB环境开始载入第二步引导装载程序时,它寻找自己的配置文件(menu.lst)。当找到配置文件后,它使用这个配置文件建立一个要载入的操作系统的菜单列表,然后显示引导菜单接口。如果配置文件没有被找到,或者如果配置文件不能读取,那么GRUB将载入命令行接口。菜单接口上按[e]键,对高亮菜单项中的命令进行编辑。按[c]键载入一个命令行接口。添加(加在当前行后面)用[o]键,加载当前行前(用[0]键),删除用[d]键。[enter]来执行这些命令并引导操作系统,[Esc]键放弃
设备名称:
- Windows
IDE硬盘用hd开始,SCSI硬盘用sd开头。软盘用fd开头.
是从0算起。(hd0,0)表示C盘,(hd0,4)表示D盘(这里指的是第一个逻辑分区,如果D盘也是主分区,应该写成hd0,1)
系统的第一个硬盘驱动器表示成(hd0),其上的第一个分区表示(hd0,0),也就是说对于硬盘,采用(hdx,y)的形式来表示,xy都是从0开始计数的,x表示硬盘号,y表示分区号。主分区只能有四个,所以第一硬盘上的四个主分区分别用(hd0,0)~(hd0,3)来表示。逻辑分区则从(hd0,4)开始算即第一逻辑分区用(hd0,4),第二逻辑分区用(hd0,5)来表示,依次类推。一般机子的硬盘都是一个主分区,其余是逻辑分区。因此C盘用(hd0,0),D盘用(hd0,4)来表示。光盘用(cd)表示,第一软驱用(fd0)表示。- Linux:
在Linux系统中,如ubuntu,(hdx,y)中的y是从1开始计数的。第一逻辑分区用(hd0,5),第二逻辑分区用(hd0,6)来表示
3.3 解决方案
EFI+GPT模式下修复GRUB2双系统引导
原文网址
参考文章
参考文章
- 用Linux启动盘进入Live系统环境,在Live的终端里,创建修复GRUB2所需的文件夹:
sudo mkdir -p /mnt/system
- 把Linux的
/
分区挂在到创建的文件夹(这个文章/sdb4):sudo mount /dev/sdb4 /mnt/system
- 把EFI分区(即ESP分区)也挂载:
sudo mount /dev/sdb1 /mnt/system/boot/efi
- 用efibootmgr创建ubuntu的启动项:(本文的主硬盘是sdb):
sudo efibootmgr -c -d /dev/sdb -p 2 -w -L ubuntu
- 重启,在BIOS中选择刚才创建的Ubuntu启动项,进入Ubuntu
- OK,已经进入本级硬盘上的Ubuntu系统了,但GRUB2修复并未完成。打开终端,重新安装GRUB2到EFI分区:
sudo grub-install /dev/sda1
- 刷新一下GRUB2配置:
sudo update-grub2
另外一种更简便的方法。用 Linux 启动盘进入 Live 系统环境,在终端中依次执行如下命令:
sudo su
mount /dev/sda4 /mnt(注意先确认自己的 / 分区是 sdaX)
mount /dev/sda1 /mnt/boot/efi
mount -t proc proc /mnt/proc
mount -t sysfs sys /mnt/sys
mount -o bind /dev /mnt/dev
mount -t devpts pts /mnt/dev/pts/
chroot /mnt
grub-install /dev/sda1
update-grub2
问题四 surface未能使用触屏解决方法
4.1 问题描述
surface是可以手触屏幕的,但是安装完deepin之后不能手触屏幕
4.2 解决方法
- (准备)安装依赖项:
sudo apt install git curl wget sed
- 克隆linux-surface repo:
git clone --depth 1 https://github.com/jakeday/linux-surface.git ~/linux-surface
- 将目录更改为linux-surface repo:
cd ~/linux-surface
- 运行安装脚本:
sudo sh setup.sh
- 重新启动已安装的内核:
sudo dpkg -i linux-headers-[VERSION].deb linux-image-[VERSION].deb linux-libc-dev-[VERSION].deb
参考资料:https://github.com/jakeday/linux-surface
感觉我在动手实践这里很差,感觉对计算机的内部等一些东西还是不了解,装机是一个增长知识的过程,遇到各种问题的时候一定要善用搜索引擎(虽然我还是不太会用,每次都找不到一些重要的东西,zxx说我修饰的太多了)。学长说过,没有装过50个以上的都不叫装机,这个博客会继续更新,希望可以增长见识,提高实践能力!