安裝Gentoo
本文主要參考的是官方Wiki,還有一些網友的經驗,在後面的具體安裝步驟裡會分享對應網友的一些解決辦法和相關文章
官方Wiki:https://wiki.gentoo.org/wiki/Handbook:AMD64/Installation/About/zh-cn
1、在官網下載對應的安裝包(Minimal Installation CD和最新的stage3,本文使用的是OpenRC的),然後使用軟碟通製作啟動U盤,把Minimal Installation CD寫入U盤,之後把stage3包複製到U盤的根目錄(本文不使用在安裝過程中從網上下載的方式)
2、重啟電腦,進入安裝過程,選擇Gentoo核心
3、選擇鍵盤佈局,這一步一般不用選擇,預設是US鍵盤
4、建立賬號,這一步官網上說可選的,因為目前還是在LiveCD中,即使建立了使用者,也不會出現在新安裝的系統中,所以就不用建立賬號了。
5、配置網路(這一步在官網中寫的比較簡單,而且使用wpa_supplicant的,但是這個客戶端實際使用中更換網路比較麻煩,所以我們們不安裝wpa_supplicant而是NetworkManager)
a、連線網路
這一步裡我是使用USB網路共享的,而且整個安裝過程中使用的都是USB共享網路,官網裡是直 安裝wpa_supplicant然後連線Wifi,因為我們們要安裝NetworkManager,這裡就不採用官網的這種 方式了,因為後面還要多餘配置一些東西,如果流量不夠用的話,可以使用官網的方式,先安wpa_supplicant,系統安裝完成之後在解除安裝,重新安裝NetworkManager,具體可以參考這篇文章,我的這一部分就是結合官方Wiki和這篇文章做的。
b、測試網路 ping www.baidu.com
如果沒有ping通的話,改下DNS
nano /etc/resolv.conf
新增 nameserver 114.114.114.114
這裡到這就行了,NetworkManager的安裝配置在後文中介紹。
6、磁碟分割槽
磁碟分割槽這裡比較簡單,不過要強調一點,對於小白的我來說,之前就卡在了這,不知道雙系統的/boot掛載點怎麼設定。在看了不少的文章後((lll¬ω¬)),才發現這裡只需要將原系統的EFI分割槽掛到/boot裡就行了。而且還需要確定自己系統的分割槽型別是MBR的還是GPT的,官方Wiki建議使用GPT型別的,如果需要MBR轉GPT或者GPT轉MBR,則需要提前在安裝系統前進行設定(使用DiskGenius進行格式轉換),
下面做具體設定(使用parted程式):
a、parted -a optimal /dev/sda
b、mklabel gpt
設定gpt標籤,這裡要慎重,官方Wiki上說如果在分割槽程式裡改變分割槽格式,程式會移除磁碟上所有分割槽,而且資料也會丟失,實際安裝中,我的磁碟分割槽型別是GPT的,就沒改。MBR分割槽用mklabel msdos
(parted命令可以看到自己的分割槽型別)
c、unit mib
設定磁碟容量顯示單位,GB用unit Gib
d、分割槽
磁碟 | 檔案系統 | 掛載點 | 大小 |
---|---|---|---|
/dev/sda1 | fat32 | /boot | sda1是已經存在的分割槽 |
/dev/sda10 | ext4 | / | 125G |
/dev/sda11 | ext4 | /home | 200G |
/dev/sda12 | ext4 | swap | 8G |
mkpart root [start] [end]
建立名字叫root的分割槽,區間為[start,end],例如xxx xxx+12800
mkpart home [start] [end]
建立名字叫home的分割槽,區間為[start,end]
mkpart swap [start] -1
建立名字叫home的分割槽,區間為start到磁碟尾部,-1表示磁碟尾部減去1MB,這裡是分割槽能夠到達的最遠處
這裡不需要設定boot分割槽了,我們們直接利用已經存在的windows系統的ESP分割槽,如果是單系統的話,這裡需要boot分割槽,注意boot分割槽需要格式化為fat32(mkfs.vfat)
e、print
或者p
檢視分割槽資訊
f、格式化、啟用swap
mkfs.ext4 /dev/sda10
swap分割槽不需要格式化
初始化swap:mkswap /dev/sda12
啟用swap:swapon /dev/sda12
g、mount /dev/sda10 /mnt/gentoo
掛在root分割槽,下面進入root分割槽安裝系統
7、安裝stage3包
a、設定系統日期時間:date [MMDDhhmmYY].[ss]
如2021年4月21日16:50:30 :date 042116502021.30
b、把U盤內的stage3包複製到系統內
cp /mnt/cdrom/stage* /mnt/gentoo/
c、解壓縮:tar xpvf stage3-*.tar.bz2 --xattrs-include='*.*' --numeric-owner
(引數解釋見Wiki)
d、配置編譯選項:
nano /mnt/gentoo/etc/portage/make.conf
設定COMMON_FLAGS="-march=native -O2 -pipe"
新增MAKEOPTS="-j2"
這裡的j2表示電腦的核心數+1,比如8核用“-j9”
e、映象源、倉庫、DNS設定、掛載目錄
映象源:
mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf
映象源建議選擇163的
倉庫:
建立倉庫:mkdir --parents /mnt/gentoo/etc/portage/repos.conf
複製倉庫配置檔案:cp /mnt/gentoo/usr/share/portage/config/repos.conf /mnt/gentoo/etc/portage/repos.conf/gentoo.conf
DNS:複製LiveCD裡的DNS資訊:cp --dereference /etc/resolv.conf /mnt/gentoo/etc/
這裡建議複製完成後看一下,自己給設定成114.114.114.114的
掛載目錄:
mount --types proc /proc /mnt/gentoo/proc
mount --rbind /sys /mnt/gentoo/sys
mount --make-rslave /mnt/gentoo/sys
mount --rbind /dev /mnt/gentoo/dev
mount --make-rslave /mnt/gentoo/dev
--make-rslave
操作是稍後安裝systemd支援時所需要的,我安裝的是OpenRC所以帶--make-rslave
的命令就不用敲了
f、進入新環境
chroot /mnt/gentoo /bin/bash
source /etc/profile
export PS1="(chroot) ${PS1}"
g、掛載分割槽
mount /dev/sda1 /boot
這裡直接把sda1(ESP分割槽)掛到Gentoo的/boot分割槽就行了,後面再安裝grub就能實現雙系統的引導了
7、設定使用者
passwd
設定root密碼
新建使用者:
useradd -m -G users hlfl
passwd hlfl
安裝sudo(具體的軟體名查詢用 emerge --search sudo,emerge--ask xxx/xxx安裝)
nano /etc/sudoers
在root行(root ALL=(ALL) ALL)新增hlfl ALL=(ALL) ALL
8、配置portage
a、更新系統軟體包
emerge --sync
(這個命令需要時間比較長,可以用emerge-webrsync
代替,只更新快照(雖然我也不知道什麼是快照(lll¬ω¬)))
b、選擇配置檔案
eselect profile list
檢視有哪些配置檔案
eselect profile set 2
選擇第2個profile(因為後面要安裝Gnome,而且不用systemd,所以選擇對應的profile...沒有圖這裡就不列了...大概是/default/linux/amd64/17.1/desktop/gnome),注意不要選擇帶no-multilib,因為這個表示只能用64位的程式。
d、更新world
emerge --ask --verbose --update --deep --newuse @world
這個耗時比較久
這裡更新時可能會提示USE有問題,這時候需要編輯USE標籤(/etc/portage/make.conf),一般提示迴圈以來問題,這時候要根據提示,把某一個標籤在USE裡去掉USE=“-x1 -x2”
e、時區設定:echo "Asia/Shanghai" > /etc/timezone
更新時區:emerge --config sys-libs/timezone-data
f、配置locale
a、設定語言區域:nano /etc/locale.gen
新增:
en_US.UTF-8 UTF-8
zh_CN.UTF-8 UTF-8
zh_CN.GBK GBK
zh_CN.GB2312 GB2312
zh_CN.GB18030 GB18030
b、生成locale.gen中指定的區域
locale-gen
使用locale可以檢視生成了哪些地區
c、選擇地區
eselect locale list
eselect locale set xx
這裡選擇英文的locale,避免中文在終端顯示亂碼
d、通過編輯/etc/env.d/02locale(有的文章說要在100i18n裡設定,經測試編輯這個檔案沒有效果,而且官網也是編輯02locale,這裡用官網的方法)進行詳細設定,這裡設定的是電腦的各種顯示格式
LANG=en_US.UTF-8
LC_CTYPE=zh_CN.UTF-8
這裡好像不能設定成zh_CN.GBK,我之間這樣設定總會導致gnome-shell打不開,想要使用中文輸入法,這裡必須設定成中文
這裡的優先順序:LC_ALL>LC_*>LANG
LC_ALL
:強制設定所有的LC_*
LANG
:是那些未設定的LC_*的預設選項
e、更新環境變數讓設定起效
sudo env-update && source /etc/profile
9、安裝Gnome
1、設定USE
nano /etc/portage/make.conf
新增 USE=“-qt5 -kde X gtk gnome”
2、 emerge --ask gnome-base/gnome
env-update && source /etc/profile
更新環境變數
gpasswd -a <YourUserName> plugdev
3、配置X和GDM(退出管理員,登入自己的賬戶,否則普通使用者無法使用)
echo "exec gnome-session" > ~/.xinitrc
設定使X開機啟動
emerge --ask gnome-extra/gnome-shell-extensions
安裝外掛
10、重新載入環境:env-update && source /etc/profile && export PS1="(chroot) ${PS1}"
11、安裝核心:emerge --ask sys-kernel/gentoo-sources
12、自動配置核心和設定fstab
emerge --ask sys-kernel/genkernel
fstab是系統啟動時掛載相關磁碟的命令配置檔案
nano /etc/fstab
(這裡使用UUID的方式編輯fstab,UUID使用blkid檢視注意UUID區分大小寫)注意這裡的引數一定要寫正確,不然可能某個磁碟無法掛載,我之前就是home分割槽沒掛載上,導致root分割槽空間使用非常快,剛開始還以為是日誌哪裡有問題。。。實際上如果有的磁碟沒有掛載上的話,開機時會有紅色提示的。我當時的解決辦法就把home目錄下的檔案全部複製到那個將要作為home分割槽的磁碟,注意許可權之類的一定要正確,然後刪除當前home,更正fstab,重啟就能搞定。
掛載磁碟 | 掛載點 | 磁碟檔案系統 | 掛載引數 | 磁碟檢查引數 |
---|---|---|---|---|
UUID=xxx | /boot | vfat | defaults,noatime | 0 2 |
UUID=xxx | / | ext4 | noatime | 0 1 |
UUID=xxx | /home | ext4 | defaults,noatime | 0 2 |
UUID=xxx | none | swap | sw | 0 0 |
genkernel all
自動編譯核心原始碼(這裡會自動建立initramfs)
13、安裝韌體
emerge --ask sys-kernel/linux-firmware
14、設定主機名:nano /etc/conf.d/hostname
hostname="Gentoo"
15、安裝NetworkManager
a、安裝net-misc/netifrc,這個無論是安裝wpa_supplicant還是NetworkManager都必須要安裝的
emerge --ask --noreplace net-misc/netifrc
b、配置網路
nano /etc/conf.d/net
config_eth0="dhcp"
獲取動態IP,config_eth0
可以是config_eth1
,這個依賴於你電腦上的網路介面,用ifconfig
可以檢視
c、新增networkmanage的USE標籤(/etc/portage/make.conf,USE=“(這裡之前存在的USE不要改)networkmanage”)
emerge --ask --changed-use --deep @world
d、安裝networkmanager
emerge --ask net-misc/networkmanager
emerge --ask net-vpn/networkmanager-pptp
這個外掛包括nm-applet
e、把使用者新增到networkmanager組
gpasswd -a lin plugdev
f、設定networkmanager開機啟動
rc-update add NetworkManager default
16、設定系統時間,防止雙系統更換系統時另一個系統時間出問題
hwclock --systohc
將系統時間同步到硬體時間,這裡要確保系統時間是正確的
hwclock --show
檢視硬體時間是否設定成功
17、系統工具安裝
emerge --ask app-admin/sysklogd
安裝日誌工具
rc-update add sysklogd default
日誌工具開機啟動
emerge --ask sys-apps/mlocate
安裝檔案索引工具(使用前要更新資料庫,命令忘了。。)
為了能訪問win的分割槽,需要安裝幾個工具
emerge --ask sys-fs/ntfs-3g
可以識別NTFS檔案系統
這裡注意在系統中如果開啟NTFS分割槽提示錯誤,執行這個命令sudo ntfsfix /dev/sdax
emerge --ask sys-fs/dosfstools
可以識別fat32檔案系統
18、安裝grub引導
echo 'GRUB_PLATFORMS="efi-64"' >> /etc/portage/make.conf
emerge --ask --verbose sys-boot/grub:2
對於UEFI:
grub-install --target=x86_64-efi --efi-directory=/boot
生成grub配置:
grub-mkconfig -o /boot/grub/grub.cfg
這裡的配置只能引導linux,想要引導windows新增下面這些
menuentry "Windows 10(loader)"{
insmod part_gpt
insmod fat
set root='hd0,gpt1' #這裡hd0指第一個硬碟(ESP分割槽存在的硬碟),gpt1指gpt型別分割槽的硬碟的第一個分割槽,我的系統裡這個是系統ESP分割槽,
search --no-floppy --set=root --fs-uuid 7ABF-C90C #這裡時ESP分割槽的UUID,一定注意大小寫
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
安裝成功!!
cd
umount -l /mnt/gentoo/dev{/shm,/pts,}
umount -R /mnt/gentoo
reboot
輸入法問題:
emerge --ask app-i18n/fcitx
安裝fcitx
還要安裝fcitx-configtool fcitx-googlepinyin,由於Gentoo的包名比較長,如果不記得全名,可以用這個命令搜尋 emerge --search fcitx
,搜尋帶有fcitx的包,這個命令同時會顯示被搜尋到的包是否已經安裝和是否Masked。
輸入法安裝後,需要在配置檔案裡做設定才能用,實際上這裡按照網上和fcitx-wiki裡說的設定不行(這裡不清楚為什麼,其實第一次安裝Gentoo是可以的,但是第二次安裝不知道為啥不行了,讀者可以先先用傳統的官網方法試試,官方wiki:使用GDM、LightDM的修改/.xprofile,使用Startx、Slim的修改/.xinitrc,gnome用的是GDM),通過網友的知道終於找到了解決辦法,需要在~/.pam_environment裡貼上對應程式碼。
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
中文亂碼:
需要安裝中文字型,可以使用emerge命令安裝字型
我是在win系統裡複製的微軟雅黑文字安裝的,具體如下:
cp xxx.ttc(.ttf) /usr/share/fonts/new-dir
這裡最好新建一個資料夾
mkfontscale
mkfontdir
sudo fc-cache
重新整理字型快取
之後再在設定裡設定中文字型就行了
軟體被Masked的問題:
有些軟體出於各種原因可能不是太穩定,這種軟體就會被Masked,無法安裝,只能修改一些檔案才能正常安裝
echo "軟體全名 ~keyword" > /etc/portage/package.keywords
這裡的~keyword安裝被Masked的軟體時會有提示。