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个)
(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
(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
root #
chmod 1777 /mnt/gentoo/tmp
root #
date 121513162016 表示2016年12月15号13点16分root #
ntpd -q -g 时区设置在下面给出
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/ 但它不是菜单驱动的。
root #
tar xvjpf stage3-*.tar.bz2 --xattrs 提取文件 x提取 v显示过程 j使用bzip2解压缩 p保存权限 f指定解压缩的是文件而非标准输入 --xattrs为了根据扩展的属性存储到对应的文件文档里
root #
nano -w /mnt/gentoo/etc/portage/make.conf 打开配置文件,影响Portage和GCC编译器
# 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
复制dns配置到本地确保网络链接
然后复制gentoo仓库的文件到这里root #
cp /mnt/gentoo/usr/share/portage/config/repos.conf /mnt/gentoo/etc/portage/repos.conf/gentoo.conf
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选项前缀数字) 这个会比较小,包比较少
USE="-gtk -gnome qt4 kde dvd alsa cdr"(如果想要禁用所有缺省的选项,则-*)
不过我选的时系统去判断选项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 录音
设置时区
root #
ls /usr/share/zoneinfo
root #
echo "Asia/Shanghai" > /etc/timezone
en_US ISO-8859-1
root #
emerge --config sys-libs/timezone-data
配置本地化
root #
nano -w /etc/locale.gen
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 使其生效
9、安装source
root #
eselect locale list 查看环境列表
root #
eselect locale set 10 选择环境
root #
env-update && source /etc/profile && export PS1="(chroot) $PS1" 配置生效
安装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
root #
nano -w /etc/rc.conf
root #
nano -w /etc/conf.d/keymaps
root #
emerge --ask app-admin/sysklogd
root #
rc-update add sysklogd default
root #
emerge --ask sys-process/cronie
root #
rc-update add cronie default
root #
crontab /etc/crontab
root #
emerge --ask sys-apps/mlocate
root #
rc-update add sshd default
root #
nano -w /etc/inittab
# SERIAL CONSOLES s0:12345:respawn:/sbin/agetty 9600 ttyS0 vt100 s1:12345:respawn:/sbin/agetty 9600 ttyS1 vt100
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 |
root #
emerge --ask net-misc/dhcpcd
root #
emerge --ask --verbose sys-boot/grub:2
root #
echo 'GRUB_PLATFORMS="efi-64"' >> /etc/portage/make.conf)
然后
root #
emerge --ask --update --newuse --verbose sys-boot/grub:2 去重新计算World set (Portage)的依赖。
root #
grub-install /dev/sda
root #
grub-install --target=x86_64-efi --efi-directory=/boot
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硬盘清理
删除tarballsroot #
rm /stage3-*.tar.bz2*