Gentoo(賤兔)Linux安裝筆記


 
網上對於Gentoo Linux 的教程少之又少,所以這里我將自己的安裝記錄貼出來
希望對正在研究Gentoo 的小伙伴們有幫助!

1.確認連接到互聯網,使用net-setup工具配置網絡

root# net-setup eth0

2.分區

推薦分區方案:

分區 描述
/dev/sda1 boot引導分區
/dev/sda2 /根分區
/dev/sda3 swap交換分區
 
Command (m for help):p
Disk /dev/sda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes

Device Boot    Start       End    Blocks   Id  System
/dev/sda1   *         3        14    506520+  83  Linux
/dev/sda2            15        81    28690200 83  Linux
/dev/sda3            82        3876  506520   82  Linux swap
敲擊 a 鍵來切換一個分區是否為可引導的標記,然后敲擊 1。之后再一次敲 p鍵,您可以發現一個“*”被放置於相應分區的“boot”列。
 

3.格式化分區並掛載磁盤

root# mkfs.ext4 /dev/sda1
root# mkfs.ext4 /dev/sda2
root# mkswap /dev/sda3
root# swapon /dev/sda3
root# mount /dev/sda2 /mnt/gentoo
root# mkdir /mnt/gentoo/boot
root# mount /dev/sda1 /mnt/gentoo/boot

4.設置時間

root# date 050814302016 //05表示月份08表示號數1430表示14點30分2016表示年份

5.下載stage3,並解壓tar包

stage3壓縮包是一個包含有最小化Gentoo環境的文件

root# cd /mnt/gentoo
root# links https://www.gentoo.org/downloads/mirrors/
root# tar xvjpf stage3-*.tar.bz2 --xattrs

6.配置編譯選項

root# nano -w /mnt/gentoo/etc/portage/make.conf
CFLAGS="-O2 -pipe" //-O2表示gcc優化級別,(已知O3會在全系統時有問題,所以推薦使用O2即可) -pipe表示使用管道而不是編譯的各個階段之間的通信的臨時文件,這里我推薦大家就使用這兩個標記即可,如果有需要可以查看GUN GCC的一些選項來自行設定
# Use the same settings for both variables
CXXFLAGS="${CFLAGS}"
MAKEOPTS="-j8" //根據你的CPU核心數來設置,表示編譯安裝包時並行執行的線程數

7.配置鏡像站點

root# mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf
#選擇一個你所在地理位置的鏡像站點即可

8.創建主倉庫

root# mkdir /mnt/gentoo/etc/portage/repos.conf
root# cp /mnt/gentoo/usr/share/portage/config/repos.conf /mnt/gentoo/etc/portage/repos.conf/gentoo.conf

9.復制DNS信息

root# cp -L /etc/resolv.conf /mnt/gentoo/etc/

10.掛載必要的文件系統

root# mount -t proc proc /mnt/gentoo/proc
root# mount --rbind /sys /mnt/gentoo/sys
root# mount --make-rslave /mnt/gentoo/sys //如果你不打算安裝systemd則可不必使用這句話
root# mount --rbind /dev /mnt/gentoo/dev
root# mount --make-rslave /mnt/gentoo/dev //如果你不打算安裝systemd則可不必使用這句話
root# rm /dev/shm && mkdir /dev/shm
root# mount -t tmpfs -o nosuid,nodev,noexec shm /dev/shm
root# chmod 1777 /dev/shm
--make-rslave操作是稍后安裝systemd支持時所需要的。
 

11.進入新環境

root# chroot /mnt/gentoo /bin/bash
root# source /etc/profile
root# export PS1="(chroot) $PS1"

12.安裝Portage快照

root# emerge-webrsync //emerge-webrsync命令將安裝一個最近的Portage快照(通常是24小時以內)
root# emerge --sync //使用rsync協議來更新Portage樹(之前通過emerge-webrsync獲得的)到最新狀態。 

13.選擇正確的配置文件

root# eselect profile list
root# eselect profile set  [number]
root# eselect profile list

14.更新你的系統

root# emerge --ask --update --deep --newuse @world

15.配置USE變量

