Gentoo最小化cd安装

/****************
最小cd安装
*****************/
install()
{
    //镜像及工具下载
    install-amd64-minimal-20170309.iso
    VirtualBox-5.1.16-113841-Win.exe
    
    //启动虚拟机进入引导环境:UEFI还是BIOS引导?这里自动选择BIOS,UEFI再研究
    //F1显示可用内核   F2显示引导选项
    默认内核为gentoo
    引导选项:CD将先检查no*选项,再检查do*选项,所以那些选项可以按照这个顺序覆盖。
    boot: gentoo dopcmcia


    //然后进入安装环境
    //加载额外的硬件配置如8139too模块(提供某些类型的网卡的支持)-可选
    root# modprobe 8139too
    
    //安装环境下的用户配置-可选
    root# passwd
    root# useradd -m -G users john
    root# passwd john
    root# su - john


    //进行网络配置-如果可以联网则可以跳过
    这里先跳过,需要时再总结:https://wiki.gentoo.org/wiki/Handbook:AMD64/Installation/Networking/zh-cn
    
    //可查看手册-可选
    root# links https://wiki.gentoo.org/wiki/Handbook:AMD64
    
    //启动ssh服务-可选
    root# service sshd start


    //给硬盘进行分区:使用MBR技术还是GPT技术分区?BIOS使用MBR,UEFI使用GPT
    //MBR分区
    root# fdisk /dev/sda
    
    Command (m for help):p          显示磁盘当前的分区配置
    
    Command (m for help):d          删除一个分区
    Partition number (1-4): 1


    Command (m for help):n          创建一个新分区
    Command action
      e   extended
      p   primary partition (1-4)
    p                               选择是主分区类型
    Partition number (1-4): 1       选择是第一个主分区
    First sector (64-10486533532, default 64): 2048     请确保它开始于2048(这是引导器所必须的)然后敲回车
    Last sector, +sectors +size{M,K,G} (4096-10486533532, default 10486533532): +2M     键入+2M来创建一个大小为2Mbyte的分区


    Command (m for help):n
    Command action
      e   extended
      p   primary partition (1-4)
    p
    Partition number (1-4): 2
    First sector (5198-10486533532, default 5198): (Hit enter)
    Last sector, +sectors +size{M,K,G} (4096-10486533532, default 10486533532): +128M


    Command (m for help):a          切换一个分区是否为可引导的标记
    Partition number:2              2分区可引导


    Command (m for help):n
    Command action
      e   extended
      p   primary partition (1-4)
    p
    Partition number (1-4): 3
    First sector (5198-10486533532, default 5198): (Hit enter)
    Last sector, +sectors +size{M,K,G} (4096-10486533532, default 10486533532): +512M


    Command (m for help):t      来设置分区类型, 3来选择刚刚创建的这个分区,然后敲击“82”设置分区类型为“Linux Swap”。


    Command (m for help):n
    Command action
      e   extended
      p   primary partition (1-4)
    p
    Partition number (1-4): 4
    First sector (5198-10486533532, default 5198): (Hit enter)
    Last sector, +sectors +size{M,K,G} (4096-10486533532, default 10486533532):


    Command (m for help):w      保存分区布局并退出 fdisk
    
    //创建文件系统
    root #mkfs.ext2 /dev/sda2
    root #mkfs.ext4 /dev/sda4


    //初始化swap分区
    root #mkswap /dev/sda3
    
    //激活swap分区
    root #swapon /dev/sda3


    //挂载分区
    root #mount /dev/sda4 /mnt/gentoo
    root #mkdir /mnt/gentoo/boot
    root #mount /dev/sda2 /mnt/gentoo/boot


    //设置UTC时间
    root #date                      查看时间
    root #date 100313162016         如设置时间到2016年10月3日的13:16:


    //下载stage压缩包
    root #cd /mnt/gentoo
    //root #links https://www.gentoo.org/downloads/mirrors/
    root #links http://mirrors.163.com/gentoo/
    请访问releases/amd64/autobuilds/ 。 那里将显示所有可用stage文件 (可能他们个别小组架构在命名的子目录中存储)。选择一个stage3-amd64-.tar.bz2,然后按 D 下载。


    //解压stage包
    root #tar xvjpf stage3-*.tar.bz2 --xattrs


    //配置编译选项
    root #nano -w /mnt/gentoo/etc/portage/make.conf
    
    CFLAGS="-march=native -O2 -pipe"
    MAKEOPTS="-j2"      (CPU核心数2)
    # Use the same settings for both variables
    CXXFLAGS="${CFLAGS}"


    根据你的喜好更新并保存/mnt/gentoo/etc/portage/make.conf(nano用户可以敲 Ctrl+X)。


    //选择境像站点
    root #mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf
    //中国选择http://mirrors.163.com/gentoo/(空格选择,ok保存)


    //Gentoo 主仓库配置
    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


    //复制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


    //进入新环境
    root #chroot /mnt/gentoo /bin/bash
    root #source /etc/profile
    root #export PS1="(chroot) $PS1"


    //安装Portage快照
    root #emerge-webrsync


    //更新Portage数据库
    root #emerge --sync --quiet
    
    //阅读新闻条目
    root #eselect news list         显示一个可用新闻条目的预览
    root #eselect news read         阅读新闻条目
    root #eselect news purge        新闻条目阅读后删除,并且不能再次阅读
    root #man news.eselect          查看手册
    
    //选择正确的配置文件
    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 1


    //更新@world集合
    root #emerge --ask --update --deep --newuse @world


    //配置USE变量
    root #emerge --info | grep ^USE                 查看USE变量
    root #less /usr/portage/profiles/use.desc       查看USE变量


    root #nano -w /etc/portage/make.conf            修改USE变量
    USE="-X -gtk -gnome alsa"
   
    当USE在/etc/portage/make.conf中定义,会从那个默认列表中添加(或者移除,如果USE标记以-号开头的话)。
    用户想忽略所有默认的USE设置并完全由自己管理的话,应该在make.conf中定义USE以-*开头(USE="-* X acl alsa ...")


    //时区
    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 GBK
    zh_CN.UTF-8 UTF-8


    //运行locale-gen。它将生成/etc/locale.gen文件中指定的所有地区
    root #locale-gen


    //验证所选择的地区当前可用
    root #locale -a。


    //通过eselect locale list可显示可用的目标
    root #eselect locale list
    
    //通过eselect locale set VALUE可以设定正确的地区
    root #eselect locale set 8
    这个还可以通过人工编辑/etc/env.d/02locale文件来完成:LANG="zh_CN.UTF-8"


    //重新加载环境
    root #env-update && source /etc/profile && export PS1="(chroot) $PS1"


    //安装源码
    //针对基于amd64-系统的Gentoo,建议使用包 sys-kernel/gentoo-sources
    root #emerge --ask sys-kernel/gentoo-sources
    root #ls -l /usr/src/linux


    //手动配置内核
    //当手动配置内核时,了解(硬件)系统是至关重要的。大多数信息可以通过安装包含lspci命令的sys-apps/pciutils来收集:
    root #emerge --ask sys-apps/pciutils


    //进入内核源码目录并执行make menuconfig。这将启动一个菜单驱动的配置屏幕
    root #cd /usr/src/linux
    root #make menuconfig


    //KERNEL 选择所需要的文件系统
    File systems --->
    (选择你的系统需要的一个或者多个文件系统)
      <*> 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)


    //编译和安装
    //当配置完成,是时间来编译和安装内核了。退出配置并开始编译过程:


    root #make && make modules_install
     附注
    还可以启用并行生成使用make -jX,X是一个生成过程中所允许运行的并行任务的整数。这类似于早期有关/etc/portage/make.conf的中关于MAKEOPTS变量的介绍。


    //复制内核镜像到/boot/
    root #make install
    这将复制内核镜像到/boot/,一起的还有System.map文件和内核配置文件。


    //生成一个initramfs,一个基于内存的初始化文件系统
    //要安装一个initramfs,首先安装sys-kernel/genkernel
    root #emerge --ask sys-kernel/genkernel
    root #genkernel --install initramfs


    //为了在initramfs中启用特定的支持,比如lvm或raid,要为genkernel添加一个合适的选项
    root #genkernel --lvm --mdadm --install initramfs
    
    //initramfs将存储在/boot/。结果文件可以简单的通过列出以initramfs开头的文件来找到:
    root #ls /boot/initramfs*


    //配置模块
    //在/etc/conf.d/modules中列出需要自动加载的模块。如果有必要,附加选项也可以添加到模块中。
    //要查看所有可用模块,运行下面的find命令。不要忘记替换“”为刚刚编译的内核版本:
    root #find /lib/modules// -type f -iname '*.o' -or -iname '*.ko' | less
    
    //比如,要自动加载3c59x.ko模块(3Com网卡家族的特定驱动),编辑/etc/conf.d/modules文件并在里面输入模块名字。
    root #nano -w /etc/conf.d/modules
    modules="3c59x"


    //文件系统信息
    //在Linux系统下,系统所用到的所有分区都必须在 /etc/fstab文件中指明。这个文件包含了这些分区的挂载点(在系统目录树中的位置)、挂载方法和特殊挂载选项(是否自动挂载,是否某个用户可以挂载它等)
    
    //创建/etc/fstab文件
    root #nano -w /etc/fstab
    /dev/sda2   /boot        ext2    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


    //网络信息
    //主机名
    root #nano -w /etc/conf.d/hostname
    # 设置主机名变量,选择主机名
    hostname="fei"


    //域名信息
    root #nano -w /etc/conf.d/net
    # 设定dns_domain的变量值为你的域名
    dns_domain_lo="homenetwork"
    //如果你选择不设定域名,你可以去掉登录界面上的这条信息:“This is hostname.(none)”。你只需要修改/etc/issue ,把字符串.\O从该文件里删掉即可。


    //配置网络
    //首先安装net-misc/netifrc
    root #emerge --ask --noreplace net-misc/netifrc


    //静态ip和dhcp选一个
    root #nano -w /etc/conf.d/net
    
    静态ip
    config_enp0s3="192.168.0.2 netmask 255.255.255.0 brd 192.168.0.255"
    routes_enp0s3="default via 192.168.0.1"
    
    dhcp
    config_enp0s3="dhcp"
    
    //在启动时自动启用网络链接
    root #cd /etc/init.d
    root #ln -s net.lo net.enp0s3
    root #rc-update add net.enp0s3 default 
    
    如果在引导系统后,我们发现有关网络接口名称(目前设置为eth0的假设是错误的,那么执行以下步骤来纠正这一点:
    用正确的名称更新 /etc/conf.d/net (像enp3s0 取代 enp0s3).
    创建符号链接 (像 /etc/init.d/net.enp3s0).
    删除旧的符号链接 (rm /etc/init.d/net.eth0).
    创建新的 default runlevel.
    删除旧的rc-update del net.eth0 default.


    //hosts 文件
    //告诉Linux有关你的网络的信息。这需要在/etc/hosts文件中定义,它将帮助你将那些无法被域名解析器解析的主机名解析成IP地址。
    root #nano -w /etc/hosts
    # 定义的是现在系统
    127.0.0.1     tux.homenetwork tux localhost
      
    # 定义你网络上的其它系统
    192.168.0.5   jenny.homenetwork jenny
    192.168.0.6   benny.homenetwork benny
    
    //系统信息
    root #passwd
    root #useradd -m -G users john
    root #passwd john
    
    //配置引导和启动
    Gentoo(在使用OpenRC时)使用/etc/rc.conf配置系统的服务,启动和关闭。 打开 /etc/rc.conf并查看文件中的所有注释。 设置并根据需要进行更改。
    root #nano -w /etc/rc.conf
    接下来,打开/etc/conf.d/keymaps 来处理键盘设置。编辑它就可以设置你的键盘。
    root #nano -w /etc/conf.d/keymaps
    要特别注意keymap这个变量 。如果你选择了错误的KEYMAP,在你敲击键盘的时候会有奇怪的结果。
    root #nano -w /etc/conf.d/hwclock
    如果你机器上的时钟不用UTC,你需要在配置文件加上clock="local"。否则,你的时钟就有可能出现偏差。
    完成 /etc/conf.d/hwclock 的配置之后,保存并退出。


    //系统日志工具
    //安装app-admin/sysklogd
    root #emerge --ask app-admin/sysklogd
    root #rc-update add sysklogd default
    
    //Cron守护进程
    root #emerge --ask sys-process/cronie
    root #rc-update add cronie default
    如果使用dcron或fcron,需要执行附加的初始化命令:
    root #crontab /etc/crontab
    
    //文件索引
    root #emerge --ask sys-apps/mlocate
    
    //远程访问
    root #rc-update add sshd default
   
    //文件系统工具
    根据你所使用的文件系统的不同,你需要安装必须的文件系统工具(用于检查文件系统完整性、创建额外的文件系统等)。请注意管理ext2,ext3和ext4文件系统的工具 (sys-fs/e2fsprogs)已经做为系统的一部分被安装了。
    以下的表格列出了特定文件系统所需要安装的工具。
    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


    //网络工具
    //安装DHCP客户端
    root #emerge --ask net-misc/dhcpcd


    //选择一个引导器GRUB2或LILO
    //GRUB2
    root #emerge --ask --verbose sys-boot/grub:2
    
    //通过grub-install命令安装GRUB2所需的文件到/boot/grub/目录,假设第一块磁盘(引导系统的那块)是/dev/sda,将使用下面的一条命令
    root #grub-install /dev/sda


    //再一次配置
    基于用户在/etc/default/grub文件和/etc/grub.d中特别配置的脚本文件来生成GRUB2。
    在大多数场景中,不需要由用户来配置,GRUB2就可以自动检测出哪个内核用于引导(位于/boot/中最高的那一个)以及根文件系统是什么。
    也可以使用GRUB_CMDLINE_LINUX>变量在/etc/default/grub中附加内核参数。
    
    //要生成最终的GRUB2配置,运行grub-mkconfig命令
    root #grub-mkconfig -o /boot/grub/grub.cfg


    //重启系统
    root #exit
    cdimage ~#cd
    cdimage ~#umount -l /mnt/gentoo/dev{/shm,/pts,}
    cdimage ~#umount -R /mnt/gentoo
    cdimage ~#reboot
}

你可能感兴趣的:(Linux,linux,gentoo)