tip: Gentoo 的 wiki 寫的非常好,邊折騰邊學(xué)習(xí)表谊。
安裝
啟動(dòng)
先找個(gè)鏡像站下載iso文件搔谴。然后直接創(chuàng)建個(gè)虛擬機(jī)
啟動(dòng)干旁。這時(shí)會(huì)顯示一個(gè)啟動(dòng)提示符驶沼。 此時(shí)按Enter鍵將使用默認(rèn)的啟動(dòng)選項(xiàng)啟動(dòng)。如果要使用自定義引導(dǎo)選項(xiàng)引導(dǎo)安裝媒介争群,請(qǐng)按照啟動(dòng)選項(xiàng)指定一個(gè)內(nèi)核回怜,然后按Enter鍵。 在啟動(dòng)提示符下换薄,用戶可以按 F1 鍵顯示可用的內(nèi)核玉雾,按 F2 按鍵顯示可用的啟動(dòng)選項(xiàng)翔试。
直接boot: gentoo
Enter
然后顯示lived ~ #
說明啟動(dòng)成功
如果網(wǎng)絡(luò)已配置,lived ~ # ifconfig
命令應(yīng)該會(huì)列出一個(gè)或多個(gè)網(wǎng)絡(luò)接口
準(zhǔn)備磁盤
分區(qū)方案將被使用:
Partition | Description |
---|---|
/dev/sda1 | BIOS boot partition 給bios下grub留的空間 |
/dev/sda2 | Boot partition EFI分區(qū) 格式化成fat32格式复旬,不然裝gurb出錯(cuò) |
/dev/sda3 | Swap partition 交換分區(qū) |
/dev/sda4 | Root partition 根分區(qū) |
注意 parted 不像fdisk 不能撤銷
root # parted -a optimal /dev/sda /*對(duì)這塊磁盤分區(qū)并優(yōu)化分區(qū)對(duì)齊*/
(parted)mklabel gpt /*設(shè)置標(biāo)簽垦缅,相對(duì)于msdos*/
(parted)rm 2 /*刪除一個(gè)分區(qū)*/
(parted)unit mib /*設(shè)置操作單位為MB*/
(parted)mkpart primary 1 3 /*創(chuàng)建一個(gè)從1mb開始到3mb結(jié)束的分區(qū)*/
(parted)name 1 grub /*設(shè)置第一個(gè)分區(qū)名字*/
(parted)set 1 bios_grub on /*設(shè)置標(biāo)志*/
(parted)print /*打印當(dāng)前*/
(parted)mkpart primary 3 131
(parted)name 2 boot
(parted)set 2 boot on /*有這個(gè)標(biāo)志是EFI分區(qū) 在UEFI安裝時(shí),引導(dǎo)標(biāo)志將出現(xiàn)在引導(dǎo)分區(qū)(ESP)*/
parted)mkpart primary 131 643
(parted)name 3 swap
(parted)mkpart primary 643 -1 /*剩余所有空間*/
(parted)name 4 rootfs
(parted)print
(parted)exit
安裝文件系統(tǒng)
root #mkfs.vfat -F 32 /dev/sda2
root #mkfs.ext4 /dev/sda4
初始化并激活swap分區(qū)
root #mkswap /dev/sda3
root #swapon /dev/sda3
掛載root分區(qū)
root #mount /dev/sda4 /mnt/gentoo /*目錄自己建*/
(可選)如果/tmp/需要放在一個(gè)獨(dú)立分區(qū)驹碍,確保在掛載后變更它的權(quán)限:
root #chmod 1777 /mnt/gentoo/tmp
睡覺去了
安裝stage包
在/mnt/gentoo/目錄下
root #wget http://mirrors.163.com/gentoo/releases/amd64/autobuilds/current-install-amd64-minimal/stage3-amd64-20181211T214502Z.tar.xz
root #tar xpvf stage3-*.tar.bz2 --xattrs-include='*.*' --numeric-owner /*解壓并保持權(quán)限*/
確保你使用了同樣的參數(shù) ( xpf 和 --xattrs-include='.')壁涎。 x表示解開(Extract),v表示詳細(xì)信息(Verbose)可以用來查看解壓縮時(shí)發(fā)生了什么(可選參數(shù))幸冻, j 表示使用bzip2解壓縮粹庞,p 表示保留權(quán)限(Preserve permissions),還有f 表示我們要解開一個(gè)文件洽损,而不是標(biāo)準(zhǔn)輸入庞溜。最后,--numeric-owner 被用于確保從tarball中提取的文件的用戶和組ID與Gentoo發(fā)布工程團(tuán)隊(duì)預(yù)期的保持一致碑定,即使大膽的用戶使用的不是Gentoo官方安裝媒介流码。
配置編譯選項(xiàng)
為了優(yōu)化Gentoo,可以設(shè)置一些影響Portage的變量延刘,Gentoo官方支持包管理器漫试。 所有這些變量可以設(shè)置為環(huán)境變量(使用export),但這不是永久的碘赖。 為了保留設(shè)置驾荣,Portage讀入/etc/portage/make.conf文件 ,一個(gè)用于Portage的配置文件普泡。
root #nano -w /mnt/gentoo/etc/portage/make.conf
CFLAGS
和 CXXFLAGS
變量分別定義了GCC C和C ++編譯器的優(yōu)化標(biāo)志播掷。
#CODE CFLAGS 和 CXXFLAGS 變量示例
CFLAGS="-march=native -O2 -pipe"
# Use the same settings for both variables
CXXFLAGS="${CFLAGS}"
chrooting
復(fù)制DNS信息,確保即使進(jìn)入到新環(huán)境后網(wǎng)絡(luò)仍然可以使用撼班。
root #cp --dereference /etc/resolv.conf /mnt/gentoo/etc/ /*--dereference可以保障如果/etc/resolv.conf是一個(gè)符號(hào)鏈接的話歧匈,復(fù)制的是那個(gè)目標(biāo)文件而不是這個(gè)符號(hào)文件自己*/
掛載必要的文件系統(tǒng)
Linux的根將變更到新的位置。為了確保新環(huán)境正常工作砰嘁,需要確保一些文件系統(tǒng)可以正常使用件炉。
需要提供的文件系統(tǒng)是:
/proc/ 一個(gè)pseudo文件系統(tǒng)(看起來像是常規(guī)文件,事實(shí)上卻是實(shí)時(shí)生成的)矮湘,由Linux內(nèi)核暴露的一些環(huán)境信息
/sys/ 一個(gè)pseudo文件系統(tǒng)斟冕,像要被取代的/proc/一樣,比/proc/更加有結(jié)構(gòu)
/dev/ 是一個(gè)包含全部設(shè)備文件的常規(guī)文件系統(tǒng)缅阳,一部分由Linux設(shè)備管理器(通常是udev)管理
/proc/位置將要掛載到/mnt/gentoo/proc/宫静,而其它的兩個(gè)都是綁定掛載。字面上的意思是,例如/mnt/gentoo/sys/事實(shí)上就是/sys/(它只是同一個(gè)文件系統(tǒng)的第二個(gè)條目點(diǎn))孤里,而/mnt/gentoo/proc/是(可以說是)文件系統(tǒng)的一個(gè)新的掛載伏伯。
root #mount --types proc /proc /mnt/gentoo/proc
root #mount --rbind /sys /mnt/gentoo/sys
root #mount --make-rslave /mnt/gentoo/sys
root #mount --rbind /dev /mnt/gentoo/dev
root #mount --make-rslave /mnt/gentoo/dev /*--make-rslave操作是稍后安裝systemd支持時(shí)所需要的。*/
進(jìn)入新環(huán)境
完成chroot有三個(gè)步驟:
- 使用chroot將根位置從/(在安裝媒介里)更改成/mnt/gentoo/(在分區(qū)里)
- 使用source命令將一些設(shè)置(那些在/etc/profile中的)重新載入到內(nèi)存中
- 更改主提示符來幫助我們記住當(dāng)前會(huì)話在一個(gè)chroot環(huán)境里面捌袜。
root #chroot /mnt/gentoo /bin/bash
root #source /etc/profile
root #export PS1="(chroot) ${PS1}"
掛載 boot 分區(qū)
現(xiàn)在已經(jīng)進(jìn)入新的環(huán)境说搅,必須創(chuàng)建并掛載 /boot 分區(qū)。 當(dāng)編譯內(nèi)核并安裝引導(dǎo)加載程序時(shí)虏等,這將非常重要:
root #mkdir /boot
root #mount /dev/sda2 /boot
配置portage
# nano etc/portage/make.conf
其中添加內(nèi)容(此處使用網(wǎng)易開源鏡像站):
GENTOO_MIRRORS="http://mirrors.163.com/gentoo/"
從網(wǎng)站安裝ebuild 數(shù)據(jù)庫快照
這個(gè)快照包含一組文件弄唧,包括通知Portage中有關(guān)可用軟件的標(biāo)題(用于安裝),系統(tǒng)管理員可以選擇哪些配置文件霍衫,軟件包或 profile 特定新聞 (news) 項(xiàng)目等候引。
root #emerge-webrsync
選擇正確的配置文件
root #eselect profile list
Available profile symlink targets:
[1] default/linux/amd64/13.0 *
[2] default/linux/amd64/13.0/desktop
[3] default/linux/amd64/13.0/desktop/gnome
[4] default/linux/amd64/13.0/desktop/kde
...
root #eselect profile set 10
那些想使用systemd作為他們的init系統(tǒng)就應(yīng)該選擇一個(gè)在其某個(gè)部分中包含了systemd字樣的配置文件
更新@world集合老慢了
root #emerge --ask --verbose --update --deep --newuse @world
啥時(shí)候能完事啊,我自閉了 4個(gè)小時(shí)+
配置USE變量
USE是Gentoo為用戶提供的最具威力的變量之一敦跌。很多程序通過它可以選擇編譯或者不編譯某些可選的支持澄干。例如,一些程序可以在編譯時(shí)加入對(duì) GTK+或是對(duì)Qt的支持柠傍。其它的程序可以在編譯時(shí)加入或不加入對(duì)于SLL的支持麸俘。有些程序甚至可以在編譯時(shí)加入對(duì)framebuffer的支持(svgalib)以取代X11(X服務(wù)器)。
最簡(jiǎn)單的檢查當(dāng)前活動(dòng)的USE標(biāo)記的辦法是運(yùn)行emerge --info并選擇以USE開頭的那一行:
root #emerge --info | grep ^USE
可以在系統(tǒng)的/usr/portage/profiles/use.desc中找到可用的USE標(biāo)記的完整描述惧笛。
作為示例从媚,我們展示一個(gè)支持DVD、ALSA,以及CD錄制的基于KDE系統(tǒng)的USE設(shè)置:
/etc/portage/make.conf
USE="-gtk -gnome qt5 kde dvd alsa cdr"
時(shí)區(qū)
為系統(tǒng)選擇時(shí)區(qū)患整。在/usr/share/zoneinfo/中查找可用的時(shí)區(qū)拜效,然后寫進(jìn)/etc/timezone文件。
`root #``ls /usr/share/zoneinfo`
假設(shè)要選擇的時(shí)區(qū)是Asia/Shanghai:
`root #``echo "Asia/Shanghai" > /etc/timezone`
請(qǐng)避免使用/usr/share/zoneinfo/Etc/GMT*時(shí)區(qū)各谚,它們的名字并不意味著想要的時(shí)區(qū)拂檩。例如,GMT-8實(shí)際上是GMT+8嘲碧。
接下來,重新配置sys-libs/timezone-data包父阻,將會(huì)為我們基于/etc/timezone條目更新/etc/localtime文件愈涩。/etc/localtime文件用于讓系統(tǒng)的C類庫知道系統(tǒng)在什么時(shí)區(qū)。
root #emerge --config sys-libs/timezone-data
配置地區(qū)
大多數(shù)用戶只想在他們的系統(tǒng)上使用一或兩個(gè)地區(qū)加矛。
Locales 不只是指定用戶應(yīng)該使用與系統(tǒng)進(jìn)行交互的語言履婉,同時(shí)也指定了字符串排序,日期和時(shí)間的顯示等規(guī)則斟览。
系統(tǒng)應(yīng)該支持的地區(qū)應(yīng)該在/etc/locale.gen中提到毁腿。
root #nano -w /etc/locale.gen
下面的地區(qū)是一個(gè)示例,展示了同時(shí)使用英語(美國(guó))和中文(中國(guó))及附加字符格式(如UTF-8)。
FILE /etc/locale.gen啟用US和CN地區(qū)及附加字符格式
en_US ISO-8859-1
en_US.UTF-8 UTF-8
zh_CN GBK
zh_CN.UTF-8 UTF-8
警告
我們強(qiáng)烈建議使用至少一個(gè)UTF-8格式的地區(qū)設(shè)置已烤,因?yàn)橛行?yīng)用程序可能需要它鸠窗。
下一步是運(yùn)行l(wèi)ocale-gen。它將生成/etc/locale.gen文件中指定的所有地區(qū)胯究。
root #locale-gen
要驗(yàn)證所選擇的地區(qū)當(dāng)前可用稍计,運(yùn)行locale -a
。
等完成后裕循,我們就來設(shè)定系統(tǒng)級(jí)別的區(qū)域設(shè)置臣嚣。我們又一次使用eselect來做這件事,現(xiàn)在使用locale模塊剥哑。
通過eselect locale list可顯示可用的目標(biāo):
root #eselect locale list
Available targets for the LANG variable:
[1] C
[2] en_US
[3] en_US.iso88591
[4] en_US.utf8
[5] POSIX
[6] zh_CN
[7] zh_CN.gbk
[8] zh_CN.utf8
[ ] (free form)
通過eselect locale set VALUE可以設(shè)定正確的地區(qū):
root #eselect locale set 8
這個(gè)還可以通過人工編輯/etc/env.d/02locale文件來完成:
FILE /etc/env.d/02locale手動(dòng)設(shè)置系統(tǒng)地區(qū)定義
LANG="zh_CN.UTF-8"
確保設(shè)定了一個(gè)地區(qū)硅则,不然系統(tǒng)會(huì)在后面安裝中的內(nèi)核編譯和部署其他軟件時(shí)顯示警告和錯(cuò)誤。
重新加載環(huán)境:
root #env-update && source /etc/profile && export PS1="(chroot) $PS1"
配置Linux內(nèi)核
安裝源碼
inux內(nèi)核是所有發(fā)行版的核心株婴。它位于用戶程序和系統(tǒng)硬件之間怎虫。Gentoo提供給用戶一些可選的內(nèi)核源碼。完整的帶描述的列表在內(nèi)核概述頁面督暂。
針對(duì)基于amd64-系統(tǒng)的Gentoo揪垄,建議使用包 sys-kernel/gentoo-sources。
選擇一個(gè)合適的內(nèi)核并使用emerge來安裝它逻翁。
root #emerge --ask sys-kernel/gentoo-sources
這將在/usr/src/中安裝Linux內(nèi)核源碼饥努,并有一個(gè)符號(hào)連接叫作linux將指向安裝的內(nèi)核源碼:
root #ls -l /usr/src/linux
lrwxrwxrwx 1 root root 12 Oct 13 11:04 /usr/src/linux -> linux-3.16.5-gentoo
現(xiàn)在是時(shí)候來配置和編譯內(nèi)核源代碼了。有兩種方法:
- 手動(dòng)配置并生成內(nèi)核八回。移步wiki
- 一個(gè)叫作genkernel的工具用來自動(dòng)化生成并安裝Linux內(nèi)核酷愧。
使用genkernel。它將自動(dòng)配置并編譯內(nèi)核缠诅。
genkernel配置內(nèi)核的工作原理幾乎和安裝CD配置的內(nèi)核完全一致溶浴。也就是說當(dāng)使用genkernel建立內(nèi)核,系統(tǒng)通常將在引導(dǎo)時(shí)檢測(cè)全部硬件管引,就像安裝CD所做的士败。因?yàn)間enkernel不需要任何手動(dòng)內(nèi)核配置,它對(duì)于那些不能輕松的編譯他們自動(dòng)內(nèi)核的用戶來說是一個(gè)理想的解決方案褥伴。
現(xiàn)在谅将,我們來看看如何使用genkernel。首先emerge sys-kernel/genkernel這個(gè)ebuild:
root #emerge --ask sys-kernel/genkernel
這一步出錯(cuò)了嘗試#dispatch-conf
重慢,注意上面命令的輸出會(huì)教你該做什么
接下來饥臂,編輯/etc/fstab文件來使包含有第二個(gè)值為/boot/的那條的第一個(gè)值指向到正確的設(shè)備。如果是按照本手冊(cè)的分區(qū)示例似踱,則這個(gè)設(shè)備非常像使用ext2文件系統(tǒng)的/dev/sda2隅熙。這將使文件中的這一條目看起來像是:
root #nano -w /etc/fstab
/dev/sda2 /boot fat32 defaults 0 2
現(xiàn)在稽煤,運(yùn)行g(shù)enkernel all來編譯內(nèi)核源碼。值得注意的是囚戚,使用genkernel編譯一個(gè)內(nèi)核將支持幾乎全部的硬件酵熙,這將使編譯過程需要一陣子來完成!
root #genkernel all
...又是漫長(zhǎng)等待
一旦genkernel完成弯淘,將創(chuàng)建一個(gè)內(nèi)核绿店、全部的模塊和初始化內(nèi)存文件(initramfs)。我們將在文檔后面配置引導(dǎo)器的時(shí)候使用這個(gè)內(nèi)核和initrd庐橙。記下內(nèi)核和initrd名字作為編輯引導(dǎo)器配置文件的信息假勿。initrd將在后執(zhí)行硬件檢測(cè)之后、“真實(shí)”系統(tǒng)啟動(dòng)之前立即啟動(dòng)态鳖。
root #ls /boot/kernel* /boot/initramfs*
initramfs-genkernel-x86_4.14.83-gentoo
kernel-genkernel-x86_64-4.14.83-gentoo
配置模塊
要查看所有可用模塊转培,運(yùn)行下面的find命令。不要忘記替換“<kernel version>”為剛剛編譯的內(nèi)核版本:
root #find /lib/modules/<kernel version>/ -type f -iname '*.o' -or -iname '*.ko' | less
例如浆竭,為了自動(dòng)加載3c59x.ko
模塊(它是特定3Com網(wǎng)卡系列的驅(qū)動(dòng)程序)浸须,編輯/etc/.-load.d/network.conf
文件并在其中輸入模塊名稱。實(shí)際的文件名對(duì)于加載程序來說無關(guān)緊要邦泄。
root #mkdir -p /etc/modules-load.d
root #nano -w /etc/modules-load.d/network.conf
配置系統(tǒng)
文件系統(tǒng)信息
創(chuàng)建/etc/fstab
文件
/etc/fstab
文件使用一種特殊語法格式删窒。每行都包含六個(gè)字段。這些字段之間由空白鍵(空格鍵顺囊,tab鍵肌索,或者兩者混合使用)分隔。每個(gè)字段都有自己的含意:
第一個(gè)字段顯示要掛載的特殊 block 設(shè)備或遠(yuǎn)程文件系統(tǒng)特碳。 有幾種設(shè)備標(biāo)識(shí)符可用于特殊塊設(shè)備節(jié)點(diǎn)诚亚,包括設(shè)備文件路徑,文件系統(tǒng)標(biāo)簽午乓,UUID站宗,分區(qū)標(biāo)簽以及UUID。
第二個(gè)字段是分區(qū)掛載點(diǎn)益愈,也就是分區(qū)應(yīng)該掛載到的地方
第三個(gè)字段給出分區(qū)所用的文件系統(tǒng)
第四個(gè)字段給出的是掛載分區(qū)時(shí)mount命令所用的掛載選項(xiàng)梢灭。由于每個(gè)文件系統(tǒng)都有自己的掛載選項(xiàng),我們建議你閱讀mount手冊(cè)(man mount)以獲得所有掛載選項(xiàng)的列表蒸其。多個(gè)掛載選項(xiàng)之間是用逗號(hào)分隔的敏释。
第五個(gè)字段是給dump使用的,用以決定這個(gè)分區(qū)是否需要dump枣接。一般情況下,你可以把該字段設(shè)為0(零)缺谴。
第六個(gè)字段是給fsck使用的但惶,用以決定系統(tǒng)非正常關(guān)機(jī)之后文件系統(tǒng)的檢查順序耳鸯。根文件系統(tǒng)應(yīng)該為1,而其它的應(yīng)該為2(如果不需要文件系統(tǒng)自檢的話可以設(shè)為0)膀曾。
Gentoo 提供默認(rèn)的/etc/fstab不是有效的fstab
root #nano -w /etc/fstab
分區(qū)表和UUIDs
MBR(BIOS)和GPT都支持“文件系統(tǒng)”標(biāo)簽和“文件系統(tǒng)”的UUID县爬。
文件系統(tǒng)標(biāo)簽和UUID由LABEL和UUID前綴標(biāo)識(shí),并且可以通過blkid命令查看:
root #blkid
/dev/sda2 | /boot | fat32 | defaults,noatime | 0 2 |
---|---|---|---|---|
/dev/sda3 | none | swap | sw | 0 0 |
/dev/sda4 | / | ext4 | noatime | 0 1 |
/dev/cdrom | /mnt/cdrom | auto | noauto,user | 0 0 |
配置網(wǎng)絡(luò)
在Gentoo Linux安裝時(shí),網(wǎng)絡(luò)已經(jīng)配置添谊。然而,這是安裝的安裝光盤本身的配置,并不是新的系統(tǒng)環(huán)境的網(wǎng)絡(luò)配置〔圃現(xiàn)在你所要設(shè)置的是Gentoo系統(tǒng)的永久網(wǎng)絡(luò)配置。
具體這里好多繁瑣的查看wiki
配置引導(dǎo)加載程序
移步wiki更詳細(xì)斩狱。耳高。。所踊。
完成就裝好了
不更了就到這吧