购买
我需要一台散热小一点的笔记本,i5 ivy bridge,4G RAM,13.3/14 英寸,madper 推荐了款 HP 的 ultrabook,那东西卖得很畅销,早已没了,我就选了这个 SVT13117ECS。回家后第二次用附带的 Windows,也是最后一次使用,把硬盘驱动等信息截图用 nc 传给了我的 Gentoo 台式机。还是要吐槽一下 OEM Windows 7,500G 的硬盘只设置了三个分区,两个是还原什么的作用,隐藏的,留下一个400多GB的C盘。假使我使用 Windows 也免不了要重装呢。
Intel(R) Core(TM) i5-3317U CPU @ 1.70GHz MemTotal: 3952624 kB
安装
发行版的选取没什么可多说的,不满 Debian Fedora 的分包机制,害怕 Archlinux 的不稳定,而且我依赖的项目 gentoo-haskell 在 Debian Archlinux 上的替代项目人数不够。两年半的 Gentoo 使用经验迫使我继续使用下去。
因为我网速比较慢,一开始选了 Gentoo Minimal CD,用 unetbootin 弄到闪盘上(新时代了,居然还不是 hybrid iso),启动电脑,看看它会给我多大的失望。果不其然,两块硬盘(Hitachi HTS545050A7E380 500GB 和 SAMSUNG MZMPC032HBCD-00000 32G SSD)能识别出来,但是无法识别它自己这个闪盘。它识别自己所在盘的方式也令人吃惊,居然是 /dev/sda1 /dev/sda2 ... /dev/sdb1 ... 这样枚举,难怪有人不把它当 live CD 了……
然后尝试 archlinux-2012.07.15-netinstall-dual.iso,直接 dd 到闪盘。两块硬盘和自己所在的闪盘都能识别出来。工具似乎也挺全的,mkfs.btrfs fdisk ssh nc dhcpcd 等,发现那两块盘上有 RAID 什么的,不知道具体是什么东西,dmraid -r -E 擦掉 RAID 的 metadata。fdisk /dev/sda (这时候就和里面的 Windows 道别了) 及 partprobe 后无法 mkfs.ext4 任何一个分区。从现有的 Gentoo 机器上 nc 传来一个 lsof,检查发现没有进程在使用 /dev/sda1 等,也没有被挂载。不健全的 mkfs.btrfs 居然可以用,不过还是无法 mount。
再试 debian-live-6.0.4-amd64-rescue.iso,也是直接 dd。工具明显比 archlinux-2012.07.15-netinstall-dual.iso 少,没有 mkfs.btrfs,具体还缺什么工具已经忘了,总之也不是个令人省心的 live CD。不过还是勉强能用来 chroot 安装 Gentoo。有有线网络,台式机 Gentoo 可以用 nc 和 ultrabook 传输 stage3 portage-snapshot 等东西。因为不支持 mkfs.btrfs,我就 mount 了个 tmpfs 放 /usr/portage,解压 portage-snapshot,然后 emerge 必备工具。
以后应该直接忽略上述选择用 systemrescuecd,不过 mirrors.163.com 上没有,我下载比较慢,这也是为什么用了这三个东西的原因……
分区
现在再用 separate /usr partition 的话会有很多麻烦,因为 udev(systemd) 那伙人已经不顾用户死活了,用除去某个特性的方式来表明这个特性不需要。如果顽守 separate /usr 的话,最好装个 sys-kernel/dracut 生成 initrd 在启动 /sbin/init 前挂载 /usr;或者用 sys-apps/busybox[sep-usr],内核选项加上 init=/ginit。
我还有几个分区是 noauto 的,比如 /dev/sda1 可能要作为 /dev/sdb1 (/boot) 的备份,/dev/sda2 可能要作为 /dev/sdb2 (/) 的备份,还有个 /backup 也没挂载。基本还是求稳定,btrfs 就用在 /usr/portage 及附属分区和 /backup 等无关紧要的分区上。我对 btrfs 还是心存芥蒂的,比如为什么 mkfs.* 都不能用的时候为什么 mkfs.btrfs 就能用(之前分区时),还有 fsck 的问题。
% df -Th
Filesystem Type Size Used Avail Use% Mounted on
rootfs rootfs 30G 8.3G 20G 30% /
/dev/root ext4 30G 8.3G 20G 30% /
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 49M 1.9G 3% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
none tmpfs 1.9G 8.0K 1.9G 1% /tmp
/dev/sda3 ext4 10G 549M 9.0G 6% /var
none tmpfs 1.9G 41M 1.9G 3% /var/tmp
/dev/sda7 ext4 246G 23G 211G 10% /home
/dev/sda8 btrfs 1.0G 470M 551M 47% /usr/portage
/dev/sda5 btrfs 5.0G 1.5G 2.6G 37% /usr/portage/packages
/dev/sda9 btrfs 25G 1.6G 21G 7% /usr/portage/distfiles
软件
sys-boot/grub-2.00 sys-apps/systemd-186 portage-2.2
grub2
grub2 功能似乎挺强,但配置也相当麻烦,目前还不知 Gentoo 中怎么配置多内核,相比之下 grub1 (grub legacy) 的使用就简单多了。这个算不算 overengineering?
portage-2.2
只是为了使用 world sets 功能。
systemd
sys-apps/systemd-186 和 sys-fs/udev 冲突,根据 microcai 的指点,emerge -C udev 并 provide 一个 sys-apps/udev-9999,装上 systemd。这步操作有较大危险性,务必保证 udev 卸载后装上 sys-apps/systemd-186。
% cat /etc/portage/profile/package.provided
sys-kernel/git-sources-9999
sys-fs/udev-9999
内核配置
上面 /etc/portage/profile/package.provided 里的 sys-kernel/git-sources-9999 表明我没有用 portage 里的那些 sys-kernel/*-sources。我是自己 git clone 了一份,放在 /home/ray/linux,ln -s /home/ray/linux /usr/src/。
之前删掉 .config 自己从头开始配置的,ehci_hcd 会发生错误,导致闪盘、HID USB鼠标都不能用。根据 microcai,我还使用 genkernel 先生成了个 .config,再裁剪驱动,并把里面一些 =m 改成 =y。
Hardware Monitoring
--- Hardware Monitoring support
<*> Intel Core/Core2/Atom temperature sensor
这样就可以使用 lm_sensors 中的 sensors 命令来查看温度了。
--- Watchdog Timer Support
<*> Intel TCO Timer/Watchdog
这个对桌面用户似乎没什么用,不过也选了。
SATA
--- Serial ATA and Parallel ATA drivers
[*] Verbose ATA error reporting
[ ] ATA ACPI Support
[ ] SATA Port Multiplier support
*** Controllers with non-SFF native interface ***
<*> AHCI SATA support
< > Platform AHCI SATA support
< > Initio 162x SATA support
< > ACard AHCI variant (ATP 8620)
< > Silicon Image 3124/3132 SATA support
[ ] ATA SFF support
Wired
--- Device Drivers -> Network device support -> Ethernet driver support
[*] Realtek devices
< > RealTek RTL-8139 C+ PCI Fast Ethernet Adapter support (EXPERIMENTAL)
< > RealTek RTL-8129/8130/8139 PCI Fast Ethernet Adapter support
<*> Realtek 8169 gigabit ethernet support
如果没有 /lib/firmware/rtl_nic/rtl8168e-3.fw (可以在 linux-firmware.git 上下载这个文件), dmesg 会报告缺乏这个文件,不过似乎也不影响使用有线网络。
Wireless
不支持 operatation mode 换成 AP,不过支持 Ad-Hoc,挺不错了。之前 Dell 笔记本信号差、连不上、断线也就算了,brcmsmac 有时还会引发 kernel panic。
--- Networking support -> Wireless
<*> cfg80211 - wireless configuration API
[ ] nl80211 testmode command
[ ] enable developer warnings
[ ] cfg80211 regulatory debugging
[*] enable powersave by default
[*] cfg80211 DebugFS entries
[*] cfg80211 wireless extensions compatibility
[*] Wireless extensions sysfs files
<*> Common routines for IEEE802.11 drivers
[ ] lib80211 debugging messages
<*> Generic IEEE 802.11 Networking Stack (mac80211)
其中 CONFIG_CFG80211_WEXT 要选上,net-wireless/wpa_supplicant 会用到它(不过似乎 net-wireless/iw 不需要)。
--- Device Drivers -> Network device support -> Wireless LAN -> Atheros Wireless Cards
[*] Atheros bluetooth coexistence support
<*> Atheros 802.11n wireless cards support
[*] Atheros ath9k PCI/PCIe bus support
[*] Atheros ath9k debugging
[*] Atheros MAC statistics
[*] Atheros ath9k rate control
USB
还没添加关于蓝牙鼠标、蓝牙键盘、蓝牙耳机的驱动,理由是还没有这些设备……
--- Device Drivers -> USB support
<*> Support for Host-side USB
[*] USB announce new devices
<*> xHCI HCD (USB 3.0) support (EXPERIMENTAL)
<*> EHCI HCD (USB 2.0) support
[*] Generic EHCI driver for a platform device
<*> UHCI HCD (most Intel and VIA) support
<*> USB Mass Storage support
LED Backlight
这样配置 sysfs 就会有 /sys/class/backlight/intel_backlight/brightness 这个文件,可以用来调节亮度。比如 echo 1000 > /sys/class/backlight/intel_backlight/brightness,我把这条命令配置成 systemd 中 multi-user.target 的一个服务了。但是无法用 Fn 键调节亮度(我的这些 Fn 键全部无效)。
--- Device Drivers -> Graphics support -> Backlight & LCD device support
<*> Lowlevel LCD controls
< > Platform LCD controls
-*- Lowlevel Backlight controls
--- LED Support
-*- LED Class Support
-*- LED Trigger support
<*> LED backlight Trigger
Sony Laptop Extra
这个似乎没有作用,不过毕竟是 Sony 机器,还是选了。
% dmesg|grep -i sony
sony_laptop: Sony Notebook Control Driver v0.6
input: Sony Vaio Keys as /devices/LNXSYSTM:00/device:00/PNP0A08:00/device:02/SNY5001:00/input/input5
input: Sony Vaio Jogdial as /devices/LNXSYSTM:00/device:00/PNP0A08:00/device:02/SNY5001:00/input/input6
sony_laptop: brightness ignored, must be controlled by ACPI video driver
--- Device Drivers -> X86 Platform Specific Device Drivers
<*> Sony Laptop Extras
Real Time Clock
hwclock 需要用到 /dev/rtc0
--- Device Drivers -> Real Time Clock
[*] Set system time from RTC on startup and resume (NEW)
(rtc0) RTC used to set the system time (NEW)
*** RTC interfaces ***
[*] /sys/class/rtc/rtcN (sysfs) (NEW)
[*] /proc/driver/rtc (procfs for rtc0) (NEW)
[*] /dev/rtcN (character devices) (NEW)
systemd/udev
最近版本的 udev 要求内核支持 devtmpfs,否则就不会自动创建 /dev/sda 等节点,系统启动后自己用 mknod 当然也是行得通的,只是……太麻烦了。
--- Device Drivers -> Generic Driver Options -> Generic Driver Options
(/sbin/udevadm) path to uevent helper
[*] Maintain a devtmpfs filesystem to mount at /dev
还有些 systemd 要求的配置,在 gentoo wiki 上都能找得到。
Video
显卡相关的,kernel modesetting 当然不能少。
--- Device Drivers -> Graphics support -> /dev/agpgart (AGP Support)
<*> Intel 440LX/BX/GX, I8xx and E7x05 chipset support
--- Device Drivers -> Graphics support -> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)
<*> Intel 8xx/9xx/G3x/G4x/HD Graphics
[*] Enable modesetting on intel by default
Sound
--- Device Drivers -> Sound card support -> Advanced Linux Sound Architecture
<*> Sequencer support
< > Sequencer dummy client
<*> OSS Mixer API
<*> OSS PCM (digital audio) API
[*] OSS PCM (digital audio) API - Include plugin system
[*] OSS Sequencer API
< > HR-timer backend support
-*- Dynamic device file minor numbers
--- Device Drivers -> Sound card support -> Advanced Linux Sound Architecture -> PCI sound devices -> Intel HD Audio
[*] Build Realtek HD-audio codec support
[*] Build HDMI/DisplayPort HD-audio codec support
File systems
我的分区主要是 ext4,备份分区、/usr/portage 是 btrfs。以前 /usr/portage 都用 reiserfs3, 现在打算换用 mkfs.btrfs -M,另外 squashfs 可能也是个不错的选择。
--- File systems
<*> The Extended 4 (ext4) filesystem
[*] Use ext4 for ext2/ext3 file systems
<*> Btrfs filesystem (EXPERIMENTAL) Unstable disk format
像上面这样选就不需要 ext2 ext3 了。还有几项是 systemd 需要的,这里就不再提了。
Card Reader
--- Device Drivers -> Staging drivers
<*> RealTek PCI-E Card Reader support
Virtualization
为了使用 qemu-kvm,注意 BIOS 里要启用 virtualization。
--- Virtualization
<*> Kernel-based Virtual Machine (KVM) support
<*> KVM for Intel processors support
其他
还有些 PCI 设备未能找到驱动,哪位大侠可指点一二?而且也不能控制风扇,无法使用 Fn 那些键。
% sudo lspci -k
00:00.0 Host bridge: Intel Corporation 3rd Gen Core processor DRAM Controller (rev 09)
Subsystem: Sony Corporation Device 90a8
Kernel driver in use: agpgart-intel
00:02.0 VGA compatible controller: Intel Corporation 3rd Gen Core processor Graphics Controller (rev 09)
Subsystem: Sony Corporation Device 90a8
Kernel driver in use: i915
00:14.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family USB xHCI Host Controller (rev 04)
Subsystem: Sony Corporation Device 90a8
Kernel driver in use: xhci_hcd
00:16.0 Communication controller: Intel Corporation 7 Series/C210 Series Chipset Family MEI Controller #1 (rev 04)
Subsystem: Sony Corporation Device 90a8
00:1a.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family USB Enhanced Host Controller #2 (rev 04)
Subsystem: Sony Corporation Device 90a8
Kernel driver in use: ehci_hcd
00:1b.0 Audio device: Intel Corporation 7 Series/C210 Series Chipset Family High Definition Audio Controller (rev 04)
Subsystem: Sony Corporation Device 90a8
Kernel driver in use: snd_hda_intel
00:1c.0 PCI bridge: Intel Corporation 7 Series/C210 Series Chipset Family PCI Express Root Port 1 (rev c4)
Kernel driver in use: pcieport
00:1c.1 PCI bridge: Intel Corporation 7 Series/C210 Series Chipset Family PCI Express Root Port 2 (rev c4)
Kernel driver in use: pcieport
00:1c.2 PCI bridge: Intel Corporation 7 Series/C210 Series Chipset Family PCI Express Root Port 3 (rev c4)
Kernel driver in use: pcieport
00:1d.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family USB Enhanced Host Controller #1 (rev 04)
Subsystem: Sony Corporation Device 90a8
Kernel driver in use: ehci_hcd
00:1f.0 ISA bridge: Intel Corporation HM77 Express Chipset LPC Controller (rev 04)
Subsystem: Sony Corporation Device 90a8
00:1f.2 RAID bus controller: Intel Corporation 82801 Mobile SATA Controller [RAID mode] (rev 04)
Subsystem: Sony Corporation Device 90a8
Kernel driver in use: ahci
00:1f.3 SMBus: Intel Corporation 7 Series/C210 Series Chipset Family SMBus Controller (rev 04)
Subsystem: Sony Corporation Device 90a8
02:00.0 Network controller: Atheros Communications Inc. AR9485 Wireless Network Adapter (rev 01)
Subsystem: Foxconn International, Inc. Device e044
Kernel driver in use: ath9k
08:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. RTS5209 PCI Express Card Reader (rev 01)
Subsystem: Sony Corporation Device 90a8
Kernel driver in use: rts_pstor
0e:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 07)
Subsystem: Sony Corporation Device 90a8
Kernel driver in use: r8169
Xorg
这个也不是令人省心的东西。注意内核要开启 evdev,即:
--- Input device support
<*> Event interface
/etc/make.conf 的配置:
VIDEO_CARDS="intel fbdev"
INPUT_DEVICES="evdev synaptics"
sys-apps/systemd-186 最好带上 gudev USE flag。
emerge xorg-server xorg-drivers。触摸板、键盘、HID USB 鼠标有一个不能用,就 Alt+SysRq+E 强制杀死所有进程回到 tty1 /bin/login 界面,这样可以不用强按电源关机再开机(这样是不是很伤机器)。如果发现这些输入设备不能用就 emerge xf86-input-{evdev,synaptics} systemd xorg-server。之所以 emerge systemd 是因为这些 xorg drivers 和 udev 的关系变得紧密起来了,而 udev 是 systemd 提供的。