日常使用ArchLinux

日期: 2018-03-23 更新: 2018-06-12 分类: geeks

简单来说,受够了windows,买不起osx,就只能折腾linux。折腾了好几个发行版,这次换了archlinux了。理由很简单:软件版本新、滚动发行、yaourt一切。

系统安装

硬件信息

戴尔Inspiron 灵越 燃7000(Ins 14-7460-D1525S)

安装流程

启动安装镜像

https://mirror.163.com/archlinux/iso/latest/

1
https://mirror.163.com/archlinux/iso/latest/archlinux-2018.03.01-x86_64.iso
  1. 使用grub直接引导iso镜像,其中archisolabel建议设置成iso的实际label。(manjaro的参数名称是misolabel

    1
    2
    3
    4
    5
    6
    menuentry 'install arch' {
    loopback loop (hd0,1)/.boot/linux/archlinux-2018.03.01-x86_64.iso
    set root=(loop)
    linux /arch/boot/x86_64/vmlinuz archisolabel=ARCH_201803
    initrd /arch/boot/x86_64/archiso.img
    }
  2. 启动过程中会遇到问题,停在rootfs界面。

    1
    Waiting 30 second for device /dev/disk/by_label/ARCH_201803 Error

    手动挂载iso文件所在的分区,假设挂载到/usb,并加载对应的iso文件,然后退出rootfs

    1
    losetup /dev/loop0 /usb/archlinux-2018.03.01-x86_64.iso

基础安装

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
# 有线网会自动连接,无线网需要手动连接
# wifi连接向导
#wifi-menu
# 分配ip
#dhcpcd

# 同步时间
timedatectl set-ntp true

# 分区,并挂载到`/mnt`(注意是否是efi启动)

# 镜像源
cat << EOF > /etc/pacman.d/mirrorlist
Server = http://mirrors.163.com/archlinux/$repo/os/$arch
EOF

# base-devel包含yaourt所需组件
pactrap /mnt base base-devel

# 生成分区挂载信息,如果有swapfile,注意修改路径
genfstab -U /mnt >> /mnt/etc/fstab
#sed -i 's/\/mnt\//\//g' /mnt/etc/fstab

# chroot
arch-chroot

# ****** 以下为chroot环境 ******

# 时区
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# 好像能避免windows、linux相差8小时的问题
hwclock --systohc

# 语言
cat << EOF >> /etc/lcoale.gen
en_US.UTF-8
zh_CN.UTF-8
EOF
echo LANG=en_US.UTF-8 > /etc/lcoale.conf

# 主机名
echo double >> /etc/hostname
cat << EOF /etc/hosts
127.0.0.1 localhost
::1 localhost
127.0.0.1 double
::1 double
EOF

# NTFS分区支持
pacman -S ntfs-3g

# intel cpu
pacman -S intel-ucode
# 安装引导
pacman -S grub efibootmgr
grub-install --target=x86_64-efi
grub-mkconfig -o /boot/grub/grub.cfg

# 如果使用的是无线连接,需要安装以下包以支持wifi-menu
# 也可以不安装这个包,直接安装响应的网络管理器,配合图形界面使用
# 如:wicd(lxde/xfce4)、networkmanager(gnome/kde/deepin)
# 注意启用相应的网络服务,netctl/wicd/networkmanager等只能启动一个
#pacman -S dialog

# 支持32位、aur源
cat << EOF >> /etc/pacman.conf
[multilib]
Include = /etc/pacman.d/mirrorlist

[archlinuxcn]
Server = http://mirrors.163.com/archlinux-cn/$arch
EOF
pacman -Syy
pacman -S archlinuxcn-keyring yaourt

退出并重启

1
2
3
exit
umount -R /mnt
reboot

图形界面

结构

Linux系统 <=> 显卡驱动 <=> 图形服务 <=> 桌面管理器 <=> 桌面环境姑且这么理解吧,之前总搞不懂装个图形界面怎么这么多东西。

显卡驱动

  1. intel

    1
    pacman -S xf86-video-intel
  2. nvidia

    1
    2
    3
    4
    5
    6
    7
    8
    # nouveau驱动比较菜鸡,可以考虑安装nvidia包
    #pacman -S xf86-video-nouveau
    pacman -S nvidia lib32-nvidia-utils
    pacman -S bumblebee lib32-virtualgl
    systemctl enable bumblebeed
    usermod -a -G bumblebee nono
    # 重启
    pacman -S primus lib32-primus

32位OpenCL

1
pacman -S lib32-mesa

测试

1
2
3
4
5
6
pacman -S mesa-demos
glxgears -info
optirun glxgears -info
# 添加vblank_mode=0,primus才能全力运行
vblank_mode=0 primusrun glxgears -info
vblank_mode=0 optirun -b primus glxgears -info

optirun默认使用virtualgl桥接,效率比primus低

steam中游戏启动参数

1
vblank_mode=0 primusrun %command%

国服dota启动参数

1
vblank_mode=0 primusrun %command% -language schinese -international -perfectworld

图形服务

1
pacman -S xorg-server

桌面环境

推荐Deepin,国人开发,界面美观,工具丰富。

1
2
3
4
5
6
7
8
9
pacman -S deepin deepin-extra
# 网络组件(原则同上所述)
pacman -S networkmanager
systemctl enable NetworkManager

# 蓝牙播放设备所需组件,bluez默认已经安装
pacman -S bluez pulseaudio-bluetooth
# 蓝牙服务(蓝牙图标)
systemctl enable bluetooth

桌面管理器

lightdm作为deepin的依赖会自动安装

设置登录界面/etc/lightdm/lightdm.conf

1
2
3
[Seat:*]
...
greeter-session=lightdm-deepin-greeter

启用lightdm桌面管理器

1
systemctl enable lightdm

输入法

1
2
3
4
5
6
7
8
9
10
11
12
13
# 中文字体 cjk(中日韩)
pacman -S noto-fonts-cjk
# yaourt不能以root运行
yaourt -S fcitx-sogoupinyin
# 用fcitx-configtool而不用kcm-fcitx(kde),会安装kwallte
# fcitx-gtk fcitx-qt能让输入法支持各个架构写的程序
pacman -S fcitx-configtool fcitx-gtk2 fcitx-gtk3 fcitx-qt4 fcitx-qt5
# 设置环境变量,否则输入法切换不出来
cat << EOF >> /etc/environment
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx
EOF

应用软件

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
# 工具
yaourt -S zsh git subversion tmux mlocate
# 编辑器
yaourt -S vim sublime-text-imfix atom phpstorm
# 网络
yaourt -S uget chromium firefox-i18n-zh-cn
# 开发
yaourt -S nodejs npm php mariadb-client redis
yaourt -S postman-bin dbeaver docker docker-compose
yaourt -S virtualbox virtualbox-host-modules-arch virtualbox-ext-oracle virtualbox-guest-iso
# 把当前用户加入virtualbox用户组,否则virtualbox识别不到usb设备
usermod -a -G vboxusers ${USER}
# 聊天社交
yaourt -S thunderbird-i18n-zh-cn deepin-wine-tim electronic-wechat
# 音乐
yaourt -S netease-cloud-music
# wps、pdf
yaourt -S wps-office ttf-wps-fonts foxitreader
# 图片处理
yaourt -S gimp
# 游戏
yaourt -S steam steam-native-runtime
#yaourt -S steamcmd
# 墙
yaourt -S shadowsocks kcptun tsocks
# 远程协助
yaourt -S teamviewer-beta
# 内网穿透
yaourt -S frp
# 等宽字体
yaourt -S ttf-iosevka adobe-source-code-pro-fonts
# android安卓工具,adb/fastboot/driver
yaourt -S android-tools android-udev mtpfs gvfs-mtp gvfs-gphoto2
# 其他
yaourt -S sshpass
yaourt -S man-pages-zh_cn

开机动画

这里指的是,从grub选中以后,到出现登录界面之间的加载过程中的动画。使用KMS组件plymouth

安装

1
2
3
4
yaourt -S plymouth
# 以下为可选操作,plymouth-theme-arch-logo-new是个比较好看的动画(主题)
yaourt -S plymouth-theme-arch-logo-new
plymouth-set-default-theme arch-logo-new

配置KMS

编辑/etc/mkinitcpio.conf,把plymouth添加到HOOKS的base udev之后,示例如下

1
HOOKS=(base udev plymouth autodetect modconf block filesystems keyboard fsck)

重建内核

1
mkinitcpio -p linux

如果设置主题时加上-R参数,会自动执行上述操作

1
plymouth-set-default-theme -R arch-logo-new

修改内核参数

如果启动引导器是GRUB,编辑/etc/default/grub,给常量GRUB_CMDLINE_LINUX_DEFAULT添加quiet splash

1
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

然后重新生成grub配置文件

1
grub-mkconfig -o /etc/grub/grub.cfg

切换Plymouth版本的桌面管理器

能够使开机动画与登录界面平滑过度

以lightdm为例

1
2
systemctl disable lightdm
systemctl enable lightdm-plymouth

常见问题/FAQ

  1. yaourt执行安装命令后提示找不到数据库错误!
    这是翻译的坑,原文是no database errors have been found,意思是没有发现数据库错误,就是没有错误,一切正常。
  2. adb shell提示一下错误信息

    1
    error: insufficient permissions for device

    archlinux安装android-udev包即可。其他发行版参考在硬件设备上运行应用

参考文章