zoukankan      html  css  js  c++  java
  • gentoo 安装

    加载完光驱后

    1进行ping命令查看网络是否通畅

    2设置硬盘的标识为GPT(主要用于64位且启动模式为UEFI,还有一个是MBR,主要用于32位且启动模式为bois)

      parted -a optimal /dev/sda

      (parted)print     命令查看是否有除了sda其他分区 如果有则删除 (parted)rm 2(2为分区的编号,有其他的也需要一并删除)

      (parted)mklabel gpt  此操作会清除掉所有分区上的所有数据 如果是MBR 则使用命令mklabel msdos(此命令创建的主分区最多为4个)

    3继续上步的命令,来进行分区。分区的时候只需要告诉parted三条信息,分区的类型,分区的开始位置,分区的结束位置
       首先我们先创建GRUB2分区,该分区主要为了兼容不同的分区差异(mbr和gpt),又因为很小。所以还是建一下
      (parted)unit mib  告诉parted制定长度的单位为兆
      (parted)mkpart primary 1 3  从硬盘的第1M地址到第3M的地址
      (parted)name 1 grub       命名为grub
      (parted)set 1 bios_grub on  设置flags为bios_grub
      (parted)print           查看修改后的信息

      然后创建boot引导分区 128M

      (parted)mkpart primary 3 131
      (parted)name 2 boot
      swap分区 休眠或计算机内存不够用的时候存放的分区 512M(最好大于你机器上的内存)
      (parted)mkpart primary 131 643
      (parted)name 3 swap
      根分区,剩下的所有
      (parted)mkpart primary 643 -1
      (parted)name 4 rootfs

      如果用的是UEFI去引导的分区 需要标识下boot分区为EFI(通常64位机器上都是UEFI)

      (parted)set 2 boot on

      quit 退出

      这个时候后我们看ls /dev/sda* 就会出来五个结果

    4分区已经建好了,下面一步需要在分区上挂文件类型

      btrfs  功能强大但是不稳定

      ext2  启动慢且没有文件日志系统

      ext3  文件日志系统增强,可靠

      ext4  推荐的通用所有平台文件系统

      f2fs   被外界认为不成熟  但是在gentoo的usb、microSD 卡和其他基于闪存的存储来说是个不错的选择

      JFS   IBM的高性能日志记录文件系统

       ReiserFS  处理许多小文件的成本小,比其他文件系统维护成本大

      XFS   对硬件问题的兼容性较小

      vfat 不支持任何权限设置。它主要是用于与其他操作系统的互操作性(主要是Microsoft Windows)但也是必需的一些系统固件(如UEFI)。

      NTFS 只用于与微软Windows系统的互操作性

       当我们使用ext2, ext3, ext4 的文件系统用在一个小于8G的分区上时,我们得设置增加一个计算节点数量计算的选项

      ex2时 使用root #mkfs.ext2 -T small /dev/<device>

      ex3或ex4时 使用root #mkfs.ext2 -j -T small /dev/<device>

      这通常会生成四倍的节点量(从16kb到4kb)可通过root #mkfs.ext2 -i <ratio> /dev/<device>调节比例

     

      我们这里使用ext4和ext2

      处理文件系统的工具 sys-fs/e2fsprogs已经存在于系统设置中,因此我们一句命令即可解决

      root #mkfs.ext2 /dev/sda2  将boot引导为sda2

      然后可以看到我们的节点的信息变为31232,算下来122M,这就是当时我们建的128M,然后4k一个节点

      root #mkfs.ext4 /dev/sda4  将root设置为sda4

      接下来初始化swap交换空间 root #mkswap /dev/sda3  然后激活交换空间  root #swapon /dev/sda3

      分区和文件类型都已经搞好了,接下来就是挂载到目录上去

      root #mount /dev/sda4 /mnt/gentoo 

      挂载boot引导分区的时候,我们要创建一个挂载目录

      root #mkdir /mnt/gentoo/boot
      root #mount /dev/sda2 /mnt/gentoo/boot
      如果/tmp/目录需要一个单独的分区,挂载之后需要修改其权限  root #chmod 1777 /mnt/gentoo/tmp
    5、设置时间   
      root #date 121513162016  表示2016年12月15号13点16分
      也可以链接时间服务器去获取时间 root #ntpd -q -g  时区设置在下面给出
    6、gentoo提供了两种方法去安装,一种是直接下载安装stage3,还有一种是从stage1、stage2、stage3.第一种面向普通用户第二种面向他们自己的发布工程团队。stage1是设置个性化的c编译器和库函数;stage2是系统布局的自定义;stage3是编译内核。这里我们用第一种
      下载安装镜像 stage3 原始码
      如果需要代理  则需要定义 root #export http_proxy="http://proxy.server.com:port"   root #export ftp_proxy="http://proxy.server.com:port"
      先进入root #cd /mnt/gentoo目录
      然后我们用root #links https://www.gentoo.org/downloads/mirrors/  去浏览下载  如果有代理则root #links -http-proxy proxy.server.com:8080 https://www.gentoo.org/downloads/mirrors/
      也可以用root #lynx https://www.gentoo.org/downloads/mirrors/ 但它不是菜单驱动的。
      链接后选择Mirrors,然后在下面出现的内容中选择CN(中国),选择一个http链接的,这里我们选择163的镜像源,进入releases/amd64/autobuilds/目录
      在里面选择current-install-amd64-minimal/stage3-amd64-20161208.tar.bz2 按D下载。
      按Q退出
      root #tar xvjpf stage3-*.tar.bz2 --xattrs  提取文件 x提取 v显示过程 j使用bzip2解压缩 p保存权限 f指定解压缩的是文件而非标准输入 --xattrs为了根据扩展的属性存储到对应的文件文档里
    7、配置修改
      root #nano -w /mnt/gentoo/etc/portage/make.conf  打开配置文件,影响Portage和GCC编译器
      他文件加下面通常会有个make.conf.exame示例来解释配置含义,可用文件搜索去查询文件位置
      通常被建议的配置为  CFLAGS="-march=native -O2 -pipe"
      # Use the same settings for both variables
      CXXFLAGS="${CFLAGS}"
    8、安装gentoo基础系统
      获取镜像途径1、portage会使用make.conf里的GENTOO_MIRRORS 变量来获取镜像列表。也可以使用mirrorselect工具root #mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf
            2、第二个获取镜像的途径是通过配置文件/etc/portage/repos.conf/gentoo.conf来获取gentoo仓库。首先创建文件夹root #mkdir /mnt/gentoo/etc/portage/repos.conf
                然后复制gentoo仓库的文件到这里root #cp /mnt/gentoo/usr/share/portage/config/repos.conf /mnt/gentoo/etc/portage/repos.conf/gentoo.conf

    复制dns配置到本地确保网络链接
      root #cp -L /etc/resolv.conf /mnt/gentoo/etc/
      因为环境改变,所有需要挂载一些必要的文件
      
    root #mount -t 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为了支持下面的安装
      
      更改根目录在新环境中
      root #chroot /mnt/gentoo /bin/bash 根目录改变从/改变到/mnt/gentoo
      root #source /etc/profile      将设置生效
      root #export PS1="(chroot) $PS1"   主提示符更改,为帮助我们记住这个会话在chroot环境中。
      现在所有的更改都在新的环境中去了
      
      配置Portage
      root #emerge-webrsync 安装Portage快照
      上面命令会更新Portage tree24小时外的快照,如果想更新时间近点的,可使用emerge --sync可获取更新一小时前的Portage tree
      更新完如果提示有需要更新的items,可使用
      
    root #eselect news list
      root #eselect news read
      
      选择配置文件安装
      root #eselect profile list 可用来查看配置文件列表

      为了使用纯净的64位环境,可使用no-multilib 配置项
    root #eselect profile set 11 (default/linux/amd64/13.0/no-multilib选项前缀数字) 这个会比较小,包比较少
      不过我选的时系统去判断选项root #eselect profile set default/linux/amd64/13.0/systemd   这个会比较大 包比较多
      root #emerge --ask --update --deep --newuse @world

      配置USE变量
      USE变量很有用,决定了程序编译哪些是支持的,哪些是不支持的。如gnome gtk -kde -qt4 编译项目的时候,用GNOME (and GTK) 支持,不支持KDE (and Qt) 
      配置的详细信息root #less /usr/portage/profiles/use.desc 按q退出
      如果你想修改USE,则用命令root #nano -w /etc/portage/make.conf
      如启用KDE-based系统,支持DVD, ALSA 和 CD 录音
      USE="-gtk -gnome qt4 kde dvd alsa cdr"(如果想要禁用所有缺省的选项,则-*)

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

      配置本地化
      root #nano -w /etc/locale.gen
        
    en_US  ISO-8859-1
        en_US.UTF-8  UTF-8
        zh_CN  GB18030
        zh_CN.GBK  GBK
        zh_CN.GB2312  GB2312
        zh_CN.UTF-8  UTF-8
      root #locale-gen 使其生效
      root #eselect locale list 查看环境列表
      root #eselect locale set 10 选择环境
      root #env-update && source /etc/profile && export PS1="(chroot) $PS1" 配置生效

    9、安装source
      安装Linux kernel
      root #emerge --ask sys-kernel/gentoo-sources
      root #ls -l /usr/src/linux 安装完后会有符号链接到linux内核中去
      然后开始编译安装linux内核 1、手动根据手册进行配置 2、利用genkernel自动编译安装 为了优化环境我们使用手动
      root #emerge --ask sys-apps/pciutils 合并相关帮助信息
      root #cd /usr/src/linux 进去内核目录
      root #make menuconfig   菜单模式查看 
      现在开始配置gentoo内核,配置内核有几个好处1,更加灵活2,内核更小3,更短的编译时间4,学习5,严重的无聊6,不少的内核配置知识7,完全控制
      大多数有三种选项,一种是什么都不创建,一种是创建内核目录,一种是创建模块。用户自己可以决定加载或不加载什么模块。
      创建在内核中需要固件支持,所以在内核的配置文件中要FW_LOADER=y和CONFIG_FIRMWARE_IN_KERNEL=y这两个或者菜单选项中
    Device Drivers  --->
       Generic Driver Options  --->
           -*- Userspace firmware loading support
           [*] Include in-kernel firmware blobs in kernel binary

      一般默认就是对的。

      SATA的支持在linux中是链接到libata的,在SCSI子系统下面。所以,SATA驱动在SCSI驱动配置文件选项下。系统的存储设备被当做SCSI的设备。 SCSI disk/cdrom的支持也是必须的。

      第一个SATA硬盘被标记为/dev/sda,第一个SATA CD/DVD驱动被标记为 /dev/sr0

    Device Drivers  --->
       SCSI device support  --->
          <*> SCSI device support     //我这边显示的是--*--
          <*> SCSI disk support
          <*> SCSI CDROM support
     
          [ ] SCSI low-level drivers  --->
     
       <*> Serial ATA and Parallel ATA drivers (libata)  --->

      tips:非标准的驱动放在Serial ATA and Parallel ATA drivers (libata)下的SCSI low-level drivers中

      USB的配置,xHCI支持usb3.0也兼容USB 1.0, 1.1, 2.0, 3.0     EHCI支持USB2.0  1.x的我们基本已经不使用了。
    Device Drivers  --->
       USB support  --->
          <*> Support for Host-side USB
          ---   USB Host Controller Drivers
          <*>   xHCI HCD (USB 3.0) support
          <*>   EHCI HCD (USB 2.0) support
          < >   OHCI HCD  (USB 1.1) support
          < >   UHCI HCD (most Intel and VIA) support

      多个处理器,超线程和多核系统的配置

    Processor type and features  --->
     [*] Symmetric multi-processing support
     [*]   SMT (Hyperthreading) scheduler support
     [*]   Multi-core scheduler support (NEW)
    Power management and ACPI options  --->
     [*] ACPI (Advanced Configuration and Power Interface) Support

      压缩内核模块

      首先我们得在USE配置里添加对压缩模块的支持,在USE(/etc/portage/make.conf)里添加

      USE后面加上“lzma tools zlib debug doc static-libs python3_5” 

      root #emerge --ask --oneshot --changed-use sys-apps/kmod 然后执行这条指令去开启model压缩,还需要选择一条压缩的

      root #cd /usr/src/linux

      root #make menuconfig

    Enable loadable module support --->
      [*]   Compress modules on installation
      Compression algorithm ()  --->
        <X> GZIP
            XZ

      内核的配置文件通常在/usr/src/linux/.config或者自动生成在 /proc/config.gz 文件中,但是首先得把这些配置文件关联到内核中去 

      首先输入命令make menuconfig,然后按/键搜索,搜索CONFIG_TMPFS_XATTR会显示很多信息

     Symbol: TMPFS_XATTR [=n]   代表内核配置入口是否可以被搜索得到,为n的时候,表明该设置未被启用
     Type: boolean        代表该搜索是一个布尔值 enabled disabled 
    Prompt: Tmpfs extended attributes make menuconfig入口里的文本,控制.config文件里的变量TMPFS_XATTR
    Depends on: TMPFS [=y]  
    CONFIG_TMPFS必须被启用才能看到这个,这里已经启用了,(所以[=y]),如果不是这样,请先启用CONFIG_TMPFS.
     Location: ...        make menuconfig 结构设置的位置,这个设置为了Tmpfs extended属性 
     Selected by: TMPFS_POSIX_ACL [=n] && TMPFS [=y]  如果两个选项都为y,CONFIG_TMPFS_XATTR会自动启用而不会停止启用
      
     有了上面的信息,可以较容易的翻译任何CONFIG_*文件,简单来说,每个用户必须
    1、启用Depends 
     2、导航到
    Location:对应的目录
    3、开关Prompt的值
     
     查看一些问题的命令
     root #uname -v 可以查看引导内核编译的时间
     ls -l /usr/src/linux/arch/i386/boot/bzImage 硬盘上的内核镜像最后一次编译的时间

     devtmpfs
    devtmpfs 的功用是在 Linux 核心 启动早期建立一个初步的 /dev,令一般启动程序不用等待 udev,缩短 GNU/Linux 的开机时间。
    Device Drivers --->
      Generic Driver Options --->
        [*] Maintain a devtmpfs filesystem to mount at /dev
        [ ]   Automount devtmpfs at /dev, after the kernel mounted the rootfs

      然后去文件系统,然后选择你使用的文件系统的支持。不要编译使用在root文件系统中充当module的文件系统。Gentoo系统无法挂载这个partition。

    File systems --->
    (Select one or more of the following options as needed by your system)
      <*> Second extended fs support
      <*> Ext3 journalling file system support
      <*> The Extended 4 (ext4) filesystem
      <*> Reiserfs support
      <*> JFS filesystem support
      <*> XFS filesystem support
      ...
      Pseudo Filesystems --->
        [*] /proc file system support
        [*] 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

      大多数系统有多核处理,所以对于支持Symmetric multi-processing也很重要。 

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

      在多核系统中,每个核心算作一个处理器。然后添加usb支持(如键盘和鼠标)

    Device Drivers --->
      [*] HID Devices  --->
        <*>   USB Human Interface Device (full HID) support

      

      因为我们分区用的是GPT模式,所以我们要启用GPT的支持 

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

    10、配置已经完成现在可以进行编译安装了

      root #make && make modules_install  //进行编译

      编译完成后,把进行复制到 /boot/中去

      root #make install   //复制镜像到boot中去,System.map文件和内核配置文件

    文件系统信息

      在Linux下,所有在系统中的分区都必须列出在/etc/fstab,该文件包含这些分区的挂载点,以及他们用哪些特殊的选项去挂载(自动与否,是否用户可以挂载他们)。

      创建fstab文件

      该文件里的数据每行有六个字段,用空格隔开,每个字段都有他们的意思。1、设备文件的路径 2、挂在点 3、分区所挂载的文件系统 4、挂载的时候使用的选项,逗号分割 5、分区在需要的时候是否可以被废弃 6,文件系统是否需要自检

      root #blkid 可以检查Labels和UUIDs

      root #nano -w /etc/conf.d/hostname   可以修改host文件

      root #nano -w /etc/conf.d/net   域名修改

      

    11、配置网络

      之前网络配置是为了在安装的时候配置的,现在我们需要在环境中去配置网络。

    所有网络的配置信息都聚集在/etc/conf.d/net。详细的解释在/usr/share/doc/netifrc-*/net.example.bz2中可以查看。

    首先安装gentoo网络接口netifrc

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

    默认使用DHCP,需要安装DHCP客户端。

    静态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"

    dhcp配置如下

    config_eth0="dhcp"

    在boot期间自动开启网络

    如果想要在boot阶段启用网络接口,需要在默认运行级别中添加

    root #cd /etc/init.d
    root #ln -s net.lo net.eth0
    root #rc-update add net.eth0 default
    如果有多个网络接口,需要像我们创建net.eth0一样去创建其他的net.*文件
    服务的启动停止配置文件
    root #nano -w /etc/rc.conf
    键盘配置文件
    root #nano -w /etc/conf.d/keymaps
     
    12 可选选项
    选项一,日志系统
    app-admin/sysklogd app-admin/syslog-ng  app-admin/metalog linux,unix有历史悠久的强健日志系统,三种日志有各种作用。详情百度。如果sysklogd 或 syslog-ng想要使用,需要安装app-admin/logrotat。如果需要安装系统的日志,emerge 它并且用 rc-update把它添加到默认的运行级别上 ,下面的例子是安装 app-admin/sysklogd
    root #emerge --ask app-admin/sysklogd
    root #rc-update add sysklogd default
    选项二,cron进程(定时任务系统)
    Gentoo提供了几种可能的cron守护进程,包括 sys-process/bcronsys-process/dcronsys-process/fcron, 和 sys-process/cronie 。安装他们根安装系统日志的方法相似,下面的例子是使用 sys-process/cronie:
    root #emerge --ask sys-process/cronie
    root #rc-update add cronie default
    如果使用的是dcron 或者 fcron, 需要执行额外的初始化命令:
    root #crontab /etc/crontab
    选项三,文件索引
    提高文件定位性能,安装sys-apps/mlocate
    root #emerge --ask sys-apps/mlocate
    选项四,远程访问
    添加sshd 初始化脚本到默认的运行级别上
    root #rc-update add sshd default
    如果需要串行控制台访问远程服务器,注释掉/etc/inittab串行控制台部分:
    root #nano -w /etc/inittab
    # SERIAL CONSOLES
    s0:12345:respawn:/sbin/agetty 9600 ttyS0 vt100
    s1:12345:respawn:/sbin/agetty 9600 ttyS1 vt100
     
     文件系统工具
    依赖于正在使用的文件系统,安装文件系统工具还是必须的(检测文件系统的完整性,创建额外的文件系统等)。需要注意的是,管理ext2, ext3, 或者 ext4的文件系统的工具已经作为 @system set的一部分已经安装了。
    下面的表格就是文件系统对应的需要安装的管理工具
     
    Filesystem Package
    Ext2, 3, and 4 sys-fs/e2fsprogs

    XFS sys-fs/xfsprogs
    ReiserFS  sys-fs/reiserfsprogs
    JFS sys-fs/jfsutils
    VFAT (FAT32, ...)  sys-fs/dosfstools
    Btrfs sys-fs/btrfs-progs
    网络工具
    HDCP(动态主机设定协定)是一个局域网的网络协议,使用UDP协议工作,主要有两个用途:
    给内联网或网络服务供应商自动分配IP地址给用户
    给内联网管理员作为对所有电脑作中央管理的手段
    大多数用户发现他们需要有一个HDCP客户端去链接HDCP服务,所有需要利用这次机会去安装一个HDCP客户端 推荐使用net-misc/dhcpcd
    root #emerge --ask net-misc/dhcpcd
     
     
    13 选择一个bootloader
    引导加载程序负责激发引导Linux内核,没它系统是无法开始的。
    amd64位系统中, GRUB2 或 LILO用在bios为基础的系统中,而UEFI用 GRUB2 或 efibootmgr
    我们使用GRUB2
    root #emerge --ask --verbose sys-boot/grub:2
    使用UEFI注意事项:请确认GRUB_PLATFORMS="efi-64"在配置文件/etc/portage/make.conf 中 (root #echo 'GRUB_PLATFORMS="efi-64"' >> /etc/portage/make.conf)
    然后root #emerge --ask --update --newuse --verbose sys-boot/grub:2   去重新计算World set (Portage)的依赖。
    GRUB2已经合并到系统中了,但是还没有安装。
     安装
    安装GRUB2的必要文件到/boot/grub/文件夹中
    使用bios
    root #grub-install /dev/sda
    使用UEFI
    root #grub-install --target=x86_64-efi --efi-directory=/boot
    配置
    大多数情况是不需要进行配置的,GRUB2会自动检测引导什么内核,root文件系统是什么。
    为了生成最终的GRUB2配置文件
    root #grub-mkconfig -o /boot/grub/grub.cfg
    Generating grub.cfg ...
    Found linux image: /boot/vmlinuz-3.16.5-gentoo
    Found initrd image: /boot/initramfs-genkernel-amd64-3.16.5-gentoo
    done

    输出中必须要至少有一个linux镜像被找到。这些是引导系统的必要条件。



    14重新启动系统
    退出chrooted环境,卸载所有已挂载的分区。然后输出一个神奇的命令:reboot
    root #exit
     
    cdimage ~#cd
    cdimage ~#umount -l /mnt/gentoo/dev{/shm,/pts,}
    cdimage ~#umount -R /mnt/gentoo
    cdimage ~#reboot


    15用户管理
    直接使用root被认为是危险的,下面是各个用户组的对应的功能
    Group Description
    audio Be able to access the audio devices.
    cdrom Be able to directly access optical devices.
    floppy Be able to directly access floppy devices.
    games Be able to play games.
    portage Be able to access portage restricted resources.
    usb Be able to access USB devices.
    video Be able to access video capturing hardware and doing hardware acceleration.
    wheel Be able to use su.

    16硬盘清理
    删除tarballs
    root #rm /stage3-*.tar.bz2*
     
    注意,重新启动时可能会出现Unable to mount root fs,自己摸索了好久才解决。
    解决方案  
    sudo chmod +w /boot/grub/grub.cfg
    然后在设置root启动那块设置成hd4  即可。解决的时候对其问题更加深刻了
     
  • 相关阅读:
    Day03_企业权限管理(SSM整合)
    Day02_企业权限管理(SSM整合)
    Day01_企业权限管理(SSM整合)
    MacOS下ElasticSearch学习(第一天)
    MacOS下Git安装及使用
    Hadoop 之 HDFS
    大数据采集、清洗、处理:使用MapReduce进行离线数据分析完整案例
    深入浅出爬虫之道: Python、Golang与GraphQuery的对比
    深入浅出分布式文件存储系统之 Ceph 的实现
    Pastebot—剪切板管理工具
  • 原文地址:https://www.cnblogs.com/Garin/p/6183904.html
Copyright © 2011-2022 走看看