USE是Gentoo為用戶提供的最具威力的變量之一。很多程序通過它可以選擇編譯或者不編譯某些可選的支持。例如,一些程 序可以在編譯時加入對gtk或是對qt的支持。其它的程序可以在編譯時加入或不加入對於SLL的支持。有些程序甚至可以在編譯時加入對 framebuffer的支持(svgalib)以取代X11(X服務器)。

大多數的發行版會使用盡可能多的支持特性編譯它們的軟件包,這既增加了軟件的大小也減慢了啟動時間,而這些還沒有算上可能會涉及到的大量依賴性問題。Gentoo可以讓你自己定義軟件編譯的選項,而這正是USE要做的事。

在USE變量里你可以定義關鍵字,它被用來對應相應的編譯選項。例如,ssl將會把ssl支持編譯到程序中以支持它。-X會移除其對於X服務器的支持(注意前面的減號)。gnome gtk -kde -qt4將會以支持GNOME(和GTK)但不支持KDE(和Qt)的方式編譯軟件,使系統為GNOME做完全調整(如果架構支持)。

默認的USE設置全放在了系統所使用的Gentoo配置文件的make.defaults文件中。Gentoo對它的配置文件們使用了一個(復雜的)繼承系統,在這個階段我們不去深入。最簡單的檢查當前活動的USE標記的辦法是運行emerge --info並選擇以USE開頭的那一行:

root# emerge --info | grep ^USE
USE="X acl alsa amd64 berkdb bindist bzip2 cli cracklib crypt cxx dri ..."
可以在系統的/usr/portage/profiles/use.desc中找到可用的USE標記的完整描述。
root# less /usr/portage/profiles/use.desc
這里我給推薦使用的幾個初始USE變量,不包含任何桌面環境(如果要使用桌面環境請查閱相關文檔)
USE="-gnome -kde -qt4 -minimal gtk dvd alsa cdr dbus X udev session lock jpeg startup-notification thunar policykit udisks"
INPUT_DEVICES="evdev synaptics"
VIDEO_CARDS="nouveau" //N卡用戶
VIDEO_CARDS="radeon" //Intel用戶
CPU_FLAGS_X86="" //CPU指令集,為了幫助用戶能正確使用標志,提供了一個Python腳本生成使用/proc內/cpuinfo正確的值。它可以在找到app-portage/cpuinfo2cpuflags
root# emerge --ask app-portage/cpuinfo2cpuflags
root# cpuinfo2cpuflags-x86 >> /etc/portage/make.conf

16.配置時區

為系統選擇時區。在/usr/share/zoneinfo/中查找可用的時區,然后寫進/etc/timezone文件。

root# ls /usr/share/zoneinfo
root# echo "Asia/Shanghai" > /etc/timezone
root# emerge --config sys-libs/timezone-data

17.配置地區

root# nano -w /etc/locale.gen
    en_US ISO-8859-1
    en_US.UTF-8 UTF-8
    zh_CN GBK
    zh_CN GB18030
    zh_CN.GB2312 GB2312
    zh_CN.UTF-8 UTF-8
root# locale-gen
root# eselect locale list
root# eselect locale set [number]
root# env-update && source /etc/profile && export PS1="(chroot) $PS1"

可選操作,配置Systemd代替OpenRC,這一步做了下面安裝源代碼就不用做了

  • 編輯/etc/fstab文件來使包含有第二個值為/boot/的那條的第一個值指向到正確的設備。
root# nano -w /etc/fstab
/dev/sda1   /boot   ext4    defaults    0 2
  • 安裝Systemd
root# ln -sf /proc/self/mounts /etc/mtab
root# emerge --ask --unmerge sys-kernel/genkernel //如果以前安裝過kernel那么卸載之
root# emerge --ask sys-kernel/dracut
root# nano -w /etc/dracut/dracut.conf
    # Dracut modules to add to the default
    add_dracutmodules+="usrmount"
root# emerge --ask sys-kernel/gentoo-sources
root# emerge --ask sys-kernel/genkernel-next
    /etc/genkernel.conf
    UDEV="yes"
root# genkernel --install all
root# genkernel --udev --lvm --mdadm initramfs
    當使用LVM時,lvmetad守護進程需要被同時啟動。否則,systemd將無法掛載LVM卷。 lvmetad可以在/ etc/ LVM啟用
