制作Gentoo Linux安装U盘
在OS X 的Terminal终端,使用以下命令将.iso
文件转换成.img
Copy hdiutil convert -format UDRW -o livedvd-amd64-multilib-20140826.img livedvd-amd64-multilib-20140826.iso
这里选择使用livedvd而不是常用的minimal是因为:
Mac设备需要使用EFI stub loader,但是需要注意EFI限制了boot loaderc参数,所以需要将参数结合到内核中 (How to install Gentoo ONLY Mid-2012 macbook air )。UEFI Gentoo Quick Install Guide 指出需要使用UEFI-enabled
启动介质,如LiveDVD或者Gentoo-based SystemRescueCD ,详细参考 Gentoo Handbook 。此外,也可以参考Arch Linux on a MacBook
OS X会自动添加.dmg
文件名后缀,所以实际生成的文件名是livedvd-amd64-multilib-20140826.img.dmg
OS X的hdiutil
支持各种镜像文件的转换,例如.iso
文件的格式,称为UDTO
,则可以使用如下命令转换img
文件到iso
文件,类似如下:
Copy hdiutil convert -format UDTO -o Fedora-Server-DVD-x86_64-23.img Fedora-Server-DVD-x86_64-23.iso
Copy diskutil list
/dev/disk2 (external, physical ):
#: TYPE NAME SIZE IDENTIFIER
0: FDisk_partition_scheme *16.0 GB disk2
1: DOS_FAT_16 NO NAME 209.7 MB disk2s1
2: DOS_FAT_32 DATA 15.8 GB disk2s2
Copy sudo diskutil unmountDisk /dev/disk2s2
Copy sudo dd if=livedvd-amd64-multilib-20140826.img.dmg of=/dev/rdisk2 bs=100m
安装
rEFInd
MacBook使用EFI stub loader,需要安装rEFInd 来管理启动
重启主机,在听到chime声音的时候按Command+R
(进入Mac的recovery模式)
当OS启动后,选择 Utilities -> Terminal
进入到下面的目录(和你存放refind下载解压缩的目录有关,这里假设用户名是jerry
,所以用户目录就是/Volume/OS X/Users/jerry
)
Copy cd /Volume/OS X/Users/jerry/Downloads/refind-bin-0.10.2
./refind-install
再次启动系统,参考在Mac上双启动linux 方式划分好用于Linux的分区,就可以开始安装。
磁盘设备准备
参考 Preparing the disks
建议使用GPT分区,但是对于使用BIOS-based主机中使用GPT,则会导致双启动Microsoft Windows失败。这是因为当Windows检测到GPT分区标记时会从EFI启动。
使用UEFI
当将Gentoo安装在使用UEFI来启动操作系统(代替BIOS)的诸暨市,注意需要创建一个EFI系统分区。EFI系统分区需要是一个FAT32分区(或者在Linux系统中显示为vfat
):
如果启动分区不是使用FAT32(vfat)文件系统,则系统UEFI firmware将不能找到Linux内核和启动系统
分区的数量
分区的数量高度依赖环境,良好的文件系统分区可以提高性能。对于内存足够的系统,甚至可以不使用swap空间,但是对于使用hibernation功能,则需要使用swap空间来存储整个内存
使用parted
来划分分区
Copy parted -a optimal /dev/sda
然后print
命令显示当前分区
Copy (parted) print
Model: ATA APPLE SSD SM064C (scsi)
Disk /dev/sda: 60.7GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 20.5kB 210MB 210MB fat32 EFI System Partition boot
2 210MB 60.0GB 59.8GB hfs+ Macintosh HD
3 60.0GB 60.7GB 650MB hfs+ Recovery HD
可以看到第一个分区是系统的EFI启动分区,并且是vfat
文件系统,可以看到Mac主机的默认分区表就是使用GPT,所以不需要改变分区类型。(更改分区类型会导致磁盘所有数据擦除 )
删除分区2和3,只保留EFI分区
Copy (parted) rm 2
(parted) rm 3
(parted) print
Model: ATA APPLE SSD SM064C (scsi)
Disk /dev/sda: 60.7GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 20.5kB 210MB 210MB fat32 EFI System Partition boot
创建新的Linux分区( /boot 分区 256M / 分区 56G ,保留6G左右作为OP)
Copy (parted) mkpart primary 211 467
(parted) name 2 boot
(parted) mkpart primary 468 56480
(parted) name 3 rootfs
保留6G空间不分配是因为MacBook Air使用SSD作为存储,需要预留一些空间不使用作为OP,可以提高访问性能和延长SSD使用寿命
使用EXT4文件系统 - SSD存储的EXT4文件系统优化
最后的分区
Copy Number Start End Size File system Name Flags
1 20.5kB 210MB 210MB fat32 EFI System Partition boot
2 211MB 467MB 256MB boot
3 468MB 56.5GB 56.0GB rootfs
不过,参考Intel SSD存储优化 ,使用secter作为单位,设置4k对齐,采用如下的分区(64G的SSD保留6G)
Copy Number Start End Size File system Name Flags
1 40s 409639s 409600s fat32 EFI System Partition boot
2 411648s 911360s 499713s ext2 boot
3 913408s 110313472s 109400065s ext4 rootfs
对于 128G 的SSD分区如下(保留10G)
Copy Number Start End Size File system Name Flags
1 40s 409639s 409600s fat32 EFI System Partition boot
2 411648s 911360s 499713s primary
3 913408s 217391327s 216477920s primary
parted /dev/sda
中,输入unit s
,然后计算并调整边界
创建文件系统
对于小的分区(小于8GB),当使用ext2,ext3或ext4,需要使用相应的参数以便保留足够的inode。mke2fs
使用bytes-per-inode
参数来计算需要使用多少inode。对于小分区,将建议增加inode数量
在ext2
,使用以下命令
Copy mk2fs -T small /dev/<device>
在ext3和ext4,添加-j
参数激活日志
Copy mk2fs -j -T small /dev/<device>
以下是实际操作记录
Copy mkfs.ext2 -T small /dev/sda2
mkfs.ext4 /dev/sda3
然后挂载文件系统
Copy mount /dev/sda3 /mnt/gentoo
mkdir /mnt/gentoo/boot
mount /dev/sda2 /mnt/gentoo/boot
安装stage tar文件
下载stage包
Copy cd /mnt/gentoo
wget 最新的stage3包
验证SHA512 checksum
Copy openssl dgst -r -sha512 stage3-amd64-<release>.tar.bz2
或者使用
Copy sha512sum stage3-amd64-<release>.tar.bz2
验证 Whirlpool checksum
Copy openssl dgst -r -whirlpool stage3-amd64-<release>.tar.bz2
对比存储在.DIGESTS(.asc)文件中的值确认文件没有被破坏
解压缩
Copy tar xvjpf stage3-*.tar.bz2 --xattrs
p
参数表示Preserve permissions,--xattrs
表示包含在归档中的扩展属性
配置编译参数
编辑 /mnt/gentoo/etc/portage/make.conf
Copy CFLAGS="-march=native -O2 -pipe"
CXXFLAGS="${CFLAGS}"
CHOST="x86_64-pc-linux-gnu"
USE="bindist mmx sse sse2"
PORTDIR="/usr/portage"
DISTDIR="${PORTDIR}/distfiles"
PKGDIR="${PORTDIR}/packages"
以上是基本配置,后续可以再做调整
为了能够从最快的镜像网站同步,可以执行以下命令添加最快镜像的3个站点到make.conf
- 参考 GENTOO_MIRRORS
Copy /usr/bin/mirrorselect -s3 -D -o >> /mnt/gentoo/etc/portage/make.conf
复制DNS信息
Copy cp -L /etc/resolv.conf /mnt/gentoo/etc/
挂载文件系统
Copy 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
--make-rslave
参数在后面安装的systemd支持所需
进入新系统
Copy chroot /mnt/gentoo /bin/bash
source /etc/profile
export PS1="(chroot) $PS1"
如果ssh再次登陆则还要执行一遍
Copy 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
source /etc/profile
export PS1="(chroot) $PS1"
配置portage
安装一个portage snapshot
如果要更新portage,则使用emerge --sync
,这个命令使用rsync协议同步最新portage
如果同步后有提示需要你阅读新消息,则使用命令
Copy eselect news list
eselect news read
来查看提示信息
配置正确的profile
profile
是任何Gentoo系统的构建块。它不仅设置默认的USE
,CFLAGS
以及其它重要的变量,而且它还锁定系统到一系列包版本
显示输出
Copy Available profile symlink targets:
[1] default/linux/amd64/13.0 *
[2] default/linux/amd64/13.0/selinux
[3] default/linux/amd64/13.0/desktop
[4] default/linux/amd64/13.0/desktop/gnome
[5] default/linux/amd64/13.0/desktop/gnome/systemd
[6] default/linux/amd64/13.0/desktop/kde
[7] default/linux/amd64/13.0/desktop/kde/systemd
[8] default/linux/amd64/13.0/desktop/plasma
[9] default/linux/amd64/13.0/desktop/plasma/systemd
[10] default/linux/amd64/13.0/developer
[11] default/linux/amd64/13.0/no-multilib
[12] default/linux/amd64/13.0/systemd
[13] default/linux/amd64/13.0/x32
[14] hardened/linux/amd64
[15] hardened/linux/amd64/selinux
[16] hardened/linux/amd64/no-multilib
[17] hardened/linux/amd64/no-multilib/selinux
[18] hardened/linux/amd64/x32
[19] hardened/linux/musl/amd64
[20] default/linux/uclibc/amd64
[21] hardened/linux/uclibc/amd64
如果要构建纯64位环境,没有任何32位应用程序和库,可以使用non-multilib
profile
Copy eselect profile set 11
配置USE变量
USE
是Gentoo提供给用户最有力的变量,应用程序可以被编译支持或不支持某些特性。
所有USE flags的完整描述见 /usr/portage/profiles/use.desc
如果要完全自己控制参数,可以默认忽略所有USE设置,即开头使用 -*
Copy USE="-* X acl alsa ..."
配置时区
BIOS时间设置local模式
编辑 /etc/timezone
设置
编辑 /etc/conf.d/hwclock
将 clock="UTC"
修改为 clock="local"
表示系统时间是本地时间而不是格林威治时间
Copy # Set CLOCK to "UTC" if your Hardware Clock is set to UTC (also known as
# Greenwich Mean Time). If that clock is set to the local time, then
# set CLOCK to "local". Note that if you dual boot with Windows, then
# you should set it to "local".
#clock="UTC"
clock="local"
/etc/localtime
做软链接指向时区
Copy cd /etc
rm localtime
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
矫正系统时间
Copy /etc/init.d/ntp-client restart
启动前要具备 openrc 环境
将矫正后的时间写入BIOS
配置locales
编辑 /etc/locale.gen
Copy en_US ISO-8859-1
en_US.UTF-8 UTF-8
至少要设置一个UTF-8 locale
然后运行
重新加载环境
Copy env-update && source /etc/profile
设置locale方法参考 Localization/Guide
选择默认locale
然后 eselect locale set 4
设置en_US.utf8
其实就是创建了 /etc/env.d/02locale
配置文件
# 安装源代码
Gentoo提供了几种内核源代码,对于amd64-based系统,建议使用sys-kernel/gentoo-sources
Copy emerge --ask sys-kernel/gentoo-sources
编译内核源代码有两个方式
使用genkernel
工具自动编译和安装Linux内核
为方便编辑文件,安装vim
emerge一个sys-apps/pciutils
来使用lspci
获取主机的硬件信息
Copy emerge --ask sys-apps/pciutils
检查系统硬件
可以看到2011年版MacBook Air 11 硬件配置如下
Copy 00:00.0 Host bridge: NVIDIA Corporation MCP89 HOST Bridge (rev a1)
00:00.1 RAM memory: NVIDIA Corporation MCP89 Memory Controller (rev a1)
00:01.0 RAM memory: NVIDIA Corporation Device 0d6d (rev a1)
00:01.1 RAM memory: NVIDIA Corporation Device 0d6e (rev a1)
00:01.2 RAM memory: NVIDIA Corporation Device 0d6f (rev a1)
00:01.3 RAM memory: NVIDIA Corporation Device 0d70 (rev a1)
00:02.0 RAM memory: NVIDIA Corporation Device 0d71 (rev a1)
00:02.1 RAM memory: NVIDIA Corporation Device 0d72 (rev a1)
00:03.0 ISA bridge: NVIDIA Corporation MCP89 LPC Bridge (rev a2)
00:03.1 RAM memory: NVIDIA Corporation MCP89 Memory Controller (rev a1)
00:03.2 SMBus: NVIDIA Corporation MCP89 SMBus (rev a1)
00:03.3 RAM memory: NVIDIA Corporation MCP89 Memory Controller (rev a1)
00:03.4 Co-processor: NVIDIA Corporation MCP89 Co-Processor (rev a1)
00:04.0 USB controller: NVIDIA Corporation MCP89 OHCI USB 1.1 Controller (rev a1)
00:04.1 USB controller: NVIDIA Corporation MCP89 EHCI USB 2.0 Controller (rev a2)
00:06.0 USB controller: NVIDIA Corporation MCP89 OHCI USB 1.1 Controller (rev a1)
00:06.1 USB controller: NVIDIA Corporation MCP89 EHCI USB 2.0 Controller (rev a2)
00:08.0 Audio device: NVIDIA Corporation MCP89 High Definition Audio (rev a2)
00:0a.0 SATA controller: NVIDIA Corporation MCP89 SATA Controller (AHCI mode) (rev a2)
00:0b.0 RAM memory: NVIDIA Corporation Device 0d75 (rev a1)
00:15.0 PCI bridge: NVIDIA Corporation Device 0d9b (rev a1)
00:17.0 PCI bridge: NVIDIA Corporation MCP89 PCI Express Bridge (rev a1)
01:00.0 Network controller: Broadcom Corporation BCM43224 802.11a/b/g/n (rev 01)
02:00.0 VGA compatible controller: NVIDIA Corporation MCP89 [GeForce 320M] (rev a2)
2014年版MacBook Air 13
Copy 00:00.0 Host bridge: Intel Corporation Haswell-ULT DRAM Controller (rev 09)
00:02.0 VGA compatible controller: Intel Corporation Haswell-ULT Integrated Graphics Controller (rev 09)
00:03.0 Audio device: Intel Corporation Haswell-ULT HD Audio Controller (rev 09)
00:14.0 USB controller: Intel Corporation 8 Series USB xHCI HC (rev 04)
00:16.0 Communication controller: Intel Corporation 8 Series HECI #0 (rev 04)
00:1b.0 Audio device: Intel Corporation 8 Series HD Audio Controller (rev 04)
00:1c.0 PCI bridge: Intel Corporation 8 Series PCI Express Root Port 1 (rev e4)
00:1c.1 PCI bridge: Intel Corporation 8 Series PCI Express Root Port 2 (rev e4)
00:1c.2 PCI bridge: Intel Corporation 8 Series PCI Express Root Port 3 (rev e4)
00:1c.4 PCI bridge: Intel Corporation 8 Series PCI Express Root Port 5 (rev e4)
00:1c.5 PCI bridge: Intel Corporation 8 Series PCI Express Root Port 6 (rev e4)
00:1f.0 ISA bridge: Intel Corporation 8 Series LPC Controller (rev 04)
00:1f.3 SMBus: Intel Corporation 8 Series SMBus Controller (rev 04)
02:00.0 Multimedia controller: Broadcom Corporation 720p FaceTime HD Camera
03:00.0 Network controller: Broadcom Corporation BCM4360 802.11ac Wireless Network Adapter (rev 03)
04:00.0 SATA controller: Marvell Technology Group Ltd. 88SS9183 PCIe SSD Controller (rev 14)
注意:2011年MacBook Air的USB是2.0版本,使用的是EHCI
和OHCI
驱动,而2014年MacBook Air是USB 3.0版本,使用的是xHCI
驱动。我最初编译内核是在2014年的MacBook Air 13上,同样的配置在2011年MacBook Air 11上需要修改USB驱动选项(或者都编译成模块方式),否则会导致键盘无法使用(键盘是通过USB驱动)。
MacBook Air 11的无线网卡 Broadcom Corporation BCM43224 802.11a/b/g/n (rev 01)
可以使用开源驱动b43
(参考Broadcom 43xx ),但是MacBook Air 13的无线网卡Broadcom Corporation BCM4360 802.11ac Wireless Network Adapter (rev 03)
无法使用开源驱动,需要使用闭源的net-wireless/broadcom-sta
来驱动。
配置内核
Copy cd /usr/src/linux
make menuconfig
编译
Copy make && make modules_install
make install
有关无线网络设备,参考 Wifi
MacBook Air 11使用的无线网卡是Broadcom b43,需要安装 sys-firmware/b43-firmware
Copy echo "sys-firmware/b43-firmware" >> /etc/portage/package.accept_keywords
echo "sys-firmware/b43-firmware Broadcom" >> /etc/portage/package.license
emerge --ask b43-firmware
还需要安装需要的 sys-kernel/linux-firmware
Copy emerge --ask sys-kernel/linux-firmware
内核配置参考 Apple Macbook Pro Retina ,我遇到过编译后内核启动无法使用键盘和声卡问题
配置rEFInd
参考 Apple_Macbook_Pro_Retina Bootloader
挂载EFI分区
可以看到这个分区有EFI
目录,我们需要将编译好的内核存放到这个分区
Copy mkdir /mnt/EFI/gentoo
cd /mnt/EFI/gentoo
cp /boot/vmlinuz-4.3.2-gentoo-vms ./
每次编译内核需要,需要编辑 /Volumes/efi/refind/refind.conf
来添加内核,就如同使用GRUB的方式。在最后添加一段(不需要的内容清理掉)
Copy menuentry Gentoo-VMS 4.3.2 {
icon EFI/refind/icons/os_gentoo.png
loader EFI/gentoo/vmlinuz-4.3.2-gentoo-vms
#options "ro root=UUID=f99cd3be-245e-4dcb-8594-ac21d1fe3d83"
options "ro root=PARTUUID=ce1d1c89-8ca1-48b0-b4ef-5a312ae8c710"
}
这里PARTUUID是分区UUID,需要使用blkid命令获得
(参考Why can't I specify my root fs with a UUID? )
使用命令
可以看到如下输出
Copy NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 vfat EFI 67E3-17ED /mnt
├─sda2 ext2 ac441c57-adaf-4df2-b1ee-03dd00b99060
└─sda3 ext4 f99cd3be-245e-4dcb-8594-ac21d1fe3d83
sdb iso9660 Gentoo-amd64 2014-08-25-05-56-52-00
├─sdb1 iso9660 Gentoo-amd64 2014-08-25-05-56-52-00
├─sdb2 vfat 4B33-A38B
└─sdb3 hfsplus Gentoo Linux
其中 f99cd3be-245e-4dcb-8594-ac21d1fe3d83
就是UUID
,需要输出PARTUUID
则使用blkid
命令(这个命令更完整输出UUID
和PARTUUID
)
输出内容类似如下:
Copy /dev/sda4: LABEL= "Gentoo" UUID= "f99cd3be-245e-4dcb-8594-ac21d1fe3d83" TYPE= "ext4" PARTLABEL= "Gentoo" PARTUUID= "ce1d1c89-8ca1-48b0-b4ef-5a312ae8c710"
有关通过UUID方式持久化块设备名字,参考 [Arch Linux文档:Persistent block device naming (简体中文)](https://wiki.archlinux.org/index.php/Persistent_block_device_naming_(简体中文 ))
内核模块
需要自动加载到内核模块配置在 /etc/conf.d/modules
,并且可以按照需要添加内核参数
要查找所有可用模块,运行find
命令
Copy find /lib/modules/<kernel version>/ -type f -iname '*.o' -or -iname '*.ko' | less
安装firmware
一些驱动需要在工作前加载firmware,通常是网卡,特别是无线网卡
Copy emerge --ask sys-kernel/linux-firmware
文件系统
创建 /etc/fstab
内容
Copy UUID=ac441c57-adaf-4df2-b1ee-03dd00b99060 /boot ext2 defaults,noatime 0 2
UUID=f99cd3be-245e-4dcb-8594-ac21d1fe3d83 / ext4 noatime 0 1
有关fstab使用UUID参考 [Arch Linux文档:fstab (简体中文)](https://wiki.archlinux.org/index.php/Fstab_(简体中文 ))
使用UUID是为了避免系统启动时因为磁盘设备识别变化而导致无法挂载文件系统
网络信息
编辑 /etc/conf.d/hostname
配置网络 /etc/conf.d/net
- 所有的网络信息都在这个配置文件,有关不同配置案例解释位于 /usr/share/doc/netifrc-*/net.example.bz2
,可以通过net-misc/netifrc
获得
Copy emerge --ask --noreplace net-misc/netifrc
配置静态IP的案例/etc/conf.d/net
Copy config_eth0="192.168.0.2 netmask 255.255.255.0 brd 192.168.0.255"
routes_eth0="default via 192.168.0.1"
配置动态HDCP案例
设置启动时自动启动网络
Copy cd /etc/init.d
ln -s net.lo net.eth0
rc-update add net.eth0 default
hosts
文件 - /etc/hosts
Copy # This defines the current system and must be set
127.0.0.1 vms.homenetwork vms localhost
系统信息
设置root密码
Init和启动配置
Gentoo可使用 OpenRC ,这样就使用 /etc/rc.conf
来配置启动服务
系统日志服务
采用systemd可以不需要
Copy emerge --ask app-admin/rsyslog
rc-update add rsyslog default
Cron服务
Copy emerge --ask sys-process/cronie
rc-update add cronie default
文件索引
Copy emerge --ask sys-apps/mlocate
远程访问
Copy rc-update add sshd default
文件系统工具
Copy emerge --ask sys-fs/dosfstools
默认已经安装了ext文件系统工具 e2fsprogs
网络工具
安装dhcp客户端
Copy emerge --ask net-misc/dhcpcd
安装bind(DNS)客户端工具
Copy emerge --ask bind-tools
无线
参考 Wifi
安装b43(仅适用于MacBook Air 11 2011版)
Copy echo "sys-firmware/b43-firmware" >> /etc/portage/package.accept_keywords
echo "sys-firmware/b43-firmware Broadcom" >> /etc/portage/package.license
emerge --ask b43-firmware
注意:需要加载私有firmware的b43驱动需要编译成模块,不能直接编译进内核。
不过,重启以后依然无法识别无线网卡,最后还是参考 Apple Macbook Pro Retina - Closed source Broadcom driver ,但是这个驱动 不支持 802.11n
MacBook Air 13的Broadcom BCM4360不能使用开源的b43驱动 - 参考Linux wireless b43文档 可以看到b43不支持BCM4360,建议使用wl。所以还是参考Apple Macbook Pro Retina - Closed source Broadcom driver 和Gentoo无线网卡安装之broadcom-sta(wl)篇 使用闭源驱动。
内核配置
Copy Device Drivers
-> Network device support
-> Wireless LAN
-> <*> Intel PRO/Wireless 2100 Network Connection
然后执行
Copy echo "net-wireless/broadcom-sta" >> /etc/portage/package.keywords
emerge --ask broadcom-sta
注意:每次升级内核都需要重新编译broadcom-sta
驱动
上述安装 broadcom-sta
提示内核配置需要屏蔽掉 BCMA
,SSB
,MAC80211
,PREEMPT_RCU
(不要设置Preemption Model成"Preemptible Kernel",应该选择其他选项),不能设置CONFIG_PREEMPT
Copy Device Drivers --> Broadcom specific AMBA (这个就是BCMA)
Device Drivers --> Sonics Silicon Backplane support (这个是SSB)
Process type and features -> Preemption Model (Voluntary Kernel Preemption (Desktop)) (这个就是不能选择"Preemptible Kernel (Low-latency Desktop)")
上述安装完成后会在 /lib/modules/uname–r
/net/wireless/ 目录下产生wl.ko
驱动文件。重启操作系统后,使用ifconfig
可以看到新的无线网络设备名字wlp3s0
。
安装linux-firmware
Copy emerge --ask linux-firmware
参考 wpa_supplicant
Copy emerge --ask wpa_supplicant
wpa_supplicant
配置实现802.1q认证后使用网络:
配置/etc/wpa_supplicant/wpa_supplicant.conf
Copy ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=root
network={
ssid="SSID"
key_mgmt=WPA-EAP
eap=PEAP
phase1="peaplabel=0"
phase2="auth=MSCHAPV2"
identity="域帐号名"
password="域帐号密码"
}
启动wpa_supplicant
服务和dhcpcd
服务,就可以获得网络分配ip并连接上网络
Copy /etc/init.d/wpa_supplicant start
/etc/init.d/dhcpcd start
有线网络连接配置类似,配置一个/etc/wpa_supplicant/wpa_supplicant_lan.conf
,内容如下
Copy ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=root
network={
ssid="SSID"
key_mgmt=WPA-EAP
eap=PEAP
phase1="peaplabel=0"
phase2="auth=MSCHAPV2"
identity="域帐号名"
password="域帐号密码"
}
然后使用一个start_lan.sh
脚本来连接启动wpa_supplicant_lan.conf
认证(dhcpcd已经启动),同样也能通过有线访问公司网络
Copy #!/bin/bash
net=enp0s20u1
ifconfig $net up
ifconfig $net promisc
wpa_supplicant -i $net -B -Dwired -c /etc/wpa_supplicant/wpa_supplicant_lan.conf
选择boot loader (仅供参考,实际MacBook Air使用UEFI不需要grub)
默认使用GRUB2
Copy emerge --ask sys-boot/grub
配置GRUB2
Copy grub2-install /dev/sda
创建配置
Copy grub2-mkconfig -o /boot/grub/grub.cfg
内核配置参考
参考 Apple Macbook Pro Retina Kernel Configuration 配置内核
Copy Processor type and features --->
[*] EFI runtime service support
[*] EFI stub support
Device Drivers --->
Input device support --->
[*] Mice --->
# For trackpad support
<*> Apple USB BCM5974 Multitouch trackpad support
Hardware Monitoring support --->
# Motion, light sensor, keyboard backlight
<*> Apple SMC (Motion sensor, light sensor, keyboard backlight)
Graphics support --->
<*> Intel 8xx/9xx/G3x/G4x/HD Graphics
Backlight & LCD device support --->
# Screen backlight
<*> Apple Backlight Driver
X86 Platform Specific Device Drivers --->
<*> Apple Gmux Driver
Multimedia support --->
Media USB Adapters --->
# Webcam
<M> USB Video Class (UVC)
Sound card support --->
Advanced Linux Sound Architecture --->
PCI sound devices --->
<M> Intel HD Audio --->
[*] Build HDMI/DisplayPort HD-audio codec support
[*] Build Cirrus Logic codec support
USB support --->
# USB 3.0 (for integrated keyboard/trackpad)
<*> xHCI HCD (USB 3.0) support
Power management and ACPI options --->
ACPI (Advanced Configuration and Power Interface) Support --->
<*> Smart Battery System
驱动
使用Apple USB以太网卡是AXIS网卡,需要编译支持
重启系统
Copy exit
cd
umount -l /mnt/gentoo/dev{/shm,/pts,}
umount /mnt/gentoo{/boot,/sys,/proc,}
reboot
触摸板
MacBook的触摸板非常灵敏,并且支持tap to click
(也就是轻触等同于点击),非常方便使用。不过,默认在X Window下没有启用这个功能,导致非常不习惯。
参考 Tuning the Macbook touchpad in Linux ,可以使用如下脚本命令实现
Copy synclient TapButton1=1
synclient TapButton2=2
synclient TapButton3=3
synclient TapAndDragGesture=0
解释:参考 Tap-to-click not working in Ubuntu 12.04
TapButton(number) sets the mouse event to trigger when you tap your trackpad with (number)fingers. "0" means disabled, "1" means left-click, "2" means middle-click, "3" means right-click.
即,单指轻触是左键,双指轻触是中键,三指轻触是右键
另外,发现键盘输入的时候,手掌很容易碰到触摸板导致鼠标漂移输入混乱。
Touchpad Synaptics 提供了详细的触摸板配置说明,可以参考
中文设置
安装ibus
Copy emerge app-i18n/ibus-qt app-i18n/ibus-pinyin
我使用KDE桌面,所以安装app-i18n/ibus-qt
,对于Gnome环境,安装app-i18n/ibus
(Gentoo IBus )
遇到编译报错
Copy keybindingmanager.c:15:22: fatal error: gdk/gdkx.h: No such file or directory
只要基本设置就可以
在用户目录 ~/.xinitrc
中添加
Copy # iBus Setting ------------------
export GTK_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
export QT_IM_MODULE=ibus
ibus-daemon -d -x
然后重新登录就可以使用。
gentoo升级经验
如果只是常规更新和升级软件包,使用如下命令
如果想完全重新编译整个系统
在编译过程中如果有某个软件包失败,可以采用暂时跳过 emerge --resume --skipfirst -avte world
,等整个系统基本完成后,再单独解决个别软件包编译安装问题。
删除软件包以及无用的依赖软件包 (参考 Safely uninstall a package in Gentoo )
Copy emerge --unmerge ibus
emerge --depclean
参考