關於裝機遇到的問題

問題一 開機卡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雙系統引導
原文網址:http://www.mintos.org/skill/rescue-efi-grub.html

  1. 用Linux啓動盤進入Live系統環境,在Live的終端裏,創建修復GRUB2所需的文件夾:sudo mkdir -p /mnt/system
  2. 把Linux的/分區掛在到創建的文件夾(這個文章/sdb4):sudo mount /dev/sdb4 /mnt/system
  3. 把EFI分區(即ESP分區)也掛載:sudo mount /dev/sdb1 /mnt/system/boot/efi
  4. 用efibootmgr創建ubuntu的啓動項:(本文的主硬盤是sdb):sudo efibootmgr -c -d /dev/sdb -p 2 -w -L ubuntu
  5. 重啓,在BIOS中選擇剛纔創建的Ubuntu啓動項,進入Ubuntu
  6. OK,已經進入本級硬盤上的Ubuntu系統了,但GRUB2修復並未完成。打開終端,重新安裝GRUB2到EFI分區:sudo grub-install /dev/sda1
  7. 刷新一下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個以上的都不叫裝機,這個博客會繼續更新,希望可以增長見識,提高實踐能力!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章