Thinkpad T410 与 Arch Linux的那些事

本来打算写一个archlinux的安装记录,先前在Virtualbox上测试了好长时间,真机安装的时候却发现完全不一样,显卡驱动、wifi网络都是问题,所以干脆将这个文档作为一个安装使用的记录,随时更新使用情况,方便大家参考。

1. 安装Archlinux Base系统

制作USB启动盘

必须使用USB Writer刻录Archlinux ISO文件到U盘,其他工具均不靠谱。刻录完成后U盘从大小看感觉不太正常,是因为有一个分区被隐藏了,勿要大惊小怪:

U盘大小截图

500M隐藏分区

按照Wiki安装

Archlinux Wiki Beginners' guide
Archlinux的Wiki文档写的非常不错,完全按照最新的官方文档安装应该不会有任何问题。
Archlinux的ISO做的不怎么样,这么大ISO文件(600MB+)安装过程竟然还必须联网更新数据包,相比Debian的netinst.iso才200MB。自带的安装工具还算比较齐全,比如zsh,还有好用的wifi-menu,让安装过程很是顺利。

注意几个点:

  1. Wiki里的部分安装过程不需要操作,浪费时间,比如LiveCD操作、Language配置等,这些配置都是针对临时的安装环境,重启后都失效。
  2. 分区表、引导工具以及分区工具选择
    BIOS:MBR:GRUB:fdisk
    UEFI:GPT:SYSLINUX:cgdisk
  3. 分区情况

/boot 引导分区,尽量有,隔离故障时非常有用。500M完全够用了。
/ root分区,必须有,1/3容量分配即可,大部分情况下/只是用于安装软件,保存软件本身的数据。
/home分区,必须有,2/3容量分配。除了用户自己的数据,软件本身外的数据也可以放到/home下, 不用单独/opt分区了,太麻烦。比如virtualbox等虚拟机文件就可以放到这里。
swap分区,完全没必要。现代内存几乎都比较大,不需要swap分区。随后还需要针对SSD将swap分区读写降到最小。

  1. pacman mirrorlist备份一份方便以后使用。并将.cn/的都留下,其他全删掉,包括163(都说163不稳定)。

cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.installbak
cat /etc/pacman.d/mirrorlist.installbak | grep -e .cn/ > /etc/pacman.d/mirrorlist

  1. 新系统字符集建议将en_US.UTF-8和所有zh_*都够选。

2. 安装基础软件

更新软件源,安装必备软件

pacman -Syy
pacman -Syu
pacman -S vim

安装GUI

GUI环境的安装过程与虚拟化环境差别最大,因为VMWare/Virtualbox环境下,驱动都是特定的,系统安装包已经内置,比较简单,真机环境下就相对复杂很多。
不说显卡种类(Nvidia,Intel,AMD),单说Nvidia一家就有数种闭源驱动,再加上开源的nouveau驱动就更是混乱。本节尽量将Nvidia部分说明白,其他显卡请从Archlinux Wiki Xorg开始疏理。

Nvidia Linux显卡驱动介绍

主要参考URL
1. Archlinux Wiki Xorg
2. Archlinux Wiki Nvidia驱动
3. Archlinux Wiki Nouveau驱动
4. Archlinux Wiki KMS

Nvidia显卡分类

  • 闭源驱动:
  • Nvidia厂家驱动。需要官方下载驱动文件,sh运行,期间会通过kernel-source对驱动进行编译,所以需要安装kernel source。不建议,过程复杂,不能滚动升级
  • Nvidia pacman官方仓库驱动。直接pacman安装。建议,安装简单,滚动省级
  • 开源驱动
  • pacman 官方仓库开源驱动,直接pacman安装 xf86-video-nouveau,需要配置KMS、/etc/X11/xorg.conf文件。次推荐,较复杂

