由于win10的强势,每次大更新时都会将我EFI目录下的Linux EFI驱动文件破坏,不得已利用可以建立多个EFI分区的方法解决这个问题,于是选择了Arch,故备下踩坑指南。

首先说明这不是一篇介绍或者安装指南(Wiki已经很全了好么),只是在Arch使用过程中遇到了或许将来还会遇到的一些花了一定时间的坑,故记录一下。

效果图



First of All 我的Arch配置

  • 桌面环境i3(平铺式、多窗口环境)
  • Terminalxfce4-ternimal(轻量,够用)
  • Dock管理dmenu(简单、够小)
  • 文件管理thunar(xfce的,配套)
  • PDF查看器Evince(GNOME的)
  • 输入法ibus-rimeibus比较轻量)
  • 图像查看器Feh(轻量级、强大,同时用来管理桌面壁纸)

安装盘

由于启动盘的程序是根据U盘盘符名称来索引目录的,盘符的名称格式为ARCH_XXXXYY,其中XXXX为年份,YY为两位的月份。

安装

Reference:

安装成功后,启动后启动DHCP服务 systemctl enable dhcpcd.service

使用

EFI分区的标记

boot分区是要作为EFI启动的引导分区,首先就要用fdisk工具将boot分区的标记(tag)改为EFI,否则后面安装启动器时会失败~

sudoer

我的做法是参考wiki sudo,设置用户组wheel,赋予该组sudo权限,添加新用户到该组。

1
2
3
4
5
6
7
# visudo % 然后去掉wheel组的注释
# useradd -m -G wheel -s /bin/bash charles
# passwd charles
...
# su charles
...
$ % wheel user

i3xorg的协同

Reference:

记得修改文件都改在用户下,有时候不能随用户登录启动,重新启动一下电脑就好了。

退出i3回到tty-$mod+shift+e

networkmanager安装之后可以使用命令nmtui连接WIFI。

这个i3的配置真是超厉害了

Offical hot key:

i3 status配置

Reference:

首先在~/.config/i3/config.conf中添加:(作为颜色设置)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# Start i3bar to display a workspace bar (plus the system information i3status
# finds out, if available)
bar {
status_command i3status
colors {
background #555555
statusline #ffffff
focused_workspace #4c7899 #285577 #ffffff
active_workspace #333333 #5f676a #ffffff
inactive_workspace #333333 #222222 #888888
urgent_workspace #2f343a #900000 #ffffff
}

}

同时配合i3 status的设置需要以下一些软件配合。

  • 声音控制 volumeicon 并在~/.config/i3/config.conf中添加:
    #start volumeicon exec --no-startup-id volumeicon
  • xfce4-power-manager

我的放在~/.i3status.conf中的内容。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# i3status configuration file.
# see "man i3status" for documentation.

# It is important that this file is edited as UTF-8.
# The following line should contain a sharp s:
# ß
# If the above line is not correctly displayed, fix your editor first!

general {
colors = true
interval = 5
}

order += "ipv6"
order += "disk /"
order += "run_watch DHCP"
order += "run_watch VPN"
order += "wireless _first_"
order += "ethernet _first_"
order += "battery 0"
order += "cpu_temperature 0"
order += "cpu_usage"
#order += "load"
order += "tztime local"

wireless _first_ {
format_up = "Wireless: (%quality at %essid, %bitrate) %ip"
format_down = "Wireless: down"
}

ethernet _first_ {
# if you use %speed, i3status requires root privileges
format_up = "Ethernet: %ip (%speed)"
format_down = "Ethernet: down"
}

#battery 0 {
# format = "%status %percentage %remaining"
#}
battery 0 {
format = "%status %percentage %remaining"
format_down = "No battery"
status_chr = "⚇ CHR"
status_bat = "⚡ BAT"
status_full = "☻ FULL"
path = "/sys/class/power_supply/BAT1/uevent"
low_threshold = 15
}

run_watch DHCP {
pidfile = "/var/run/dhclient*.pid"
}

run_watch VPN {
pidfile = "/var/run/vpnc/pid"
}

tztime local {
format = "%Y-%m-%d %H:%M:%S"
}

load {
format = "Load: %1min"
}

disk "/" {
format = "%avail"
}

cpu_temperature 0 {
format = "CPU Temperature: %degrees °C"
path = "/sys/devices/platform/coretemp.0/hwmon/hwmon2/temp1_input"
}

cpu_usage {
format = "CPU Usage: %usage"
}

