購買
我需要一臺散熱小一點的筆記本,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 提供的。