Nvidia pacman 官方闭源驱动型号选择
Nvidia pacman官方闭源驱动虽然安装简单,但前提是安装包型号选对的情况,否则将会非常混乱。
Archlinux Wiki Nvidia驱动的Installing小节针对如何选择驱动型号做了详细的介绍,再此简述一下,以原文更新为准:

  1. 确定显卡型号
    $ lspci -k | grep -A 2 -i "VGA"
  2. 查看显卡对应的code name (如NV50, NVC0等)
    根据上一条命令查询的显卡型号在code names page中找到对应的code name。
  3. 根据对应的code name选择相关驱动包
  • GeForce 400 series cards and newer [NVCx and newer],在官方pacman仓库安装 nvidia或nvidia-lts 包。
  • GeForce 8000/9000 and 100-300 series cards [NV5x, NV8x, NV9x and NVAx] from around 2006-2010, 在官方pacman仓库安装 nvidia-340xx 或 nvidia-340xx-lts 包。
  • GeForce 6000/7000 series cards [NV4x and NV6x] from around 2004-2006, 在官方pacman仓库安装 nvidia-304xx 或 nvidia-304xx-lts 包。
  • 没有找到对应code name的新卡,从AUR中安装 nvidia-beta
  • legacy的老卡,从AUR中安装对应的驱动,或使用开源nouveau驱动。
  1. 重启后Nvidia驱动生效
    重启后,console界面的字体会变得比较大,显示效果比较差,因为Nvidia驱动在X11启动后在会被使用,console界面没有调用显卡驱动,如果需要console界面要有好的显示效果,就需要配置KMS,在kernel启动后就接管显卡驱动。

显卡驱动相关文件和工具

  1. /etc/X11/xorg.conf X11配置文件
    主要参数:
  • Driver,指定驱动模块名称
  • BusID,指定显卡PCI ID,Archlinux Wiki Nvidia驱动 的Troubleshooting章节No screens found on a laptop/NVIDIA Optimus有针对该参数的配置方法。

可以使用nvidia-xconfig命令自动生成Xorg.conf文件,也可以手工配置。

  1. X11测试

Xorg :1&
xterm -display :1&

  1. X11日志文件
    用户日志文件:~/.local/share/xorg/Xorg.0.log
    root日志文件:/var/log/Xorg.0.log

  2. Kernel日志
    dmesg

  3. 启动DM方法

  • ~/.xinitrc文件中使用exec gnome-session,用于startx(xinit的前端)
  • gdm等工具

GUI安装过程###

由于各个安装包的依赖关系,冲突的可能性很大,建议严格按照如下顺序来安装,避免不必要的问题:

Xorg--->gnome/gdm(DM/DM)---->显卡驱动->dbus

因为nVIDIA的显卡驱动可能会修改X11的一些配置,如果先安装显卡驱动可能会导致某些文件不能正常写入,需要自己nvidia-xconfig生成一下,以后熟悉了可以挑战一下。

正式安装步骤:

pacman -S xorg-server xorg-xinit xorg-utils xorg-server-utils
安装xorg-server时会提示需要选择libgl版本,一共有四个选择,Thinkpad T410选择第三项(nvidia-340xx-libgl)
pacman -S gnome gnome-extra gdm
pacman -S nvidia-3400xx
安装驱动程序,Thinkpad T410安装nvidia-3400xx,其他显卡根据上边的选择步骤选择
pacman -S dbus


可选安装Nvidia开源驱动,测试比较复杂,需要结合KMS。安装闭源驱动前要完全卸载Nvidia闭源驱动。不推荐此方法。操作步骤如下:

pacman -S xf86-video-nouveau
vim /etc/mkinitcpio.conf
增加MODULES=“nouveau"
mkinitcpio -p linux

可选安装Cinnamon DM

pacman -S cinnamon

Nvidia显卡配置##

默认安装完毕后,X11是没有xorg.conf配置的,但是不影响DM的使用。
小问题:使用Fn+Home/End调整屏幕亮度时可以显示调整的图示,但是没有效果,需要生成xorg.conf文件,并增加配置:

nvidia-xconfig 生成xorg.conf配置文件
vim /etc/X11/xorg.conf 增加如下Option配置到Device部分,并对其文字

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    Option         "NoLogo" "1"
    Option         "RegistryDwords" "EnableBrightnessControl=1"
EndSection

安装Yaourt

/etc/pacman.conf文件最后增加如下内容:
/etc/pacman.d/mirrorlist文件中增加应该也是可以的,但是我在Virtualbox下测试没有问题,Thinkpad T410下测试就报错archlinuxcn/fr database err

[archlinuxcn]
SigLevel = Optional TrustedOnly
Server = http://repo.archlinuxcn.org/$arch
[archlinuxfr]
Server = http://repo.archlinux.fr/$arch

pacman -Sy yaourt


如果遇到关于key的错误,可以安装如下keyring包:

pacman -S archlinux-keyring
pacman -S archlinuxcn-keyring

参考URL:
灵活使用yaourt
Error: Key could not be imported

安装字体

pacman -S ttf-bitstream-vera ttf-dejavu ttf-droid
yaourt -S ttf-ms-fonts wqy-microhei
fc-cache -vf
重启X

创建新用户

# useradd -m ray
# passwd ray

$ visudo
在root条目下增加
ray ALL=(ALL:ALL) ALL

输入法

sudo pacman -S ibus ibus-libpinyin ibus-qt

Gnome3环境

  1. 不需要.xinitrc设置,例如export QT_IM_MODULE,GTK_IM_MODULE,XMODIFIERS
  2. 不需要中启用ibus-daemon
  3. 不需要在IBus首选项中添加输入法
  4. 需要配置Gnome->Setting->Region&Language->增加Input Source,增加En和Chinese。

配置完后,Gnome右上角就会显示中英文切换图标。

Cinnamon环境
需要手工将ibus daemon加入到Startup Application Preferences的启动项中:
Name: ibus
Command: /usr/bin/ibus-daemon –drx

3. Gnome优化#

Gnome主题安装##

Gnome主题分为如下3类:

  • Window --->程序窗口样式
  • GTK+ --->gtk程序界面风格
  • Shell theme --->Gnome界面风格(顶部栏和搜索栏)

Gnome3主题存放目录:

  • 系统全局目录:/usr/share/themes/
  • 用户本地目录:~/.themes
GnomeTweak截图

pacman -S gnome-tweak-tool
主题:
pacman -S numix-themes
yaourt gtk3-zukitre-theme
图标:
yaourt ultra-flat-icons 推荐
yaourt numix-circle-icon-theme 配合docky效果好
Dock:
pacman -S docky
动态桌面显示:
pacman -S conky curl

参考URL:
教你6步定制你的Ubuntu桌面
Gnome3美化教程
reddit-unixporn
Cinnamon Theme
Ubuntu Theme
Gnome Look
Linux Mint Theme

Gnome3 auto hide top pannel extension安装##

yaourt gnome-shell-extension-hidetopbar-git
重启Gnome3,并使用gnome-tweak激活。

Gnome3 开启右上角网络连接图标##

注意大小写
systemctl enable NetworkManager.service
systemctl start NetworkManager.service

NetworkManager是Gnome自己的无线管理服务,与netctl/wpa_actiond服务冲突。两个无线管理服务同时使用会导致无线连接失败。NetworkManager搜索无线也连接不上,systemd --failed会看到netctl@wlp3s0服务failed且为static状态,对其的所有enable/disable操作均不生效,查文档应该是被其他启动项所以依赖。解决的方法就是删除netctl和wpa_actiond包,因为Gnome自身的NetworkManager有GUI,兼容性最好。

pacman -R netctl wpa_actiond

参考URL:
What makes a systemd service "static"? [SOLVED]

