這個也應該算是絕對的乾貨了吧。 linux
記得06年曾經寫過一份中文版的 gentoo 安裝手冊,過了這麼久,其實 gentoo 的變化仍是很大的,尤爲是如今支持 systemd 啓動,相對於之前的 openrc/shell 或者 openrc / c,5秒左右啓動完成能夠說是神速了! shell
心血來潮,就寫一下吧。 windows
如下正文和官方手冊會略有出入,你們互相借鑑着看吧。 bash
1. 誰是賤兔 服務器
首先簡單介紹一下賤兔(gentoo)。 架構
gentoo 是一種專門針對屌絲IT攻城獅們推出的 linux 操做系統發行版,其特色就是擁有極高的可定製能力,可讓用戶對系統擁有極爲強大的控制能力,同時 gentoo 的性能也極爲優秀。 app
gentoo 擁有 linux 世界最強大的軟件包管理系統……之一。精髓思想來自於 FreeBSD(MacOSX 的表兄)的 ports 系統,可是能夠說青出於藍而勝於藍。特別適合有系統潔癖和更新強迫症的宅男們。 ssh
2. 前戲前的前戲 工具
如今開始進入正題吧,哦不,在真的開始安裝 gentoo 系統以前,咱們還須要作一些事情。 性能
首先,你要準備好一個 gentoo 的安裝介質,通常是光盤。能夠在搜狐和網易的開源鏡像服務器上直接下載。通常叫作 mini install cd 啥的。我的推薦直接用 amd64 架構的,x86能夠忽略之了。
而後須要下載 gentoo 的基本包,也就是 stage3,下面咱們叫作 ${STAGE3}。
再而後,若是不想讓系統一點點同步 portage 源碼樹,能夠直接下載 portage snapshot,下面簡稱 ${SNAPSHOT}。
接下來,咱們用安裝介質啓動系統,let's go!
3. 真正的前戲
假設咱們用的是光盤啓動,我通常會在 boot: 界面用 gentoo nokeymap 啓動。
啓動完成以後,首先設置一下網卡,dmesg | grep eth,看到網卡設備號,假設叫作 ${ETH},而後 net-setup ${ETH},接下來不會操做的人面壁彈JJ去。
網卡配置好,若是喜歡遠程安裝的,就能夠 passwd 設置個密碼,而後 /etc/init.d/sshd start,啓動 ssh。
官網建議如今就配置 /etc/resolv.conf ,我以爲不必,能 ping 8.8.8.8 就好了。
接下來須要配置硬盤了,好比是 cfdisk /dev/sda 吧。我通常 /boot 單獨用個100MB,swap 用個 4GB 足夠了,接下來怎麼配置,你們本身把握,不會的去看官方手冊。
假設咱們的分區設置是:
/dev/sda1 /boot ext2
/dev/sda2 swap swap
/dev/sda3 / ext4
/boot 通常建議用 ext2 來格式化,rootfs 能夠用 ext四、reiserfs 均可以。不過比較蛋疼的是,安裝光盤默認不提供 btrfs 和 f2fs 的工具,因此……你們認了吧。
接下來就要掛載系統了。
# mount /dev/sda3 /mnt/gentoo
# cd /mnt/gentoo
# tar xvjf ${STAGE3}
# tar xvjpf ${SNAPSHOT} -C /mnt/gentoo/usr
# mount /dev/sda1 /mnt/gentoo/boot
# mount -t proc proc /mnt/gentoo/proc
# mount --rbind /dev /mnt/gentoo/dev
# mount --rbind /sys /mnt/gentoo/sys
這裏之前能夠用 mount -o,如今是 --rbind,還有就是,若是你們下載的 snapshot 是 xz 格式的,就用 tar xvJpf 命令,注意,是大寫 J。
4. 進入正題
好了,如今能夠進入正題了。
# chroot /mnt/gentoo /bin/bash
# env-update && source /etc/profile
首先記得給本身設置個密碼:
# passwd
而後作一些官方教程以前讓咱們作的事情:
# echo "nameserver 8.8.8.8" >> /etc/resolv.conf
# echo "Asia/Shanghai" >> /etc/timezone
# nano -w /etc/portage/make.conf
這裏暫停一下,make.conf 仍是挺重要的,因此有幾個環境變量的建議。
CFLAGS 的設置,在 gcc 4.4 之後能夠直接用 -march=native 了,自動識別本機處理器,而後 -pipe -fomit-pointer -O3 之類的你們本身看着辦。
ACCEPT_KEYWORDS 我是用 ~amd
LINGUAS="zh_CN" 也是必須的,咱們是中國用戶哦。
SYNC="rsync.asia.gentoo.org/gentoo-portage" 也還能夠接受。
GENTOO_MIRRORS="http://mirrors.163.com/gentoo http://mirrors.sohu.com/gentoo ftp://gg3.net/pub/linux/gentoo" 應該也是夠用的了。
接下來咱們要在USE標籤裏面加入關鍵的東西,由於咱們要用 systemd 取代 openrc,因此 USE 裏面加入 systemd gudev networkmanager 。
用 networkmanager 是由於 openrc 配置網卡的那套很差使了,嘿嘿。
接下來首先更新一下 gcc,由於這玩意最重要:
# emerge gcc
# gcc-config 2
# emerge -c gcc
最後一個命令是刪除舊版本。
而後輪到 glibc:
# nano -w /etc/locale.gen
# emerge glibc
我通常的 locale 設置是:
en_US ISO-8859-1
en_US.UTF-8 UTF-8
zh_CN UTF-8
zh_CN.GBK GBK
zh_CN.GB2312 GB2312
zh_CN.GB18030 GB18030
接下來處理一下工具鏈,我習慣先更新完 system 再考慮 world。
# emerge @preserved-rebuild
# emerge system -uDN
這裏要注意兩個問題(*很關鍵*)
第一個是可能會遇到 dbus 和 systemd 互相依賴的問題,解決辦法是先 USE="-systemd" emerge dbus,在安裝完 systemd 以後,再從新 emerge dbus。
第二個問題是經典的2B guile-1.8.8 編譯失敗。緣由是 texinfo 5.2 和最新 guile 一個配合上的BUG。解決也簡單:
# mkdir -p /etc/portage/package.mask
# echo ">=sys-apps/texinfo-5" >> /etc/portage/package.mask/texinfo
# emerge texinfo -1
而後你們記得 emerge networkmanager,我通常會 USE="-nss -modemmanager"。
懶人推薦先 emerge dhcpcd,緣由你懂的。
而後編譯內核:
# emerge gentoo-sources
# cd /usr/src/linux
# make && make modules_install && make install
固然,懶人能夠:
# emerge genkernel
# cd /usr/src/linux
# genkernel --menuconfig all
使用 systemd 須要作一些內核設置,能夠參見 gentoo systemd wiki,傳送門:http://wiki.gentoo.org/wiki/Systemd
怎麼配置內核的問題,俺恕不解答。不過俺是一次配置成功了。
對了,若是選擇了 systemd 支持,openrc 的那個能夠去掉了。
5. 調戲,不,調整
到了這裏,就是一些基本的調整了,好比 fstab、好比 hostname。不過若是使用了 systemd,在 chroot 環境下可能設置不了 hostname,不要緊,這事之後再說。
接下來安裝引導工具,我只提 grub2。
grub2 有個很蛋疼的問題,常常會在 ~amd64 下面編譯不了最新版的 2.02beta2,不過 2.00 穩定版是沒問題的,因此你們能夠 emerge =sys-boot/grub-2.00_p5107-r2
而後安裝 grub:
# grub-install /dev/sda
這個時候還不到生成引導菜單的時候,由於咱們要啓用 systemd,因此:
# nano -w /etc/default/grub
修改 GRUB_CMDLINE_LINUX="init=/usr/lib/systemd/systemd"
而後再:
# grub2-mkconfig -o /boot/grub/grub.cfg
官網手冊到這裏還有不少事情幹,不過俺們用了高大上的 systemd,其實均可以略去,因此咱們重整旗鼓,接下來……
6. 我要,還要
終於能夠裝軟件和服務了。
首先作一件咱們差點忘記的事情:
# emerge world -uDN
而後清理垃圾
# emerge portage-utils gentoolkit
# revdev-rebuild
# emerge -c
能夠安裝一些咱們須要的軟件了,我通常安裝 syslog-ng、cronie(之前的vixie-cron)、reiserfsprogs、btrfs-progs、f2fs(若是要用固態硬盤)、zfs等等……
而後把基本的服務器啓用:
# systemctl enable {NetworkManager syslog-ng cronie sshd ... }
你們本身看着辦吧。
7. 再來一次
接下來就是收尾和啓動了。
# eselect news read all
# eselect news purge all
# etc-update
# exit
退回到 livecd 的環境,記得:
# cd /
# umount -l /mnt/gentoo/*
而後能夠 reboot 了
8. 吸支菸吧
好像事情都幹完了,咱們是否是能夠吸一支菸了?
能夠的,不過還有點小事要解決,好比 hostname:
# hostnamectl set-hostname windows8