Win10 and Ubuntu 雙系統安裝筆記

linux ubuntu 18.04安裝心得之1

Gopher is cute
Caesar's study review on Web development
19 min readJun 2, 2018

--

在virtual box 玩了一陣子的ubuntu 18.04,想說之後還是要安裝到實體電腦,所以找了一下資料,由於電腦bios模式恰逢轉換期,網路上的教學很混亂,看了很久才搞懂一點。

2016年以後出廠的主機板大多為UEFI的開啟模式,所以要安裝雙系統的話,你的Live USB安裝程式,要選擇GPT and UEFI的形式來安裝,不要與傳統boot(Legacy)的安裝方式混淆,建議還是查清楚自己的磁碟分割是什麼形式GPT 還是 MBR,再來尋找網路上安裝ubuntu的資料。

在此做一下簡易的筆記,免得以後要安裝Ubuntu又要重新找資料,主要以UEFI方式安裝,若有錯誤資訊麻煩指證。

關於 EasyBCD,看到很多裝雙系統的資料有提到它,看觀察下來,應該只適用在Legacy BIOS System,若是想要以UEFI System安裝,看到此關鍵字EasyBCD,可以不用繼續看該網站了,或許EasyBCD以後改版可用在UEFI System,但目前2018年6月,EasyBCD還不支援UEFI System

原生系統Win10 ,以UEFI System安裝 雙系統Ubuntu的前置準備

1. 變更BIOS設定

  • 關閉Intel快速啟動功能:將Intel Rapid Start Technology設定為Disable
  • UEFI開機模式:由《System Configuration》設定《Boot Mode》為UEFI
  • 關閉Secure boot:將Secure boot設定為Disable

2. 變更Windows設定

  • 關閉Windows快速啟動:《控制台》->《電源選項》->《系統設定》。

3. 開機時選擇使用的開機裝置

  • 雖然BIOS可以設定使用開機裝置的順序,但是因為安裝作業系統到最後會需要重新開機改由硬碟開機,所以我是以開機時按【F8】進入Boot Menu,由Boot Menu選擇開機裝置的方式來做USB隨身碟開機。

以UEFI System安裝其他作業系統,是否關閉Secure boot,這件事情沒有一定,可以說是微軟邪惡的陰謀,才導致想安裝其他作業系統,必須要關閉Secure boot

不一定每個主機板都可以讓你關閉Secure boot,有的還需要設置密碼才可以關閉,有的完全不讓你關,呈現灰色

Microsoft封锁了EFI模式Windows boot manager添加其他系统的入口,这就意味着在UFEI模式下如果以Windows boot manager作为主引导,将无法启动ubuntu。
目前实现win10/ubuntu16.04双系统有两种方案:

1.依然以Windows Boot Mananger为主引导,但需要关闭UEFI和Secure Boot、开启Legacy/CSM,最后通过EasyBCD手动添加Ubuntu入口;

2.以GRUB2作为主引导。

显而易见,第二种方案更省时省力。

Tips:Ubuntu早已经购买了Microsoft的安全启动密钥,如果以GRUB2作为主引导,根本不需要关闭安全启动Secure boot

在實際安裝後,我對於上述參考所說的,不需要關閉secure boot有其他看法,雖然安裝純粹的Ubuntu不需要關閉,但若是安裝一些第三方的驅動程式,你還是要關閉secure boot才可以安裝驅動到Ubuntu中

第三方的驅動程式,可能是你的WIFI卡,各家廠牌的顯卡,普遍這些廠商沒有經過Linux的測試,只能靠第三方的驅動程式來讓它們運行

目前正在被nvidia的顯卡,搞得很痛苦,18.04 系統各種運作不正常QQ

製作Live Usb,我選擇 Ubuntu官方主推的工具Rufus,使用方式很容易,記得資料分割配置選GPT,檔案系統選FAT32格式, UEFI只認FAT32格式,所以製作USB開機碟不可選擇NTFS

若你的主機板是傳統bios開機,資料分割配置才選MBR

如果你是選擇UEFI的方式安裝,直接解壓縮Ubuntu.ISO的檔案也可以,解壓縮後可以發現有EFI資料夾

安裝雙系統,首先你是想要將兩個系統裝在同一個硬碟,還是兩個系統裝在不同硬碟,作法也不同。

兩個系統安裝在同一個硬碟,因為WIN10安裝時,原本就有切割EFI磁區,所以另外安裝ubuntu時,不需要切割EFI磁區。舉例來說,磁區切割為以下方式

/ (root) – 10 GB
SWAP – 4GB
/home – Remaining (~ 6GB)

若安裝在不同硬碟 ,基本上可以看成安裝單一系統,磁區切割為以下方式,順便 區分UEFI and Legacy BIOS System的磁區切割方式