安装Thinkpad T410驱动

  1. 声卡驱动
    pacman -S alsa-lib alsa-utils alsa-oss alsa-lib默认安装了
  2. 触摸板驱动
    pacman -S xf86-input-synaptics
  3. 硬盘
    yaourt -S hdaps tp_smapi SSD硬盘不需要安装
    把tp_smapi和hdaps添加到modules,hdapsd添加到daemon中去。
  4. 指纹识别
    yaourt -S fingerprint-gui
  5. Wifi LED blink闪烁关闭
    参考Disabling LED blink

vim /etc/tmpfiles.d/phy0-led.conf 文件不存在,需要建立
增加如下内容:
w /sys/class/leds/phy0-led/trigger - - - - phy0radio
重起或使用如下命令立即激活:
systemd-tmpfiles --create phy0-led.conf

参考URL:
Archlinux Wiki's Hard Drive Active Protection System
在ThinkPad T420上安装Archlinux
Archlinux Wiki's Lenovo ThinkPad T410
Archlinux Wiki's Fingerprint-gui
How to install the latest Nvidia drivers on Ubuntu 14.04 Trusty Tahr
PowerTOP Will Maximize Your Linux Laptop’s Battery Life

安装32bit的应用程序lib库

修改/etc/pacman.conf文件,注释掉如下内容:

[multilib]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist

其他软件

pacman -S flashplugin
pacman -S ntfs-3g 读写NTFS格式的分区,archlinux默认可以读NTFS
pacman -S rhythmbox

设置Rhythmbox:
去掉Edit → Plugins → DAAP Music Sharing,否则Rhythmbox启动非常慢。
pacman -S gnome-mplayer
pacman -S gstreamer0.10-ugly-plugins gstreamer0.10-bad-plugins gstreamer0.10-ffmpeg

Deepin系列软件:
Deepin Github by @fasheng
pacman -S deepin-screenshot

VPN
pacman -S networkmanager-pptp networkmanager-vpnc networkmanager-openvpn

Pacman 优化

加速Pacman

pacman -S axel
vim /etc/axelrc
注释掉如下行:
alternate_output = 1
vim /etc/pacman.conf
增加如下行
XferCommand = /usr/bin/axel -n 5 -a -o %o %u

加速Yaourt
Yaourt下载使用的是makepkg,所以上述pacman加速方式对yaourt不生效,所以需要进行如下操作:

vim /etc/makepkg.conf
将http::/usr/bin/wget -c -t 3 --waitretry=3 -O %o %u改成http::/usr/bin/axel -o %o %u

参考URL:
Improve pacman performance
Arch Linux之pacman调用axel多线程加速下载
加速yaourt----yaourt与makepkg调用其他下载工具
pacman神装一套配置方案

Pacman Mirrorlist
滚动更新有可能会将备份的本地mirrorlist文件冲掉,这时候可以使用官方的Mirrorlist Generator重新下载:

  1. X环境,访问Archlinux Mirrorlist Generator下载即可。
  2. Console环境:

wget -O /etc/pacman.d/mirrorlist https://www.archlinux.org/mirrorlist/all/

参考URL:
Archlinux Wiki's Mirrors

技巧

截图

Gnome3自带:

  1. 全屏截图:PrintScreen 快捷键
  2. 活动窗口截图:Alt+PrintScreen 快捷键
  3. 指定区域截图:Shift+PrintScreen 快捷键

参考文章

Archlinux.org Wiki
archlinux吧
Ubuntu Wiki's X
Gentoo Wiki
Gentoo Wiki TW
在预装Win8 (UEFI)的ThinkPad上加装ArchLinux系统
Archlinux ThinkPad T410安装指南
ssd安装archlinux
在移动硬盘上安装 Arch Linux
Archlinux Wiki's Partitioning
Redhat Partitioning Scheme
[SOLVED] Intel Wireless: Can't connect faster than 54Mbit
Suddenly Slow Wireless - Intel Centrino N 6235
Tyrant's Arch Linux
Arch Linux 的靈魂:PKGBUILD、AUR 和 ABS
我在ArchLinux下使用的程序

推荐阅读更多精彩内容