惠普暗影精灵2上安装 Gentoo 并自己编译内核
© CC BY-SA 4.0 International License
署名:oldk1331@gmail.com
注: 本文投稿于2016年,所以 “今年” 指的是2016年。
一个月前刚换了新的笔记本,惠普暗影精灵2, i5 6300HQ + Nvidia 960M + Intel 7265 无线网卡。
作为一个长期 Gentoo 用户,当然要自己编译内核了。当年自己编译内核很痛苦,经常遇到 kernel panic ,但现在有经验了,这次只编译一次就成功跑起来了,当然在后续几天使用的过程中逐步完善了全部硬件的完美驱动。下面从头道来。
关闭 Secure Boot
面对新笔记本,第一步是关闭 Secure Boot ,使用 liveDVD 进入系统。新电脑,一定要用最新的 liveDVD (拥有最新的 Linux 内核),这样才能更好地识别硬件,方便后续编译内核。碰巧 Gentoo 官方最近发布了年度 liveDVD 20160704 。当然由于 liveDVD 不能带闭源驱动,所以散热噪音大。
装系统
chroot 进新系统编译内核。自已编译内核有很多好处:
- 指定 boot 参数 CONFIG_CMDLINE ,在 UEFI 系统上可以直接启动,无需 grub 。
- 根据自己的硬件定制内核,无需 initrd 。
- 直接将某些硬件的 firmware 编入内核,有些硬件的 firmware 在初始化后无法再加载。
- 对于 Intel 的 GPU 来说,尤其是新的,可以开启 CONFIG_DRM_I915_PRELIMINARY_HW_SUPPORT ,可能有性能和功耗上的优化。而且可以通过 i915.fastboot=1 使屏幕早早显示内容,不会黑屏。
- 更加美化:面对高分辨率的屏幕,默认情况下终端的字体小到不能直视了吧?开启 CONFIG_FONT_SUN12x22 获得大字体,以及开机时的企鹅 logo : LOGO_LINUX_CLUT224 。
- 自己编译,更小的内核,更高的性能,更短的开机时间,更好的硬件支持。比如 HP 的硬盘摔落保护驱动 CONFIG_HP_ACCEL ( windows 下叫 3D DriveGuard ), Intel 的 Rapid Start Technology Driver CONFIG_INTEL_RST ,笔记本的功能键 WMI 等等。
编译驱动是编译内核的很主要的一部分,也是最烦的一部分,面对浩如烟海的各类硬件驱动,该如何找到适合自己硬件的呢?当然编译内核需要一定的软硬件知识以及英语水平,要能读得懂 F2 给出的基本帮助。
编译驱动最重要的有几点
- 硬盘驱动,没有它就会 kernel panic 。
- 显卡驱动, Intel 用户的话配置好 i915 集成显卡驱动。
- 网卡驱动,没有它上不了网。
- 声卡驱动。
- 外设驱动。
如何找到它们对应的型号?隆重介绍" lspci -k "。在 liveDVD 上运行它,能列出检测到的驱动和使用的内核模块名称,比如 r8169 (有线网卡)、 iwlwifi (无线网卡)、 rtsx_pci (读卡器)、 snd_hda_intel (声卡)、 ahci (硬盘)、 xhci_hcd ( USB3.0 )、 proc_thermal (温度传感器)等,有了内核模块的名字,再找对应内核配置的名称就快多了。
新系统启动后检查 dmesg 来看哪些硬件有问题,再进行进一步修改。
现在我的 4.6.5 内核大小是 7.2MB , /lib/modules 24MB(其中 16MB 是 Nvidia 闭源驱动),开机时内核3秒钟加载完全部驱动,进入用户空间( /bin/init 开始运行)。
Firmware
新的 Intel GPU 也需要固件了,和功耗控制有关;其它的网卡也要固件, CPU 要 microcode 。这是我用到的固件文件。
i915/skl_dmc_ver1.bin
i915/skl_guc_ver6.bin
iwlwifi-7265D-21.ucode
rtl_nic/rtl8168h-2.fw
功耗控制
在全部硬件完美识别并驱动后,做好功耗控制。 Linux 的功耗控制可以完全不输 Windows 。在最低屏幕亮度下, powertop 给出的待机功耗可低至 9W (在无线网卡开启的情况下), 60Wh 的电池可待机约7小时,实际轻度使用中不到 15W ,可用4小时。正常待机情况下噪音不到 30dB (手机粗略测的),最低待机温度38度(室温30度左右),轻度使用时43度。并且完美配置睡眠(我不太喜欢休眠)。
Nvidia 闭源驱动及双显卡配置
对于笔记本来说,出于散热的考虑,也只能选择闭源驱动了。其实我想买不带独显的4核标压笔记本,但根本没有卖的(极少)。安装 Nvidia 的闭源驱动应该各个发行版都有自己的解决办法, Gentoo 在命令行里直接运行
emerge nvidia-drivers
双显卡配置说明
- 首先有的笔记本硬件支持“真”双显卡,配置内核 CONFIG_VGA_SWITCHEROO 就行了。
- 但大部分笔记本不是这样的。 Nvidia 官方也在试图解决这个问题,使用较新的 Nvidia 闭源驱动,配置 Xorg 使用 modesetting 驱动输出(而不是 intel 的 X11 驱动!),结合
xrandr --setprovideroutputsource modesetting NVIDIA-0
以及配置 mesa 的 OpenGL 库为 Nvidia 的(Gentoo上使用eselect opengl set nvidia
实现,其它发行版可能是更改环境变量),就能使整个 X 桌面使用独显。详见http://us.download.nvidia.com/XFree86/Linux-x86_64/367.35/README/randr14.html - bumblebee ,我不是很熟。但它很久没有更新了,但它支持对个别应用程序开启独显(而不是全局开启),但是开源驱动下的独显有可能性能还不如集显。
当然啦,最新的 Intel 集显的 mesa 驱动实现了 OpenGL 4.4 ,所以大部分(所有?)的 3D 应用都能打开,基本上 HD530 集显的性能很够用,所以我几乎不用独显。
其它
很多硬件相关的程序会要求内核开启某些特性,使用 git 把内核配置 .config 管理起来很有必要,不断更新不断进步。
简单总结一下:今年六月刚发布的新笔记本,网上没有任何相关的安装 Linux 的教程,使用新一代 CPU 和显卡,没有关系, Linux 内核中的驱动更新很快,这就是开源的力量!只要有经验,将 Linux 在全新的电脑上跑起来完全不是问题!如果没有经验,编译自己的内核来开启全新的体验!最后告诉你一个小秘密:你想变得比 Knuth 更强吗?他不会自己编译内核!
I did once recompile the Linux kernel --- but only when a wizard was holding my hand. http://www.ituring.com.cn/article/742
使用半年后新体验
- 不安装Nvidia显卡驱动能进一步降低功耗和散热;
极限情况下(关掉一切不必要的东西)整机待机功耗仅为3W,
可待机20小时。 -
我的各个分区都在SSD上,并使用 sudo hdparm -y /dev/sdb
来使机械硬盘停转,既节能又静音。(这个笔记本的风扇可以在
BIOS里设置默认关闭。) -
由于是Gentoo系统,自然少不了编译啦。我把 /tmp 设置为 5GB
的内存盘,编译的临时文件夹放在这里,减少对SSD的读写。
i5 6300HQ的性能足够好,编译FireFox仅需20分钟。 -
关于功耗控制,切断充电器后可以达到PC3状态(powertop中的Idle stats),
睡眠再唤醒之后能达到PC7状态,功耗能比PC3降低1W多(在powertop中
Tunables都开启的情况下)。更深的节能模式应该达不到了。 -
还是关于功耗控制,Intel开发的自家专用pstate调度器比其它的好,
我可以通过
echo 25 | sudo tee /sys/devices/system/cpu/intel_pstate/min_perf_pct
echo 60 | sudo tee /sys/devices/system/cpu/intel_pstate/max_perf_pct
echo 1 | sudo tee /sys/devices/system/cpu/intel_pstate/no_turbo
将CPU的频率强行降到60%,这样即使长期浏览网页,既不卡顿,
风扇也不会转动。Intel自家的thermald应该更智能,但我不会用。
此外还有一点不完美的地方:触控触摸板时会有轻微的电流声,
但不影响使用。
本文是LinuxStory柴米油盐计划的投稿文章,由 LinuxStory 整理发布。原作者署名为:oldk1331@gmail.com 。转载请注明出处,否则必究相关责任。
本文链接: https://linuxstory.org/hp-wasd2-install-gentoo
这需要了解内核模块,还有笔记本温度还会是烫的