时区

由于我也不怎么经常换时区,更不使用夏令时什么的,为了保证和Windows的时间一样(Windows默认使用Localtime),就将Arch也设置成一样的。
Reference:

1
2
$ timedatectl set-time "yyyy-MM-dd hh:mm:ss" #设置localtime
$ timedatectl set-local-rtc true #使用localtime

NTP服务

输入法

我一直喜欢用ibus-rime,所以还是安装的它。

1
pacman -S ibus-rime

要配置一下.xprofile

1
2
3
export GTK_IM_MODULE=ibus
export QT_IM_MODULE=ibus
export XMODIFIERS=@im=ibus

运行命令ibus-setup进行设置。

重新登录后ibus的daemon不随系统启动,所以要运行命令ibus-daemon -drx启动。我将其加在.zshrc中,启动shell后即可启动daemon。 将export和该命令放在.xinitrc中,随i3的启动而启动。

字体

坑爹的是装系统的时候不知怎的默认的monospace等宽字体居然中英文全部都是乱码的,所以需要配置自己用户的字体配置。(其实无论如何最终都是要配置一下的啦~)
Reference:

1
2
3
4
5
%首先将windows字体拷贝过来
# mkdir /usr/share/fonts/WindowsFonts
# cp /windows/Windows/Fonts/* /usr/share/fonts/WindowsFonts
# chmod 755 /usr/share/fonts/WindowsFonts/*
# fc-cache

用户自己的配置需要放置在$XDE_CONFIG_HOME/fontconfig/fonts.conf里面。而禁止修改全局的配置文件/etc/fonts/fonts.conf,当然有其他选项可以修改用户的全局配置,请参考wiki。

1
% 我的fonts.conf

要单独启用中文的locale,在.xinitrc文件中exec i3之前添加:(不建议在全局/etc/fonts/locale.conf中设置中文,可以设置为英文,否则会导致tty乱码)

1
2
3
export LANG=zh_CN.UTF-8
export LANGUAGE=zh_CN:en_US
export LC_CTYPE=en_US.UTF-8

挖坑不懂啊 可以可以,微软的SimSun宋体就很好。
有个非常神奇的字体渲染的套件Infinanlity Bundle,可以既渲染又设置字体,而不用处理fonts.conf这个非常累人的设计。(2017年更新:作者已经跑路了,源也停止维护了)
Reference:

1
2
3
4
5
6
7
8
9
10
11
12
13
修改/etc/pacman.conf加入:
[infinality-bundle]
Server = http://bohoomil.com/repo/$arch
其中multilib和字体库没有必要安装
然后要认证下:
$ sudo pacman-key -r 962DDE58
认证过程可能比较慢, 感谢GFW.. 如果失败, 再来过就可以了. 显示完成后, 运行:
$ sudo pacman-key --lsign-key 962DDE58
更新:
$ pacman -Syyu
然后可以安装了.
$ pacman -S infinality-bundle (会删除系统自带的字体系统)
安装好后退出i3再进入即可看到效果~~~

AUR

Reference:

AUR是非常好用和实用的软件包,我用它安装了sublime, wps-office(wps, et, wpp), etc

1
makepkg -rsi   %一条命令搞定
  • f.lux
    在AUR中安装了f.lux,运行命令xflux -l 32N -g 117E即可,为使其在用户登录的时候启动,我将此命令加在了.xinitrc中。

驱动记录

本来这个没必要详细记录,毕竟给他人的参考意义不大,然而对我的参考意义还是有的,所以私心在此记录一下。

  1. 安装ALSA(声卡)
    pacman -S alsa-utils
  2. 安装显卡驱动
    • Intel核显 pacman -S mesa xf86-video-intel
    • Nvidia独显开源驱动 xf86-video-nouveau 要装 CUDAxorg wiki
  3. 安装触摸板驱动
    pacman -S xf86-input-synaptics

壁纸和截图和电源管理

壁纸需要工具feh

~/.config/i3/config.conf中加一角话:

1
2
#wallpaper
exec --no-startup-id feh --bg-scale /home/li/wallpapers/archlinux-red.png

截图需要工具xfce4-screenshoot

~/.config/i3/config.conf中加一角话:

1
bindsym Print exec xfce4-screenshooter

电源管理需要xfce4-powermanager

  1. sudo pacman -S xfce4-power-manager
  2. xfce4-power-manager-settings
  3. Make the necessary configuration settings, such as suspending upon closing the lid
    1. vi .config/i3/config
    2. Add this at the bottom:
      exec –no-startup-id sleep 3 && xfce4-power-manager

TouchPad

Reference:

My configeration at /etc/X11/xorg.conf.d/70.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
$ cat 70-synaptics.conf 
Section "InputClass"
Identifier "touchpad"
Driver "synaptics"
MatchIsTouchpad "on"
MatchDevicePath "/dev/input/event*"
Option "TapButton1" "1"
Option "TapButton2" "3"
Option "TapButton3" "2"
# 双指水平垂直滚动
Option "VertEdgeScroll" "on"
Option "VertTwoFingerScroll" "on"
Option "HorizEdgeScroll" "on"
Option "HorizTwoFingerScroll" "on"
# 负号表示inverse,数值表速度
Option "VertScrollDelta" "-111"
Option "HorizScrollDelta" "-111"
Option "CircularScrolling" "on"
Option "CircScrollTrigger" "2"
Option "EmulateTwoFingerMinZ" "40"
Option "EmulateTwoFingerMinW" "8"
Option "FingerLow" "30"
Option "FingerHigh" "40"
Option "MaxTapTime" "125"
EndSection

Lock, suspand, logout, shutdown, …

Reference:

首先我在/usr/local/bin写了i3exit如下:(其中i3lock -i …加锁屏图片)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
$ cat /usr/local/bin/i3exit 
#!/bin/sh
lock() {
i3lock -i /home/charles/Pictures/lock.png
}
case "$1" in
lock)
lock
;;
logout)
i3-msg exit
;;
suspend)
lock && systemctl suspend
;;
hibernate)
lock && systemctl hibernate
;;
reboot)
systemctl reboot
;;
shutdown)
systemctl poweroff
;;
*)
echo "Usage: $0 {lock|logout|suspend|hibernate|reboot|shutdown}"
exit 2
esac
exit 0

然后在~/.config/i3/config中添加了如下字段:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# i3exit, logout, lock ...
set $mode_system System (l) lock, (e) logout, (s) suspend, (h) hibernate, (r) reboot, (Shift+s) shutdown
mode "$mode_system" {
bindsym l exec --no-startup-id i3exit lock, mode "default"
bindsym e exec --no-startup-id i3exit logout, mode "default"
bindsym s exec --no-startup-id i3exit suspend, mode "default"
bindsym h exec --no-startup-id i3exit hibernate, mode "default"
bindsym r exec --no-startup-id i3exit reboot, mode "default"
bindsym Shift+s exec --no-startup-id i3exit shutdown, mode "default"

# back to normal: Enter or Escape
bindsym Return mode "default"
bindsym Escape mode "default"
}
bindsym $mod+Pause mode "$mode_system"

保证在按下$mod+Fn+Home=$mod+Pause时进行选择。

xrandr 多屏幕共享

xrandr命令是Arch下屏幕管理命令。

我一般用的命令是将屏幕拓展在右侧

1
$ xrandr --output VGA-1 --right-of LVDS-1 --auto

应用开坑

Gummi 的一些坑

Gummi是Linux下一个非常好用的Latex编辑工具,不过Arch下有一些坑~

JabBib配合使用作为BibTex的管理工具。JabBib在AUR中。

  • 一些TexLive的需要都没有自动装上,我装的如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$ pacman -Qs texlive
local/texlive-bibtexextra 2016.42278-1 (texlive-most)
TeX Live - Additional BibTeX styles and bibliography databases
local/texlive-bin 2016.41290-6
TeX Live binaries
local/texlive-core 2016.41843-1 (texlive-most)
TeX Live core distribution
local/texlive-fontsextra 2016.42286-1 (texlive-most)
TeX Live - all sorts of extra fonts
local/texlive-formatsextra 2016.41438-2 (texlive-most)
TeX Live - collection of extra TeX 'formats'
local/texlive-langchinese 2016.41405-2 (texlive-lang)
TeX Live - Fonts and macro packages to typeset Chinese texts
local/texlive-langcjk 2014.0-1
TeX Live - CJK (Chinese, Japanese, Korean) metapackage
local/texlive-langjapanese 2016.41443-2 (texlive-lang)
TeX Live - Fonts and macro packages to typeset Japanese texts
local/texlive-langkorean 2016.40373-2 (texlive-lang)
TeX Live - Fonts and macro packages to typeset Korean texts
local/texlive-latexextra 2016.42294-1 (texlive-most)
TeX Live - Large collection of add-on packages for LaTeX
  • 拼写检查的时候除了自动依赖了gtkspell包,同时对于特定语言需要安装hunspell-xx的语言包才能成功开启拼写检查。
  • 关于中文输入,texlive-langchinesetexlive-langcjk是必须的。
    然后提供一个latex的tex文档示例

CUDA

Reference:

先安装Nvidia闭源驱动。nvidia-libgl

安装CUDA cuda, 居然附带了gcc 5.4

然后有个nvidia的包是不自动安装的,需要手动安装,否则module nvidia-uvm找不到。

!!要记得随时重新启动。。。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$ pacman -Qs nvidia
local/cuda 8.0.44-2
NVIDIA's GPU programming toolkit
local/libvdpau 1.1.1-2
Nvidia VDPAU library
local/libxnvctrl 370.28-1
NVIDIA NV-CONTROL X extension
local/nvidia 370.28-2
NVIDIA drivers for linux
local/nvidia-libgl 370.28-1
NVIDIA drivers libraries symlinks
local/nvidia-settings 370.28-1
Tool for configuring the NVIDIA graphics driver
local/nvidia-utils 370.28-1
NVIDIA drivers utilities
local/opencl-nvidia 370.28-1
OpenCL implemention for NVIDIA
local/xf86-video-nouveau 1.0.13-1 (xorg-drivers xorg)
Open Source 2D acceleration driver for nVidia cards

Conky

Conky 这个系统监视器配置还是可以很花哨的,所以参考了zenzire/conkyrc @github 配置了一下,好看多了~

Python 环境管理策略

Arch Linux由于包很新,会出现和pip不兼容的问题,导致Arch滚动更新失败,所以引入VirtualEnv来帮助更合理地管理Python环境。
系统python中的package采用pacman包管理器的包更新和下载策略,坚决不使用pip更新和下载。
当使用特定包工作是,使用virtualenv,用pip管理和下载在virtualenv`中的包。

U 盘文件系统

按说安装了thunar后U盘插上时自动就挂载了,可是突然出现U盘只能读不能写的奇怪情况,原来需要安装NTFS文件系统的驱动ntfs-3g,好了,一切都好了~
记得重启

服务开坑

SSH

reference:

我的网络环境是路由器有公网IP,且有路由器管理权限,这就非常简单了:

  1. 开启服务器SSH服务,systemctl start sshd,可以用systemctl status sshd查看状态,SSH配置参考reference 1.
  2. 路由器设置MAC和内网IP绑定
  3. 设置路由器虚拟服务器映射规则,在虚拟服务器/转发规则,添加一个允许外网访问的规则。规则的目标就是批准路由允许外网可以访问到对应内网地址端口。设置为,内网地址为自己LINUX内网地址,内网端口为默认22或其他修改后的,如外网端口有设置的也设置与内网端口一样
  4. 大功告成

NTP(network time protocol)

我是为了保证时间是对的,每次启动从internet更新时间。

首先安装package ntp

编辑/etc/ntp.conf配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
$ cat /etc/ntp.conf
# Please consider joining the pool:
#
# http://www.pool.ntp.org/join.html
#
# For additional information see:
# - https://wiki.archlinux.org/index.php/Network_Time_Protocol_daemon
# - http://support.ntp.org/bin/view/Support/GettingStarted
# - the ntp.conf man page

# Associate to Arch's NTP pool
server 0.pool.ntp.org iburst
server 1.pool.ntp.org iburst
server 2.pool.ntp.org iburst
server 3.pool.ntp.org iburst

# By default, the server allows:
# - all queries from the local host
# - only time queries from remote hosts, protected by rate limiting and kod
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery

restrict 127.0.0.1
restrict -6 ::1

# Location of drift file
driftfile /var/lib/ntp/ntp.drift
logfile /var/log/ntp.log

开始使用# ntpd -u ntp:ntp

启动时启用服务# systemctl start ntpd.service

查看同步状态# ntpq -q

根目录占用空间过多

参考Pacman (简体中文)清空软件包缓存就可以达到很好的效果。

LAMP and Owncloud

Reference:

FTP

ARCH wiki vsftp

xfce4 ternimal 快捷键设置

参考xfce论坛$HOME/.config/xfce4/ternimal/accels.com文件里设置快捷键, PRIMARY键似乎默认是Ctrl,然后我添加了Ctrl+Shift+t为创建新的一个tab,因为新tab的路径和当前tab的路径是一样的。