精华内容
下载资源
问答
  • Gentoo安装教程(Systemd+Gnome) 准备! _1、一台能上网的电脑 2、一个能用的U盘(建议8G以上,安装livecd) 3、有条件的可以再准备一台电脑用于后续安装(ssh比较方便) 4、基本能看懂点英文,毕竟安装过程中遇到...

    准备!

    _1、一台能上网的电脑

    2、一个能用的U盘(建议8G以上,安装livecd)

    3、有条件的可以再准备一台电脑用于后续安装(ssh比较方便)

    4、基本能看懂点英文,毕竟安装过程中遇到的错误需要自己解决。_

    开始了,开始了
    == 本文主要是做一个记录,相当于小笔记吧,图片很少,这是装完后写的==

    一、使用Windwos刻录livecd(随便一款你知道的linux发行版,可以不安装就可以体验的那种就行,我用的是Ubuntu16.04)

    二、使用U盘启动进入Livecd(Ubuntu进去首先设置root密码,然后对硬盘分区)

    分区我是用Ubuntu自带的gparted,很好用的一个图形化磁盘分区工具
    sda1 —/boot—>vfat >=200M #注意分区设置flags为esp(我是安装在win10所在的ESP分区,在M.2硬盘上,也就是nvm1n1p1(具体忘了),800M)
    sda2 —/--->ext4,btrfs,xfs,jfs.etc >=20G #建议至少20G大小
    sda3 —swap—> >=2G #除非你16G内存,即使你8G内存也建议设置2G的swap

    创建目录
    mkdir -v /mnt/gentoo
    挂载目录:
    mount -v /dev/sda2 /mnt/gentoo
    如有单独的/home、/var等分区,则创造相应的文件夹(记住,先挂载根目录后再创建,然后挂载,不然会消失)
    mkdir -v /mnt/gentoo/home
    mkdir -v /mnt/gentoo/var
    mount -v /dev/sda3 /mnt/gentoo/home
    mount -v /dev/sda4 /mnt/gentoo/var

    三、选择并下载一个选择一个stage包(这里选择带有Systemd的stage包)

    在这里列出几个速度比较快的镜像站
    USTC
    TUNA
    **例如:stage3-amd64-systemd-20210124T214504Z.tar.xz **
    下载到本地的/mnt/gentoo目录
    下载完成之后进入gentoo的根目录并解压文件:
    tar -xvJf stage3-amd64-systemd-20210124T214504Z.tar.xz (tar -xvJ(大写)f)

    配置make.conf和Portage Mirror
    开始对于gentoo不了解的建议使用默认配置,不必改太多,反而有时会出现意外错误
    make.conf配置
    #GCC
    CFLAGS="-march=haswell -O2 -pipe"(cpu架构,可以在gentoo官网查询)
    CXXFLAGS="${CFLAGS}"
    CHOST=“x86_64-pc-linux-gnu”
    MAKEOPTS="-j12"(cpu线程数)

    # Portage
    PORTDIR="/usr/portage"
    DISTDIR="${PORTDIR}/distfiles"
    PKGDIR="${PORTDIR}/packages"
    GENTOO_MIRRORS="https://mirrors.tuna.tsinghua.edu.cn/gentoo/"
    
    ACCEPT_LICENSE="*"(许可证)
    

    Portage Mirror: 这个不是make.conf的选项.mkdir /mnt/gentoo/etc/portage/repos.conf创建repos.conf目录并添加如下到/mnt/gentoo/etc/portage/repos.conf/gentoo.conf文件里面(自行选择速度最快的镜像站):
    [gentoo]
    location = /usr/portage
    sync-type = rsync
    sync-uri = rsync://mirrors.tuna.tsinghua.edu.cn/gentoo-portage/
    auto-sync = yes

    四、进入chroot环境

    == 复制DNS信息==
    在进行新环境之前,还有一件要做的事情就是复制/etc/resolv.conf中的DNS信息。需要完成这个来确保即使进入到新环境后网络仍然可以使用。/etc/resolv.conf包含着当前网络中的DNS服务器。
    要复制这个信息,建议通过cp命令的 --dereference 选项。这可以保障如果/etc/resolv.conf是一个符号链接的话,复制的是那个目标文件而不是这个符号文件自己。否则在新环境中,符号文件将指向一个不存在的文件(因为链接目标非常可能不会在新环境中)。
    == cp --dereference /etc/resolv.conf /mnt/gentoo/etc/ ==
    挂载必要的文件系统
    需要提供的文件系统是:
    /proc/ 一个pseudo文件系统(看起来像是常规文件,事实上却是实时生成的),由Linux内核暴露的一些环境信息
    /sys/ 一个pseudo文件系统,像要被取代的/proc/一样,比/proc/更加有结构
    /dev/ 是一个包含全部设备文件的常规文件系统,一部分由Linux设备管理器(通常是udev)管理
    /proc/位置将要挂载到/mnt/gentoo/proc/,而其它的两个都是绑定挂载。字面上的意思是,例如/mnt/gentoo/sys/事 实上就是/sys/(它只是同一个文件系统的第二个条目点),而/mnt/gentoo/proc/是(可以说是)文件系统的一个新 的挂载。
    ==
    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支持时所需要的。

    Debian等发行版可能需要:
    test -L /dev/shm && rm /dev/shm && mkdir /dev/shm
    mount --types tmpfs --options nosuid,nodev,noexec shm /dev/shm
    chmod 1777 /dev/shm
    

    进入Chroot:
    chroot /mnt/gentoo /bin/bash
    source /etc/profile
    export PS1="(chroot) ${PS1}"
    挂载 boot 分区
    mount /dev/sda1 /boot

    ==
    选择Profile并更新系统
    使用快照更新Portage:(可以跳过)==
    emerge-webrsync
    ==
    使用rsync同步:==
    emerge --sync

    使用eselect news read命令阅读新闻
    
    选择合适的配置文件
    使用eselect,你能看到当前系统正在使用什么配置文件,现在来使用profile模块:
    

    eselect profile list
    这里我们安装带systemd的,所以选择带有systemd的那一项(这里暂时不选带Desktop Gnome的会出错,具体原因没深究,未知)
    eselect profile set x(x代表序号

    更新@world集合
    emerge --ask --verbose --update --deep --newuse @world (时间很长,可以选择睡觉,看电影,玩了)(如果选择了桌面环境配置文件,则此过程可能大大增加安装过程所需的时间量。 时间紧迫的人可以通过这个“经验法则”工作: 配置文件名称越短,系统的特定属性越少@world set; @world设置的特定性越低,系统将需要的软件包越少)

    如果碰到未满足的xxx或者其它提示:
    etc-update # 然后输入-3就能更新配置,确保再次运行时没有可更新的文件

    五、配置时区和地区

    **
    echo “Asia/Shanghai” > /etc/timezone
    emerge --config sys-libs/timezone-data
    echo “en_US.UTF-8 UTF-8
    zh_CN.UTF-8 UTF-8” >> /etc/locale.gen
    locale-gen
    eselect locale list
    配置fstab,安装文件系统工具(使用genfstab
    下载好了移动至gentoo根目录
    chmod +x genfstab
    ./genfstab / > /etc/fstab
    nano /etc/fstab #检查下此文件
    **
    上面的脚本在chroot环境下不能正常使用-U参数在fstab写入分区的UUID
    挂载点主要有俩种格式:
    /dev/sda1 /boot vfat或ext2 defaults 0 0
    /dev/sda2 / ext4或btrfs,jfs,xfs.etc defaults 0 0
    /dev/sda3 none swap defaults 0 0
    这里的UUID通过blkid查看
    UUID=xxxxxxxxxxx /boot vfat或ext2 defaults 0 0
    UUID=xxxxxxxxxxx / ext4或btrfs,jfs,xfs.etc defaults 0 0
    UUID=xxxxxxxxxxx none swap defaults 0 0

    安装NetworkManager(很好的一个网络管理工具,简单、方便、无繁琐的配置)
    **
    emerge -av networkmanager
    systemd添加开机服务:
    systemctl enable NetworkManager
    **

    安装源码

    emerge --ask sys-kernel/gentoo-sources
    emerge --ask sys-kernel/linux-firmware(很重要的一个东西,驱动包,不安装无法进入系统)
    
    手动配置
    cd /usr/src/linux
    make menuconfig
    make -jX #将X替换为你想编译时的线程数
    make modules_install
    make install
    建议使用genkernel后期再根据需求更改内核设置
    emerge -av genkernel
    genkernel --menuconfig all
    genkernel --install initramfs
    

    安装GRUB并创建用户

    如果你是UEFI:
    grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=Gentoo
    grub-mkconfig -o /boot/grub/grub.cfg
    

    创建一个管理员并设置密码:
    使用passwd命令设置root密码
    useradd -m -G users,wheel,portage,usb,video 这里换成你的用户名(小写)
    passwd 用户名

    可以重启进入系统了,安装桌面环境的后面再写吧,累了

    展开全文
  • gentoolinux安装教程

    2008-02-02 12:04:17
    gentoolinux安装教程
  • Gentoo虚拟机安装教程

    千次阅读 2020-02-24 23:26:06
    Gentoo是一个非常著名...本文参考了Gentoo 安装手册,如果想了解更多关于安装Gentoo的知识,可以直接查看官方文档。 当然有一说一,Gentoo安装确实比Arch复杂多了。Arch其实安装起来并不算复杂,就是第一次操作命...

    Gentoo是一个非常著名的发行版,在Linux高手中非常流行。之前我也是被Gentoo的威名震慑了,所以一直没有尝试安装,最近感觉可以尝试一下了。所以今天来看看如何在虚拟机中安装Gentoo吧。本文参考了Gentoo 安装手册,如果想了解更多关于安装Gentoo的知识,可以直接查看官方文档。

    当然有一说一,Gentoo的安装确实比Arch复杂多了。Arch其实安装起来并不算复杂,就是第一次操作命令行不熟悉,而Gentoo相比之下复杂多了,感觉难度是Arch安装5倍不止。特别是配置内核这一项的复杂程度,可能就顶了Arch整个安装的复杂度。

    准备工作

    下载镜像

    首先到Gentoo官网下载所需的网络安装镜像,和Arch一样,Gentoo没有提供完整安装包,只有一个网络安装镜像。当然硬要说的话,Gentoo还是有完整镜像的,不过这个镜像已经三四年没有更新了,所以我们完全不用管它。

    下载网络安装镜像

    启动虚拟机

    首先新建虚拟机的过程就不说了,我选择的CPU是2核,内存2G,硬盘空间32G,启动方式EFI。除了启动方式必须设置成EFI以外,其他设置全部按大家实际情况来就行了。设置好之后用网络镜像启动虚拟机,应该会看到如图所示的界面。

    启动界面

    非常有趣的一点就是Gentoo的Live环境了,它虽然是命令行终端,但是却非常神奇的支持鼠标操作,。鼠标拖动选择文本等操作全部支持,真的是让人惊叹。

    进入Live界面

    开启SSH

    虽然虚拟机是可以支持剪贴板复制等操作的,但是在系统安装过程中是没办法支持的。所以接下来要输入的大量命令会让人感到十分困扰。所以为了方便最好开启SSH,这样我们好歹大部分命令可以直接复制粘贴。

    rc-service sshd start
    

    默认root密码为空,为了能够SSH,还有手动设置一下root密码。

    passwd
    

    开启成功之后,输入ip a命令查看一下虚拟机的IP,然后我们就可以SSH到虚拟机内部了。
    查看IP地址

    这样一来就不需要手打命令了。当然并不是说所有命令都能无脑复制粘贴,有些地方还是需要根据自己需求进行修改的。使用SSH还有一个好处就是在下面配置区域的时候,如果你只指定了中文区域,在终端中汉字会显示成方块,但是在SSH中可以正常显示。如果你准备直接在终端中输入命令的话,记得同时启用英文区域。

    成功登录

    安装Stage3文件

    磁盘分区

    当然,因为是虚拟机安装,所以烧录镜像、配置网络等复杂步骤不需要进行,我们直接从磁盘分区开始。因为我是EFI方式启动,所以要分两个区,ESP以及根分区。

    parted /dev/sda mklabel gpt
    parted /dev/sda mkpart efi fat32 0% 512M
    parted /dev/sda mkpart root ext4 512M 100%
    parted /dev/sda set 1 esp on
    
    # 格式化分区
    mkfs.fat -F32 /dev/sda1
    mkfs.ext4 /dev/sda2
    

    最后将根目录分区挂载为/mnt/gentoo,就可以进行下一步的工作了。

    mount /dev/sda2 /mnt/gentoo
    

    安装Stage3

    这里简单按我的理解介绍一下Gentoo的包,详细信息请参考关于Stage Tarball的官方文档,简单说来可以分为Stage 1/2/3/4四个类型:Stage 1可以简单理解成源代码的包;Stage 2同样包含了Stage 1的所有文件,但是同时还包含了Stage 1编译出来的文件,也就说是Stage 2是自包含的包(自己可以编译出自己);Stage 3则是包含了系统必备工具的集合,也就是我们这里要安装的系统基础组件(不包括内核和引导器);Stage 4除了Stage 3的文件之外,还包含了内核和系统引导器,所以Stage 4就是一个可运行的包。这里我们要学习如何安装Gentoo,所以选择下载Stage 3就可以了,Stage 4主要是用于虚拟机快速运行之类的。

    我们到清华镜像寻找最新的Stage 3的包,可以看到这里有很多文件,x32的我们不需要,带nomultilib的也不需要,iso的也不需要。我们要找的就是tar.xz格式的归档文件,除了包以外,还有三个附加文件分别包含了归档包的内容信息(CONTENTS)、校验信息(DIGESTS)以及加密的校验信息(DIGESTS.asc)。我们要把文件和三个校验文件全部下载下来。

    寻找Stage 3包

    下载命令如下,当然在下载之前,必须将工作目录切换到/mnt/gentoo也就是我们的根目录下,这样做的目的很简单,因为一会要将系统文件解压到根目录下。这里的下载链接是我目前复制出来的,假如大家以后看到本文的话,需要自己打开浏览器重新复制一下文件下载链接。

    # 必须先切换到/mnt/gentoo
    cd /mnt/gentoo
    
    wget https://mirrors.tuna.tsinghua.edu.cn/gentoo/releases/amd64/autobuilds/current-stage3-amd64/stage3-amd64-20200223T214502Z.tar.xz
    wget https://mirrors.tuna.tsinghua.edu.cn/gentoo/releases/amd64/autobuilds/current-stage3-amd64/stage3-amd64-20200223T214502Z.tar.xz.CONTENTS
    wget https://mirrors.tuna.tsinghua.edu.cn/gentoo/releases/amd64/autobuilds/current-stage3-amd64/stage3-amd64-20200223T214502Z.tar.xz.DIGESTS
    wget https://mirrors.tuna.tsinghua.edu.cn/gentoo/releases/amd64/autobuilds/current-stage3-amd64/stage3-amd64-20200223T214502Z.tar.xz.DIGESTS.asc
    

    如果条件不允许,还可以使用另外一种方式避免手动输入这么一大长串链接。这就是利用文本浏览器link来上网并下载文件,光标选择,回车点击超链接,d开始下载,q退出浏览器。我们要做的就是用文本浏览器访问清华镜像网站,然后下载文件。

    links https://mirrors.tuna.tsinghua.edu.cn/gentoo/
    

    文本浏览器界面如下,使用起来也不算麻烦,将文件本体以及三个校验文件全部下载下来。

    使用文本浏览器下载

    然后用下面的命令来校验文件。

    sha512sum -c stage3-amd64-*.tar.xz.DIGESTS
    

    文件正确的话,应该会显示两个OK两个FIALED。失败的是另一种校验算法,只要有两个OK,就说明我们下载的文件是正确无误的。

    校验文件

    最后用下面命令来解压文件,后面的两个选项的作用是保留归档文件中所有文件正确的权限和命名空间关系。这样Gentoo的Stage3文件就算安装完成了。

    tar xpvf stage3-*.tar.xz --xattrs-include='*.*' --numeric-owner
    

    配置基本系统

    设置编译选项

    Gentoo是一个源代码发行版,安装大多数软件的时候,其实都是安装的源代码,然后在本地编译的。为了能够更快更好的编译软件,还需要配置一下portage的编译选项。

    # 编辑配置文件
    nano /mnt/gentoo/etc/portage/make.conf
    
    # 修改COMMAN_FLAGS
    COMMON_FLAGS="-march=native -O2 -pipe"
    CFLAGS="${COMMON_FLAGS}"
    CXXFLAGS="${COMMON_FLAGS}"
    FCFLAGS="${COMMON_FLAGS}"
    FFLAGS="${COMMON_FLAGS}"
    
    # 添加MAKEOPTS,数字改成虚拟机设置的总内核数+1
    MAKEOPTS="-j5"
    

    设置镜像源

    用下面的命令设置镜像源,推荐选择清华大学镜像源,按空格选中,然后回车确认。设置成功后,应该可以在文件最后面看到清华大学的镜像源。

    mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf
    
    # 或者你懒得选择,直接把清华镜像源加到配置文件后面也可以
    echo 'GENTOO_MIRRORS="https://mirrors.tuna.tsinghua.edu.cn/gentoo"' >> /mnt/gentoo/etc/portage/make.conf
    

    然后创建Portage配置文件目录,并将Gentoo安装镜像里的配置文件复制给我们的系统。

    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信息,这里--dereference参数是必须的,不然可能复制到的只是一个链接而已。

    cp --dereference /etc/resolv.conf /mnt/gentoo/etc/
    

    挂载必要的文件系统

    为了让新系统能够正常运行,需要挂载以下文件系统。

    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
    

    切换进入新环境

    用下面的命令切换到新的环境中,最后一条命令不是必须的,但是它会在命令提示符前面添加一个(chroot)提示我们处在新环境中。

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

    挂载boot分区

    这里很多发行版都使用了不同的挂载点,最常用的挂载点是/boot/efi,ArchWiki里推荐使用/efi,而这里Gentoo文档中介绍的是使用/boot,我们按照文档走就可以了。

    mount /dev/sda1 /boot
    

    配置Portage

    Portage是Gentoo的软件包管理器,首先我们从网络上下载数据库快照。

    emerge-webrsync
    

    然后选择列出可用的profile,从中选择一个。这里又用到了另外一个工具eselect,它是Gentoo的通用管理界面,让我们方便的完成系统的各种配置和操作。因为Gentoo安装比较复杂,而且又是编译安装,所以这里选择其他profile的话,可能编译时间会非常长。因此这里大家看看就好,保持默认即可。

    # 先列出可用的profile,带星号是目前选择的
    eselect profile list
    # 假如你想选择的话
    eselect profile set 2
    

    下面是我的profile输出。
    查看profile

    更新@world set

    @world集合是Gentoo所有软件和配置的集合,要进行下一步的安装和配置,必须先更新@world集合。

    emerge --ask --verbose --update --deep --newuse @world
    

    配置USE环境变量

    作为一个源代码编译的Linux发行版,Gentoo的很多软件包并不是直接安装二进制版本,而是下载源代码由用户选择编译。USE环境变量就是Gentoo提供给用户的一个工具,利用它可以指定一些环境变量,在编译的时候启用或者禁用某些功能。假如我现在要安装的是Gnome桌面,就可以禁用Qt的编译选项,这样编译出来的软件就不包含Qt的功能,软件包更加小巧,运行起来也会更快一点。

    当然新手用户就没有必要更改这些高级选项了,默认的就完全够用了。如果你想要看看USE变量里面有什么东西的话,可以用下面的命令。

    emerge --info | grep ^USE
    

    如果想查看USE变量里面所有可用的选项,可以用下面的命令。

    less /var/db/repos/gentoo/profiles/use.desc
    

    配置时间和区域

    首先要配置时区。

    echo Asia/Shanghai > /etc/timezone
    emerge --config sys-libs/timezone-data
    

    然后配置区域。

    echo 'zh_CN.UTF-8 UTF-8' >> /etc/locale.gen
    # 如果你不用SSH,需要添加英文区域
    echo 'en_US.UTF-8 UTF-8' >> /etc/locale.gen
    locale-gen
    
    # 列出可用的区域
    eselect locale list
    # 选择中文区域的编号
    eselect locale set 2
    

    最后重新加载一下环境变量。注意一下上面的设置,如果你是SSH到虚拟机系统的话,可以放心配置中文区域,但是如果你是直接在虚拟机终端里操作的话,需要在eselect locale set那里选择英文区域,不然汉字是无法正确显示的。

    env-update && source /etc/profile && export PS1="(chroot) ${PS1}"
    

    安装和配置内核

    官方文档这里详细介绍了如何配置和优化内核,开启必须的功能,关闭不必要的功能。虽然对于初学者来说貌似这是很高深的知识,但是如果你照着做的话,会发现配置内核也不是这么困难的工作。当然如果你还是有点心虚的话,Gentoo也可以自动配置内核。

    首先安装内核源代码和内核编译工具。因为Gentoo的安装是在本地编译的,所以用时比较长。假如你发现安装瞬间完成,是因为没有更新配置文件的原因。需要输入etc-update并选择-3自动更新配置文件,然后重新输入命令即可编译安装。

    emerge --ask sys-kernel/gentoo-sources
    emerge --ask sys-kernel/genkernel
    

    配置fstab

    fstab是一个很重要的文件,在系统启动的时候,会读取fstab文件并挂载fstab中记录的分区。这里我们有boot分区和根目录分区两个要挂载的分区。而genkernel工具要安装内核的话,自然需要知道我们的启动分区在哪里,因此首先要配置fstab文件。

    首先用lsblk -f命令查看分区信息,要注意UUID和标签。另外要注意如果重新分区或者格式化,这些信息就会发生变化。

    知道了标签和UUID,就可以填写fstab信息了,虽然也可以用/dev/sda1这样的块设备名称,但是不够安全。所以我们用UUID来编写fstab。第一个是分区名,推荐使用标签或者UUID;第二个是挂载点,也就是分区挂载的位置;第三个是分区的文件系统类型;第四个是挂载选项;第五个dump参数,默认0即可;第六个pass参数,对于根分区要设置成1,其他分区设置成2。最后fstab应该类似这样。当然UUID或者标签应该改成你自己实际的值。你的fstab文件应该类似下面这样。

    UUID=1f3f0313-cfc3-47d3-90e3-52c6d1b67757       /       ext4     noatime 0 1
    UUID=2E77-ED51          /boot           vfat    defaults,noatime                0 2
    

    手动配置内核

    在开始手动配置内核之前,我们需要了解硬件的各项信息,这需要安装另一个包来做到。

    emerge --ask sys-apps/pciutils
    

    在配置之前,还可以通过lsmod命令来查看当前所处的Gentoo Live镜像开启的功能, 这可以作为我们在配置内核时的重要参考。

    一切准备好之后,就可以切换到内核源代码目录并打开配置菜单。

    cd /usr/src/linux
    make menuconfig
    

    这样就会打开一个终端界面的图形化配置工具,和其他一些终端工具操作方法类似,光标键选择,空格选择,按两下Esc退回到上一个界面,/是搜索。
    内核配置工具界面

    必选配置

    有些内核选项是必须的,必须编译到内核中,而不是作为模块加载。*表示包括到内核中,M表示作为模块加载,[]只有包括到内核中和排除在外两种选项,<>则有包括到内核中、排除在外和以模块加载三种选项。下面这些选项都必须以*方式编译到内核中。

    devtmpfs支持。

    Device Drivers --->
      Generic Driver Options --->
        [*] Maintain a devtmpfs filesystem to mount at /dev
        [*]   Automount devtmpfs at /dev, after the kernel mounted the rootfs
    

    SCSI磁盘支持。

    Device Drivers --->
       SCSI device support  --->
          <*> SCSI disk support
    

    选择支持的文件系统。因为前面我用的FAT32格式化的ESP,EXT4格式化的根目录,所以这里这两项(FAT32也就是VFAT)必须包括到内核中,虚拟内存和proc文件系统也是必选的。其实这里还可以取消掉不需要的文件系统,但是对于新手我不建议取消任何自己不明白的东西,很容易弄的最后内核没办法启动。

    File systems --->
      < > Second extended fs support
      < > The Extended 3 (ext3) filesystem
      <*> The Extended 4 (ext4) filesystem
      < > Reiserfs support
      < > JFS filesystem support
      < > XFS filesystem support
      < > Btrfs filesystem support
      DOS/FAT/NT Filesystems  --->
        <*> MSDOS fs support
        <*> VFAT (Windows-95) fs support
     
    Pseudo Filesystems --->
        [*] /proc file system support
        [*] Tmpfs virtual memory file system support (former shm fs)
    

    假如你使用PPPoE拨号的话,还需要启用以下功能。但是因为我们是虚拟机嘛,所以就不用动下面的设置了。

    Device Drivers --->
      Network device support --->
        <*> PPP (point-to-point protocol) support
        <*>   PPP support for async serial ports
        <*>   PPP support for sync tty ports
    

    如果你的处理器是多核的,还需要开启SMP(对称多处理器支持)。

    Processor type and features  --->
      [*] Symmetric multi-processing support
    

    就算是虚拟机,也经常遇到使用USB的情况,所以USB也必须启用。

    Device Drivers --->
      HID support  --->
        -*- HID bus support
        <*>   Generic HID driver
        [*]   Battery level reporting for HID devices
          USB HID support  --->
            <*> USB HID transport layer
      [*] USB support  --->
        <*>     xHCI HCD (USB 3.0) support
        <*>     EHCI HCD (USB 2.0) support
        <*>     OHCI HCD (USB 1.1) support
    

    系统体系相关的内核配置

    因为我们选择了multlib,所以32和64位的程序都会安装。为了支持32位程序,必须启用32位程序模拟功能。这里其实倒是不用怎么改,默认已经都选上了。

    Processor type and features  --->
       [*] Machine Check / overheating reporting 
       [*]   Intel MCE Features
       [*]   AMD MCE Features
       Processor family (AMD-Opteron/Athlon64)  --->
          ( ) Opteron/Athlon64/Hammer/K8
          ( ) Intel P4 / older Netburst based Xeon
          ( ) Core 2/newer Xeon
          ( ) Intel Atom
          (*) Generic-x86-64
    Binary Emulations  --->
       [*] IA32 Emulation
    

    启用GPT支持,因为前面我用的GPT分区表,EFI启动方式,所以这两项也必须启用。

    -*- Enable the block layer --->
       Partition Types --->
          [*] Advanced partition selection
          [*] EFI GUID Partition support
    

    EFI的支持。

    Processor type and features  --->
        [*] EFI runtime service support 
        [*]   EFI stub support
        [*]     EFI mixed-mode support
     
    Firmware Drivers  --->
        EFI (Extensible Firmware Interface) Support  --->
            <*> EFI Variable Support via sysfs
    

    虚拟机相关内核配置

    这里我用的是VMware,所以下列内核选项也必须选择。某些选项依赖其它选项,使用搜索功能查看具体的依赖项,然后依次启用。

    [*] Networking support  --->
            Networking options  --->
                <*> Virtual Socket protocol
                <*>   VMware VMCI transport for Virtual Sockets 
        Device Drivers  --->
                Misc devices  --->
                    <*> VMware Balloon Driver
                    <*> VMware VMCI Driver
                SCSI device support  --->
                    [*] SCSI low-level drivers  --->
                       <*>   VMware PVSCSI driver support
            [*] Network device support  --->
                    [*]   Ethernet driver support  --->
                        [*]   AMD devices
                        <*>     AMD 8111 (new PCI LANCE) support
                        <*>     AMD PCnet32 PCI support
                        [*]   Intel devices
                        <*>     Intel(R) PRO/1000 Gigabit Ethernet support
                        <*>     Intel(R) PRO/1000 PCI-Express Gigabit Ethernet support 
                    <*>   VMware VMXNET3 ethernet driver
                Input device support  --->
                    [*]   Keyboards  --->
                        <*>   AT keyboard
        File systems  --->
            <*> FUSE (Filesystem in Userspace) support
    

    把上面所有必选项都配置好之后,选择save保存配置文件,然后exit退出。默认配置文件名是.config,但是最好手动复制一个备份,有时候默认名称的配置文件会莫名丢失,只能重头再配置一次。然后就可以开始编译和安装了。这个过程可能持续十分钟到几个小时,主要取决于你选择的功能大小以及电脑配置。

    # 编译内核
    make && make modules_install
    # 编译完成后安装内核到boot分区
    make install
    

    自动编译内核

    如果你感觉手动配置内核比较麻烦,或者辛辛苦苦配了半天,结果内核没配对系统进不去了。可以考虑第二种方式,就是自动编译内核。这种方式有个缺点就是会开启大部分选项,所以编译内核用时比较长。

    网上查了一下可能需要几十分钟到两三个小时,在虚拟机中编译的话可能用时更长,但是考虑到自己研究如何把内核跑通可能也得用这么长时间,所以自动编译内核也不是不可以。假如你在手动配置内核的时候遭受了很多失败,不妨考虑考虑电脑挂在那里让它慢慢编译。

    genkernel all
    

    安装firmware和initrampfs

    虽然官方文档说这是可选的,但是为了保险起见我们还是安装firmware。

    emerge --ask sys-kernel/linux-firmware
    

    别忘了安装initramfs,如果你是自动编译内核的话,可以不用安装initramfs,因为genkernel all会自动安装内核以及initramfs。

    genkernel --install initramfs
    

    内核编译完毕之后,查看/boot分区内容,应该会看到initramfs和vmlinuz文件,这样内核就准备就绪了。

    配置系统

    接下来就是一些系统配置工作。

    网络配置

    设置主机名

    nano -w /etc/conf.d/hostname
    # 设置主机名
    hostname="mygentoo"
    

    配置网络

    先安装软件包。

    emerge --ask --noreplace net-misc/netifrc
    

    然后配置DHCP。

    nano -w /etc/conf.d/net
    
    # 添加DHCP配置
    config_eth0="dhcp"
    

    配置网络自启动。

    cd /etc/init.d
    ln -s net.lo net.eth0
    rc-update add net.eth0 default
    

    等到成功进入系统以后,可能会出现没网的情况,因为默认的网络接口名字不一定是eth0,这时候需要使用ip a查看一下实际的名称,然后重新编辑一下网络配置。

    # 添加正确的网络配置
    cd /etc/init.d
    ln -s net.lo net.eno16777736
    rc-update add net.16777736 default
    
    # 删除错误的配置
    rm /etc/init.d/net.eth0
    rc-update del net.eth0 default
    # 启动网络
    rc-service net.16777736 start
    

    实际网络接口名

    设置root密码

    别忘了设置root密码。

    passwd
    

    安装工具

    还有一些系统工具也需要安装。

    日志工具

    安装和启动日志工具。

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

    远程登录

    因为前面设置了中文区域,所以终端会显示方块。最好这里直接预先开启SSH服务,方便以后远程登录。

    rc-update add sshd default
    

    文件系统工具

    因为系统使用了FAT32和EXT4两个文件系统,所以至少这两种工具必须安装。

    emerge --ask sys-fs/dosfstools sys-fs/e2fsprogs
    

    网络工具

    安装DHCP工具。

    emerge --ask net-misc/dhcpcd
    

    添加用户

    root用户是特权用户,日常使用并不安全,所以需要添加新用户。

    useradd -m -G users,wheel,audio -s /bin/bash yitian
    passwd yitian
    

    磁盘清理

    是不是想起来有些地方不对劲,没错,还有一开始下载的stage3文件,假如最后系统成功启动了的话,他们就没用了,可以安全的删除掉。

    rm /stage3-*.tar.*
    

    安装系统引导器

    最后一步就是安装系统引导器了,推荐使用grub,功能齐全。

    安装grub

    emerge --ask --verbose sys-boot/grub:2
    

    将grub安装到系统中

    grub-install --target=x86_64-efi --efi-directory=/boot
    grub-mkconfig -o /boot/grub/grub.cfg
    

    安装完毕之后,输入exit退出chroot环境。

    (chroot) livecd ~ # exit
    

    然后就umount分区,然后重启系统。

    cd
    umount -l /mnt/gentoo/dev{/shm,/pts,}
    umount -R /mnt/gentoo
    reboot
    

    系统成功启动好了吗?

    重启之后应该会看到grub的界面,但是别以为这就成功了。因为重点是手动配置编译的内核是否能够正常启动。所以接下来继续观察,看看是否可以成功启动内核进入系统。如果你一次性安装成功,那么恭喜了。

    但是我前后总共装了三四天才算成功。第一天照着官方文档慢慢看慢慢敲命令,第二天卡在了配置内核这一步了,然后前后反复测试,最后把前面的各种步骤弄得非常熟悉,可以直接复制粘贴命令。最后我放弃了手动配置内核,做好了编译大半天的准备,于是改用genkernel自动编译内核。然后最悲催的事情发生了,genkernel半个小时以后失败了。

    最后没办法我又开始了手动配置内核的步骤,终于慢慢靠着搜索把文档列出来的所有项都找到并配置好了。而且为了保险起见,这次我没有关闭任何默认内核配置,只按着文档把所有新的项加上去了。终于奇迹发生了,重启之后终于成功了!

    安装screenfetch截个图,做个纪念。

    emerge app-misc/screenfetch
    

    screenfetch

    故障排除

    block device is not a valid root device gentoo

    我一开始用的是XFS做根分区的文件系统,也确实在内核中将XFS相关选项设置为编译到内核中,但是奈何不知道哪里漏了,所以最后启动系统的时候,出现了这个错误。理论上找到所有XFS、驱动程序等相关选项,然后添加到内核配置中重新编译一下内核,就可以解决问题了。可惜的是我对内核配置一窍不通,百般之下只好认栽,重新用EXT4安装了一遍,终于成功了。

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,552
精华内容 620
关键字:

gentoo安装教程