UEFI System:
EFI – 500MB
swap – 4098MB (2*RAM)
/ – Remaining (95GB)

Legacy BIOS:
/boot – 500MB
swap – 4098MB (2*RAM)
/ – Remaining (95GB)

不過關於Legacy BIOS System的磁區切割也有看到這種說法,簡單來說以前開機的boot loader系統是 Lilo但現在都改為 Grub,所以不需要另外切割 /boot

/boot:包含了操作系統的內核和在啟動系統過程中所要用到的文檔。
在很多老舊的教程中,都會讓用户在/boot目錄上掛載一個大小為100MB左右的獨立分區,並推薦把該/boot放在硬盤的前面 — — 即1024柱面之前。

事實上,那是Lilo無法引導1024柱面後的操作系統內核的時代的遺物了,當然,也有人説,獨立掛載/boot的好處是可以讓多個Linux共享一個/boot。

其實,無論是基於上述的哪種理由,都沒有必要把/boot分區獨立出來。首先,Grub可以引導1024柱面後的Linux內核。

簡單介紹休眠跟睡眠(暫停),個人後來都選擇睡眠,因為不想要讓SSD硬碟做太多次寫入動作,尤其我記憶體16G,每次休眠寫入量都很大

1.暫停:就是 S3(STR, suspend to ram)

除了 DRAM (主機板上面 RAM 條)繼續供電刷新保持資料以外,其餘硬體全部斷電。此時電腦耗電約 4W~10W(看記憶體數量而定)電源插頭不能拔掉,如果停電什麼的,資料就無法復原了,形同不正常關機。

2.休眠:就是 S4(STD, suspend to disk)

把記憶體資料拷貝到硬碟的檔案,然後所有硬體斷電。下次開機會還原資料回去記憶體,省去開機步驟。

Windows 的 STD 休眠,是把記憶體資料拷貝到 C:\hiberfile.sys(隱藏檔)。Linux 是拷貝到 SWAP 空間,所以如果 SWAP 不夠大,無法進行休眠。

休眠需要的硬碟空間容量,等同於記憶體大小。比如裝有 8GB 記憶體,就要 8GB 的空間。裝有 16GB 記憶體,需要 16GB 空間。

可能遇到的困難,但是我沒遇到,做個紀錄,避免以後遇到

  1. 獨立顯卡問題

如果你电脑带有英伟达独显,无论你选第一项还是第二项,你都会发现它很有可能会卡在启动界面那里,也就是ubuntu的LOGO界面。这是因为显卡和系统兼容性的问题。这个问题也是搞了我好久的问题。这时别急着选,在这个界面下,按键盘e,你会看到界面上的内容变了,然后找到倒数第二行最后是三个横线“ — ”在这三个横线前输入空格后再输入“nomodeset”,按F10保存,你就会进入到U盘中的安装系统里。(如果你电脑没有独显,你可以忽略改代码这一步,有独显的话你也可以先尝试不加这个,直接进入看会不会卡,如果进去系统了那就不用)

2. 硬碟的順序不是固定

如果 32GB 的隨身碟在開機後才插上去,那麼系統上的硬碟順序就會不同,請注意不要選錯。 在安裝階段時,安裝用的 8GB 隨身碟不是系統上的最後一顆,例如 32GB 的隨身碟是 /dev/sdc,而 8GB 的隨身碟是 /dev/sdb,那麼在安裝完成之後,將 8GB 的隨身碟拔掉,使用 32GB 的隨身碟開機時,系統的硬碟編號就會改變,正常來說原本 32GB 隨身碟的 /dev/sdc 就會變成 /dev/sdb,但是 grub 的設定檔在安裝時就已經寫死了,所以就會造成重新開機之後,系統找不到 /dev/sdc,就開不了機了。

3. 在 Windows 10 进行了一个大更新后,会发现 GRUB 引导界面没有了

替换引导文件

进入管理员命令行。方法:win + x,再按 a

输入 bcdedit /set {bootmgr} path \EFI\Manjaro\grubx64.efi。提示操作成功的话,就完成了。

EFI的開機跟傳統MBR碟開機的不同

BIOS → 硬碟啟動磁區(會放個 GRUB loader)→ GRUB → 載入 Linux kernel 跟 initrd → 掛載主硬碟分割做根目錄 → init。

EFI+GPT 開機:
EFI firmware → EFI system partition(FAT32 檔案系統,裡面放一個BootX64.efi)→ bootloader(GRUB 或 systemd-boot 自己選一個)→ 載入 Linux kernel 跟 initrd → 掛載主硬碟分割做根目錄 → init。

Ref: 臉書Ubuntu 正體中文社團宋岡哲 提供