root# nano -w /etc/lvm/lvm.conflvm.conf
    # Set use_lvmetad to '1' for systemd
    use_lvmetad = 1
root# nano -w /etc/portage/profile/packages
    # Remove OpenRC from the system profile when using systemd
    -*sys-apps/openrc
root# root #emerge -avDN @world
root# emerge --deselect sys-fs/udev
配置使用systemd引導啟動
當grub2-mkconfig 被使用時, 增加 init 這一行 GRUB_CMDLINE_LINUX:
/etc/default/grub GRUB2 systemd 配置示例
當使用 genkernel-next's 引導時, 使用real_init 來替換init.
# Append parameters to the linux kernel command line
GRUB_CMDLINE_LINUX="init=/usr/lib/systemd/systemd"
手動配置GRUB2文件時(僅限有經驗的用戶), 添加init=參數到 linux 或 linux16命令行。
/boot/grub/grub.cfg GRUB2 配置示例片段
linux /vmlinuz-3.10.9 root=UUID=508868e4-54c6-4e6b-84b0-b3b28b1656b6 init=/usr/lib/systemd/systemd

18.1.安裝源代碼(手動編譯安裝)

root# emerge --ask sys-kernel/gentoo-sources
當手動配置內核時,了解(硬件)系統是至關重要的。大多數信息可以通過安裝包含lspci命令的sys-apps/pciutils來收集:
root# emerge --ask sys-apps/pciutils
另一個系統信息來源是運行lsmod來查看安裝CD使用什么內核模塊,它可能對啟用什么提供了一個好的暗示。
現在進入內核源碼目錄並執行make menuconfig。這將啟動一個菜單驅動的配置屏幕。
root# cd /usr/src/linux
root# make menuconfig
root# make && make modules_install
root# make install

可選:生成一個initramfs

在某些情況中需要建立一個initramfs——一個基於內存的初始化文件系統。最覺的原因是當重要的文件系統位置(如/usr/或/var/)在分離的分區。通過一個initramfs,這些分區可以使用initramfs里面的工具來完成掛載。

如果沒有initramfs的,存在着巨大的風險,系統將無法正常開機,因為這是負責安裝的文件系統工具需要駐留在這些文件系統的信息。 initramfs中的一個將在必要的文件拉進它的內核啟動之后使用的檔案,但控制被移交前轉移到初始化工具。在initramfs的腳本,然后將確保分 區正確地安裝在系統繼續啟動之前。

要安裝一個initramfs,首先安裝sys-kernel/genkernel,然后用它生成一個initramfs:

root# emerge --ask sys-kernel/genkernel
root# emerge genkernel
root# genkernel --lvm --mdadm --install initramfs

18.2.安裝源代碼(自動方式-推薦新手用)

如果手動配置看起來太恐怖,建議使用genkernel。它將自動配置並編譯內核。

genkernel配置內核的工作原理幾乎和安裝CD配置的內核完全一致。也就是說當使用genkernel建立內核,系統通常將在引導時檢測全部硬件,就像安裝CD所做的。因為genkernel不需要任何手動內核配置,它對於那些不能輕松的編譯他們自動內核的用戶來說是一個理想的解決方案。

現在,我們來看看如何使用genkernel。

root# emerge --ask sys-kernel/gentoo-sources
root# emerge --ask sys-kernel/genkernel
接下來,編輯/etc/fstab文件來使包含有第二個值為/boot/的那條的第一個值指向到正確的設備。
root# nano -w /etc/fstab
/dev/sda1   /boot        ext4    defaults             0 2
現在,運行genkernel all來編譯內核源碼。值得注意的是,使用genkernel編譯一個內核將支持幾乎全部的硬件,這將使編譯過程需要一陣子來完成!
root# genkernel all

 

19.可選操作,配置模塊,安裝固件

在/etc/conf.d/modules中列出需要自動加載的模塊。如果有必要,附加選項也可以添加到模塊中。

要查看所有可用模塊,運行下面的find命令。不要忘記替換“”為剛剛編譯的內核版本:

