安裝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,video,audio,cdrom 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的軟件時會有提示。