Windows10和Ubuntu时间差问题

Windows把计算机硬件时间当作本地时间(local time),所以在Windows系统中显示的时间跟BIOS中显示的时间是一样的。

Linux/Unix/Mac把计算机硬件时间当作 UTC, 所以在Linux/Unix/Mac系统启动后在该时间的基础上,加上电脑设置的时区数( 比如我们在中国,它就加上“8” ),因此,Linux/Unix/Mac系统中显示的时间总是比Windows系统中显示的时间快8个小时。

解決方法,使用timedatectl命令時間時區:

設置硬體時鐘以協調世界時間,UTC,可以使用 set-local-rtc boolean-value選項,如下所示:

首先確定你的硬體時鐘是否設置為本地時區:

# timedatectl | grep local

將你的硬體時鐘設置為協調世界時(UTC):

# timedatectl set-local-rtc 0將Linux系統時鐘同步到遠程NTP伺服器

將你的硬體時鐘設置為本地時區:
# timedatectl set-local-rtc 1

Ubuntu安裝到USB後,想做些簡易的調校

(3) 直接採用硬體時間,以免主機板的時間被隨身碟裡的作業系統減8小時,請在終端機輸入下列指令。

sudo timedatectl set-local-rtc yes

(4) 作業系統更新核心時,會重整GRUB的開機選單,位於主機硬碟裡的其他作業系統也將會被納入,然而當隨身碟插到別台電腦,這些多出的選項只是無意義的累贅,在終端機分別輸入下列指令,可以避免開機選單納入額外的作業系統。

sudo cp /etc/default/grub /etc/default/grub.bak
sudo sed -i '$a GRUB_DISABLE_OS_PROBER=true' /etc/default/grub
sudo update-grub

(5) 可以安裝空間清理軟體,方便移除不需要的舊核心等以爭取容量,請在終端機分別輸入下列指令。

sudo add-apt-repository ppa:gerardpuig/ppa
sudo apt-get update
sudo apt-get install ubuntu-cleaner

(6) 可以將系統暫存目錄掛載於記憶體,減少對隨身碟的讀寫和使用容量,請在終端機分別輸入下列指令。

sudo cp /etc/fstab /etc/fstab.bak
sudo sed -i '$a tmpfs /tmp tmpfs defaults 0 0' /etc/fstab
sudo rm -rf /tmp/*

以上為網路收集資料,沒有經過實際操作,但其實也差不多了,接下來說說自己時安裝ubuntu的遇到的問題

心好累,微星筆電,我的是PE60-6QE,可能跟ubuntu 18.04 不太契合,從安裝初期就很多問題,主要似乎是nvidia顯卡的黑鍋,安裝到一半常有卡住freeze

  1. 安裝時卡在LOGO畫面

原因主要是雙顯卡,電源設置項默認不合理,導致安裝失敗,設置 nomodeset來解決此問題。

2.

設置了 nomodeset,雖然不會卡在安裝logo,是使用途中可能各種當機,或是GUI畫面freeze,或是部分功能失效,似乎18.04才會發生,不確定舊版是否有同樣情況,每次遇到的情況不一定相同,目前想到的方法就是,不斷重開機執行安裝,直到某次運氣好,你就可以順利安裝了....,至少個人是這樣安裝成功的,但是安裝後還是一堆問題,無法使用

說幾個遇到的功能失效 情境,在試用模式下,使用gparted 分割 硬碟,結果不能格式化,但重開一次又正常了

此故障項目,重新更新問題點,應該是使用隨身碟有問,才導致問題2的靈異事件,換了隨身碟後,安裝時一切都很正常

安裝途中,出現莫名異常,重開後,一樣使用設置了 nomodeset,同樣的步驟卻不會產生錯誤,完全搞不懂問題在哪邊

後續我又去搜尋錯誤代碼,發現可能是當時想要安裝ubuntu的硬碟,沒有設置FAT32的EFI磁區,才導致錯誤

3. 分割磁碟後,出現警告訊息,從最小對齊點偏移了,可能導致極差的性能

正確做法應該在磁區的最前頭,保留1MB,來作磁區對齊,我取整段,所以造成錯誤,以前還好奇過,為什麼我其他硬碟都莫名有一個1MB的磁區,看來是為了磁區對齊

直接在安裝畫面分割磁區,是沒辦法控制,保留前頭留下1MB的空間,請到試用模式,使用gparted 分割 硬碟,然後再使用安裝模式,指定各磁區功能

正確的磁區分割
錯誤的磁區分割

對齊磁區來由,可以參考以下連結,我也不確定是否他說的正確

--

--

Gopher is cute
Caesar's study review on Web development

我的第一份後端工作結束了,短短四個月,部門全員掰掰,尋找新的機會。