root# find /lib/modules/<kernel version>/ -type f -iname '*.o' -or -iname '*.ko' | less
比如,要自動加載3c59x.ko模塊(3Com網卡家族的特定驅動),編輯/etc/conf.d/modules文件並在里面輸入模塊名字。
root# nano -w /etc/conf.d/modules
modules="3c59x"
一些驅動需要先在系統上安裝附加的固件才能工作。這經常用於網絡接口,特別是無線網絡接口。非常多的固件都打包在sys-kernel/linux-firmware里:
root# emerge --ask sys-kernel/linux-firmware

20.配置fatab

root# nano -w /etc/fstab
/dev/sda1   /boot        ext4    defaults             0 2
/dev/sda2   /            ext4    defaults             0 1
/dev/sda3   none         swap    sw                   0 0
/dev/cdrom  /mnt/cdrom   auto    noauto,user          0 0

21.配置主機名

root# nano -w /etc/conf.d/hostname

22.配置hosts文件

root# nano -w /etc/hosts

23.配置網絡

root# emerge --ask --noreplace net-misc/netifrc
root# nano -w /etc/conf.d/net
#如果你要配置靜態ip
config_eth0="192.168.0.2 netmask 255.255.255.0 brd 192.168.0.255"
routes_eth0="default via 192.168.0.1"
#否則如果需要動態ip
config_eth0="dhcp"

24.配置網卡開機自動啟動

root# cd /etc/init.d
root# ln -s net.lo net.eth0
root# rc-update add net.eth0 default
#對於筆記本你的網卡可能是enp0s3之類的,那么就需要改成如下命令
root# ln -s net.lo net.enp0s3
root# rc-update add net.enp0s3 default

25.安裝dhcp客戶端

root# emerge --ask net-misc/dhcpcd

26.修改密碼

root# passwd

27.編輯UTC時間,修改為使用本地時間

root# nano -w /etc/conf.d/hwclock

28.安裝日志管理軟件

root# emerge --ask app-admin/sysklogd
root# rc-update add sysklogd default

29.安裝crontab任務計划軟件

root# emerge --ask sys-process/cronie
root# rc-update add cronie default
root# crontab /etc/crontab

30.配置開機啟動sshd

root# rc-update add sshd default

31.安裝Grub2

root# emerge --ask sys-boot/grub:2
root# grub2-install /dev/sda
root# grub2-mkconfig -o /boot/grub/grub.cfg

32.重啟系統

root# exit
root# cd ~
root# umount -l /mnt/gentoo/dev{/shm,/pts,}
root# umount /mnt/gentoo{/boot,/sys,/proc,}
root# reboot

33.創建日常管理用戶

root# useradd -m -G users,wheel,audio -s /bin/bash [username] 
root# passwd [username]

34.清理tar包

root# rm /stage3-*.tar.bz2*

到這里安裝就結束了!!

 

可選操作:安裝Xorg-x11圖形化服務器

首先確保你的/etc/portage/make.conf USE中包含X標記

USE="-gnome -kde -qt4 -minimal gtk dvd alsa cdr dbus X udev session lock jpeg startup-notification thunar policykit udisks"
然后安裝所需軟件
root# emerge --ask x11-base/xorg-x11
root# env-update && source /etc/profile 
其他配置請參考gentoo-Xorg官方文檔
 

可選操作:安裝Xfce4桌面環境

首先,確定你已經安裝Xorg 如果沒有的話那么本指南下面的步驟可能無法正常工作。
接着,請反復檢查 /etc/portage/make.conf 文件里的 USE 標記;多數用戶需要設置下面的 USE flags:

USE="-gnome -kde -minimal -qt4 dbus jpeg lock session startup-notification thunar udev X"
接下來進行安裝
root# emerge --ask xfce-base/xfce4-meta
如果需要,把系統上的一般用戶(們)加到cdrom,cdrw 和 usb 組里,這樣他/她們便能掛載和使用照相機、光驅和U盤等之類的設備。
root# for x in cdrom cdrw usb ; do gpasswd -a username $x ; done
更新系統環境變量
root# env-update && source /etc/profile
安裝額外軟件
root# emerge --ask x11-terms/xfce4-terminal
配置啟動xfce
root# echo "exec startxfce4" > ~/.xinitrc
root# startx
其他配置請參考 gentoo-Xfce官方文檔
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM