记一次基于vmware的gentoo安装

Posted dua677

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记一次基于vmware的gentoo安装相关的知识,希望对你有一定的参考价值。

采用GPT分区,只要一个根分区无swap分区,系统是64位的,最终采用systemd(gentoo默认是openrc),安装简洁版的X11和简洁版的KDE,注意是在vmware上安装的,不是实体机。。。全部安装可能要十几个小时,其中编译和安装软件耗时大

下载gentoo

1) 下载地址:https://www.gentoo.org/downloads/ (官网比较慢,一般我去http://mirrors.163.com/gentoo/下载)

  这里有 Minimal Installation CD和 Hybrid ISO (LiveDVD)以及stage 3

  minimal就是迷你安装系统,只有命令行,我下载的就是这个版本(http://mirrors.163.com/gentoo/releases/amd64/autobuilds/current-install-amd64-minimal/,找iso镜像文件)

  LiveDVD是一个健全的系统,有图形界面,就像一个已经安装好的带有图形界面的系统一样(我们按装gentoo不用这个大boss)

  stage是gentoo的根目录系统,它包含了除引导系统、内核、软件以外的其它东西(解压以后你可以看到典型的linux目录了),一般使用的是stage3,版本号越小提供的东西越少,有stage1~4;注意在这里你要选择systemd版本,否则你安装的会是你选择的那个版本;(http://mirrors.163.com/gentoo/releases/amd64/autobuilds/current-stage3-amd64-systemd/,注意选择stage3)

创建虚拟机

vmware目前还不支持gentoo,我们选择"其他 Linux 4.x 或更高版本内核 64 位"

技术分享图片

最终我创建的gentoo配置为,4核CPU,8G内存,30G硬盘(安装好后会占用约12G,我安装了各种软件后约20G),网卡用的桥接模式,显卡加速3D图形,光驱就把你下载的迷你安装系统iso放进去就行,当然其他linux也可以的

安装gentoo

1.) 启动虚拟机后会进入一个提示界面,我们输入gentoo回车即可,如果你要禁用或启用一些功能,就要在这里设置了,可以参考官网手册;

2.) 然后是要求你输入键盘类型,因为默认是美国的键盘,所以直接回车即可,或者等待它超时自己选择

3.) 首先是登录root账号,输入sudo passwd设置root的密码(只是迷你安装系统的密码,不是新系统的),然后输入su和密码进入root账户

4.) 设置网络,你可以用ifconfig查看网卡,然后使用ifconfig eno16777736 inet 192.168.1.250 netmask 255.255.255.0 broadcast 192.168.1.255;设置指定网卡(eno16777736)的ip、掩码、广播网;使用route add default gw 192.168.1.1设置网关(注意网络设置的相关ip必须修改成你的ip);可以ping一个外网ip看效果;提示:最新的mini安装系统我发现这么设置总是失败,所以我是先dhcpcd eno16777736再输入上面的命令

ifconfig 你的网卡名 inet 分配给当前系统的ip netmask 掩码 broadcast 广播网
route add default gw 192.168.1.1
# 或者ip route add default via 192.168.1.1

5.) 启动sshd远程连接(如果你需要的话)

/etc/init.d/sshd start  // 使用sshd你可以通过类似SecureCRT来连接,这样你就可以拷贝粘贴了,否则mini安装系统没法在宿机和虚拟机里面来回拷贝

6.) 设置DNS,vi /etc/resolv.conf;输入nameserver 114.114.114.114等等,每一个解析ip段占一行;vi提示:进入vi后按G键到最后一行,按o键在下一行进入编辑模式,完了以后按ESC键进入命令模式,再输入:wq(注意有冒号,前面的按键区分大小写)回车即可;然后你可以ping一个外网域名看看效果

nameserver 119.29.29.29
nameserver 182.254.116.116
nameserver 180.76.76.76
nameserver 114.114.114.114
nameserver 223.5.5.5
nameserver 223.6.6.6
nameserver 1.2.4.8
nameserver 8.8.8.8

7.) 硬盘分区

parted /dev/sda        // 使用parted给/dev/sda硬盘分区,注意一定要选对硬盘,我这里是sda
mklabel gpt          // 采用gpt分区
unit mib            // 设置单位为mib
mkpart primary 1 3      // 在第1到第3(不含)mib创建一个分区
name 1 grub          // 设置第一个分区名字为grub,第一个创建的分区就是上面的命令所创建的
set 1 bios_grub on      // 设置第一个分区为bios_grub启动分区
mkpart primary 3 131     // 创建第3到131(不含)mib为第二个分区,(128mib)
name 2 boot          // 设置第二个分区名称为boot分区
mkpart primary 131 -1    // 创建第三个分区,-1表示到最后
name 3 rootfs         // 设置第3个分区名为rootfs
set 2 boot on         // 设置第二个分区为启动分区
print              // 简写为p,打印分区信息
q                // quit,退出分区

8.)  格式化并挂载硬盘

mkfs.ext2 /dev/sda2          // boot分区最好用ext2,切记一定要选对分区,不要照搬
mkfs.ext4 /dev/sda3
mount /dev/sda3 /mnt/gentoo     // 挂载第3个分区rootfs为根分区
mkdir /mnt/gentoo/boot        // 在新系统的根分区创建boot目录
mount /dev/sda2 /mnt/gentoo/boot  // 挂载第二个分区boot为boot分区

9.) 下载并解压根文件系统

cd /mnt/gentoo/  // 注意切换到新系统挂载点根目录  
wget "http://mirrors.163.com/gentoo/releases/amd64/autobuilds/current-stage3-amd64-systemd/stage3-amd64-systemd-20180623.tar.bz2"  // 下载根文件系统,这里就是文章开头的stage3
tar xvjpf stage3-amd64-systemd-*.tar.bz2 --xattrs --numeric-owner  // 解压stage3,默认会解压到当前目录

10.) 配置make.conf

nano /mnt/gentoo/etc/portage/make.conf  // 这里使用nano编辑器,使用方向箭头移动,修改好后按ctrl+x退出,这时它会提示你是否保存,按y保存,如果打开的是已有文件它会显示原有路径,直接回车即可
-march=native   // CFLAGS="-O2 -pipe -march=native" -march=native是让它自己去识别cpu类型,你也可以设置成具体的cpu类型
MAKEOPTS="-j9"  // 设置编译线程数,我的是intel 4核8线程的,所以设置成8+1

11.) 设置更新源地址

mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf  // 通过上下箭头选择你认为合适的地址,我选的是163的

12.) 拷贝repos.conf和gentoo.conf到新系统

mkdir /mnt/gentoo/etc/portage/repos.conf/
cp /mnt/gentoo/usr/share/portage/config/repos.conf /mnt/gentoo/etc/portage/repos.conf/gentoo.conf
cp -L /etc/resolv.conf /mnt/gentoo/etc/

13.) 切换到新系统

mount -t 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 /mnt/gentoo /bin/bash      // 切换到新系统,指定新系统的根目录和shell解释器
source /etc/profile           // 使用新系统的profile配置文件
export PS1="(chroot) $PS1"       // 为了便于识别新系统,加上(chroot)

14.) 更新软件仓库

emerge-webrsync  // 为了你安装系统的时候能使用最新软件

  //如果出现同步错误,例如”rsync“,可以修改/etc/portage/repos.conf/gentoo.conf,将粗体部分修改成rsync即可

  sync-type = rsync
  sync-uri = rsync://rsync.gentoo.org/gentoo-portage

15.) 设置profile

eselect profile list  // 查看有哪些profile,profile决定了你的系统安装软件时的默认开启功能(例如USE变量等)
eselect profile set n // n=对应的你需要的profile
// 我选择的是[20]  default/linux/amd64/17.0/desktop/plasma/systemd (stable) *;后面的*号表示当前选中的,你可以使用eselect profile 20来选择它
// 注意该编号可能不同,因为我要安装kde和systemd,所以选择该版本,千万不要选错,你在以后使用系统时也可以更改

16.) 更新系统

emerge --ask --update --deep --newuse @world  // 如果你现在就需要更新系统就使用这个命令吧,他有可能因为原有软件太旧而更新一大堆软件,非常耗时

17.) 配置make.conf

nano -w /etc/portage/make.conf

  USE="-bootstrap -build -livecd -static -ibus 3dnow user-session Xaw3d a52 aac aalib acl acpi alsa ao apm arts atm audiofile aqua bash-completion bcmath bluetooth branding bzip2 cairo cdda cddb cdparanoia cdr cgi cjk cracklib crypt cscope css ctype cups curl cxx dbm dbus dga directfb djvu dri dts dvdvb dvd dvdr encode esd exif faac fam fbcon ffmpeg flac fontconfig ftp gcj gd gdbm geoip ggi gif gphoto2 gpm graphviz gzip gsm gstreamer gtk hal hddtemp icu idn ieee1394 imap ipv4 ipv6 java javascript jbig jpeg jpeg2k kontact kde ladspa lame lash latex lcms libcaca libnotify libsamplerate lirc lm_sensors lua lzo m17n-lib mad matroska memlimit mhash mikmod mime mmx mng modplug mp3 mp4 mpeg mpi mtp multilib musepack mysql nas neon ncurses netboot netcdf networkmanager nls nntp npt nocdnptl nsplugin odbc ogg openal openexr opengl openmp pam pch pcmcia pdf plotutils png portaudio posix prelude profile pulseaudio python qt4 qt5 raw readline real recode samba scanner sdl semantic-desktop shorten skey smartcard smp sndfile snmp sockets socks5 sox speex sse sse2 ssl static-libs svg svga syslog sysvipc szip systemd tcpd theora threads tiff timidity truetype unicode usb v4l v4l2 vaapi vdpau vcd vim-syntax vorbis wavpack wifi wmf X x264 x265 xattr xcb xface xft xine xinerama xml xpm xprint xscreensaver xvid wayland webp zlib zsh-completion uclibc"

  VIDEO_CARDS="savage vesa via vmware"
  INPUT_DEVICES="evdev keyboard mouse synaptics mutouch vmmouse"

  LINGUAS="en en-US en_US zh zh-CN zh_CN"      // 可以根据需要决定是否添加
  L10N="en en-US en_US zh zh-CN zh_CN"        // 可以根据需要决定是否添加

  USE_PYTHON="2.7 3.5 3.6"               // 可以根据需要决定是否添加
  PYTHON_TARGETS="python2_7 python3_5 python3_6"  // 可以根据需要决定是否添加
  # PYTHON_SINGLE_TARGET="python3_5"

  # ACCEPT_KEYWORDS="x86 amd64"            // 个人建议不要添加测试版,比如~x86 ~amd64,否则你会抓狂的

  // USE你可以使用自己的配置,或者使用默认的,我的配置会安装不少软件,下面7个是新增的

18.) 设置时区

# ls /usr/share/zoneinfo          // 可以使用该命令查看有哪些时区
echo "Asia/Shanghai" > /etc/timezone   // 设置时区为上海
emerge --config sys-libs/timezone-data  // 更新时区配置

19.) 设置字符集

nano -w /etc/locale.gen  // 在locale.gen文件中增加中文字符集,删除你认为不需要的字符集,注意要保留英文字符集
    zh_CN GB18030 
    zh_CN GB2312
    zh_CN GBK
    zh_CN.UTF-8 UTF-8

locale-gen          // 应用修改
eselect locale list    // 查看可用字符集
eselect locale set n    // 选择一个字符集,zh_CN.UTF-8 UTF-8

20.) 更新环境

env-update && source /etc/profile && export PS1="(chroot) $PS1"  // 设置了一堆东西,需要更新一下环境

21.) 安装内核

emerge --ask sys-kernel/gentoo-sources  // 这里安装的是gentoo仓库的内核,注意这个安装仅仅是下载源码之类,并没有编译。。
ls -l /usr/src/linux             // 可以查看内核版本

22.) 编译内核

手动:
emerge --ask sys-apps/pciutils          // 先安装pciutils这个软件 cd /usr/src/linux                  // 进入内核文件目录 make menuconfig               //配置内核,使用make olddefconfig可以直接使用原有配置,文章尾部提供一个我的配置文件(基于ubuntu修改) 安装bc:emerge --ask sys-devel/bc ln -sf /proc/self/mounts /etc/mtab make modules_prepare                // 准备模块 make -j8 && make modules_install         // 设置编译线程并安装模块,如果不写线程可能会很慢 make install                     // 安装内核 emerge --ask sys-kernel/genkernel        // 安装genkernel genkernel --install initramfs          // 使用genkernel安装initramfs ls /boot/initramfs*

自动:

emerge --ask sys-kernel/genkernel
nano -w /etc/fstab
/dev/sda2 /boot ext2 defaults 0 1    // 挂载boot分区
安装:ln -sf /proc/self/mounts /etc/mtab

genkernel --menuconfig all        // 使用genkernel默认的配置文件编译内核,你可能需要设置一下下面的选项,特别是要选中systemd(默认openrc)

# systemd选项
# Gentoo Linux --->
# Support for init systems, system and service managers --->
# [*] systemd
# General setup --->
# [*] open by fhandle syscalls // 在Default hostname下面5行,自动安装没有该选项
# (none)Default hostname
# [*] Configure standard kernel features (expert users) ---> // 子选项已选择
# Firmware Drivers --->
# EFI (Extensible Firmware Interface) Support -->
# <*> EFI Variable Support via sysfs
# Device Drivers --->
# Generic Driver Options --->
# () path to uevent helper
# [*] Include in-kernel firmware blobs in kernel binary
# 空(/lib/firmware/) External firmware blobs to build into the kernel binary
# Graphics support --->
# Frame Buffer Devices ---> // 自动安装已选择
# <*> Support for frame buffer devices --->
# ## (禁用包括 VGA、 英特尔、 nVidia、 ATI所有的驱动程序.除了基于 EFI 的帧支持,只有如果你正在使用 UEFI的话)

 

ls /boot/kernel* /boot/initramfs*    // 查看安装的内核,/boot/kernel*可能不存在

23.) 安装软件

emerge --ask sys-kernel/linux-firmware
emerge --ask pciutils
emerge app-editors/vim
vim /etc/fstab         // 挂载分区,否则无法启动,根据需要调节
    /dev/sda2    /boot    ext2    defaults,noatime    0 2
    /dev/sda3    /        ext4    noatime            0 1
vim /etc/conf.d/hostname  // 如果你的是openrc可以通过这个文件设置系统名称vim /etc/conf.d/net     // 如果你的是openrc可以通过这个文件设置网络
    config_eth0="192.168.1.251 netmask 255.255.255.0 brd 192.168.1.255"
    routes_eth0="default via 192.168.1.1"
cd /etc/init.d
ln -s net.lo net.eth0    // 网络链接设置
    rc-update add net.enp2s1 default  //注意“net.”不能少
emerge
--ask sys-apps/pcmciautils emerge --ask net-misc/dhcpcd  // 根据需要安装dhcpcd emerge --ask net-dialup/ppp

emerge --ask net-misc/ntp    // 更新时间用,ntpdate time.nist.gov
emerge --ask app-portage/eix  // 查看软件用,eix -I vim,查看vim是否安装
emerge --ask gentoolkit     // 包含equery命令,可以用equery d softName查看该软件被谁依赖
emerge --ask wqy-zenhei wqy-microhei  // 安装中文字体
emerge --ask app-admin/sudo  // 安装sudo
emerge --ask app-i18n/fcitx  // 安装fcitx输入法
  需要到/etc/profile添加下面2行的配置

  export GTK_IM_MODULE=fcitx
  export QT_IM_MODULE=fcitx


emerge --ask fcitx-configtool
emerge --ask kcm-fcitx
emerge --ask media-sound/alsa-utils  // 安装声音相关
emerge --ask www-client/google-chrome  // 安装谷歌浏览器

24.) 安装引导程序grub

emerge --ask --verbose sys-boot/grub:2
grub-install /dev/sda    // 某些系统可能是grub2-install /dev/sda,切记一定要选对硬盘
vim /etc/default/grub    // 可以在这里修改倒计时
grub-mkconfig -o /boot/grub/grub.cfg  // 记得更新配置否则无效

25.) 设置新系统root密码

passwd

26.) 设置新系统的网络

# /etc/systemd/network/50-static.network
[Match]
Name=ens33  // 写对网卡
[Network]
Address=192.168.1.251/24
Gateway=192.168.1.1

27.) 重启进入新系统

exit                      // 退出chroot
cd
umount -l /mnt/gentoo/dev{/shm,/pts,}  // 卸载挂载的设备
umount -R /mnt/gentoo
poweroff                    // 关机

// 重启进入新系统后输入root登录账户并运行下面的命令使用相关服务,必要的时候再重启一次
systemctl enable sshd.service                   // 启用sshd服务 systemctl start sshd.service                   // 启动sshd服务 systemctl enable systemd
-networkd.service            //启用网络服务 systemctl start systemd-networkd.service            //启动网络服务 ln -snf /run/systemd/resolve/resolv.conf /etc/resolv.conf  //链接dns文件到systemd systemctl enable systemd-resolved.service           //启用自动更新dns文件 systemctl start systemd-resolved.service            //启动自动更新dns文件 systemctl start sysklogd.service systemctl enable cronie.service systemctl start cronie.service

28.) 安装图形界面

// 图形界面的安装比较耗时,而且容易出问题,建议先备份系统
emerge --ask x11-base/xorg-server // 轻量化版X11 env-update source /etc/profile emerge --ask kde-plasma/plasma-desktop  // 轻量化版KDE,注意这个版本缺少很多软件,比如文件管理器,图片浏览器等等
# emerge --ask kde-plasma/plasma-meta  // 完整版KDE
emerge --ask kde-plasma/powerdevil     // 电源管理
emerge --ask kde-plasma/systemsettings  // 设置管理
emerge --ask sddm               // 登录界面
emerge --ask konsole             // 终端

systemctl enable sddm            // 添加sddm到随系统启动,注意你要有一个普通用户,只有root是不能登录的

29.) 相关配置文件

USE flag的颜色
红色:enable
蓝色:前面会带一个”-”,表示disable。
绿色:enable但是还没有加进去的use flag
黄色:上一个版本没有,这一个版本新加入的use flag
括号():在你的平台上禁用的use flag


REQUIRED_USE="foo? ( bar )"          如果 foo 被设定, 则必须设定bar 。
REQUIRED_USE="foo? ( !bar )"          如果 foo 被设定, 则必须不设定 bar。
REQUIRED_USE="foo? ( || ( bar baz ) )"   如果 foo被设定, 则必须设定 bar 或baz 。
REQUIRED_USE="^^ ( foo bar baz )"      foo bar 或baz 中必须有一个被设定
REQUIRED_USE="|| ( foo bar baz )"      foo bar 或 baz 中至少有一个被设定。
REQUIRED_USE="?? ( foo bar baz )"      foo bar 或 baz中必须同时被设定多个USE


B (blocks)      左边列出来的软件因为冲突原因将阻碍右边列出来的软件的安装
N (new)         对于您的系统来说这是一个新软件, 且为第一次安装
NS(new slot)    安装另外一个版本(slot)
R (replace)     不是新软件, 不过会被重新 emerge (reemerged)
r               更新小版本(小幅升级)
F (fetch)       该软件要求您先把源码手工地下载回来 (例如因为许可 (licencing issues) 的缘故)
f               源码已经下载到系统
U (update)         软件包已安装, 不过将被升级
UD (downgrade)     软件包已安装, 不过将被降级
#                被package.mask屏蔽
*                missing keyword
~                unstable keyword

ipv6*            上一次是被关闭的                
-qt%             上一次是被开启的


emerge-webrsync      更新portage
emerge --ask --update --deep --with-bdeps=y --newuse @world 更新系统(--update更新;--deep连同依赖一起更新;--with-bdeps=y编译依赖更新;--newuse 按变化后的use更新;@world更新整个系统)
emerge -uDN --with-bdeps=y @world
emerge -u(--update) softwareName 更新指定软件
emerge -u system      更新系统软件
emerge -u world      更新自己安装的软件(不含依赖的依赖)
emerge --ask        a交互询问;s查询软件包名;k使用本地编译好的预编译包,否则下载源码
emerge -C softwareName  卸载软件
!mtime: 目标文件在安装后被您或被一些工具修改过
!empty: 目标目录不为空
cftpro: 目标文件在受保护的目录内, 不去碰它以策安全
emerge -avt --depclean  删除不需要的包
emerge -e world      重新编译所有软件包
emerge -p softname    模拟安装(假设安装,适合不熟悉软件的使用)
emerge -f         下载源码以及依赖,但是不编译
emerge -fp        查看软件以及依赖的下载地址
emerge "<vim-8.1"    安装小于指定版本软件
emerge -k         安装预编译包(如果有相应版本),Gentoo不提供预编译包,Portage是应社区加入该功能
emerge -K        安装预编译包(不考虑版本)
emerge --getbinpkg   下载并安装预编译包
emerge -G        下载并安装预编译包(重新下载安装,不使用本地的)
emerge --nodeps    不理会依赖(安装可能会失败)
emerge --onlydeps   只安装依赖不安装软件
emerge -v        查看详细信息
emerge -V        查看版本,单独使用

https://files.cnblogs.com/files/Dua677/.config.css,我的内核配置文件.config,为了上传增加了.css后缀,下载好后删除.css后缀即可,放到/usr/src/linux/即可























































































以上是关于记一次基于vmware的gentoo安装的主要内容,如果未能解决你的问题,请参考以下文章

记一次 虚拟机 deepin 15.11 深度操作系统安装

记一次虚拟机共享文件夹的采坑之旅

记一次 Centos7 手动安装 Mysql 5.7 数据库 (使用 Mysql 的 rpm 文件)

记一次趋势DS_for_VM_NSX环境的部署(惨痛回忆)

记一次自写php扩展的安装

记一次基于vue的spa多页签实践经验