制作安装媒介

首先到这里下载最新的官方 Arch Linux 安装媒介。然后,可以选择刻录或者写入到 USB 闪存盘或存储卡。

利用 dd 命令可以将安装媒介写入 USB 闪存盘或存储卡,参见这里

$ dd bs=4M if=/path/to/archlinux.iso of=/dev/sdx && sync

完成后,用安装媒介启动电脑。

安装

一键安装脚本

https://github.com/YangMame/Arch-Installer
进入live系统连接网络后执行:

wget git.io/vb9IK -O live.sh
chmod +x live.sh
./live.sh

https://github.com/si9ma/Archlinux-Installer
执行一下脚本
bash <(curl https://raw.githubusercontent.com/si9ma/Archlinux-Installer/master/install.sh)

连接网络

安装程序已经自动启动了 dhcpcd,可以自动连接动态 IP 的有线网络。利用 ping 命令检查网络是否已连接成功:

$ ping -c 3 www.baidu.com
  • 如果你是有线网并且路由器支持DHCP的话插上网线后先执行以下命令获取IP地址:

    # 设置有线连接
    systemctl start dhcpcd
    # 自动连接有线
    systemctl enable dhcpcd
    
  • 无线网:

    # 如果需要无线连接:
    pacman -S iw wpa_supplicant dialog
    wifi-menu # 选择wifi输入密码连接
    
  • ADSL宽带:

    pacman -S rp-pppoe # 安装拨号软件
    pppoe-setup    # 配置宽带用户名和密码
    systemctl start adsl    # 连接
    systemctl enable adsl # 自动连接
    

这里我们不进行有线网络的教程(在启动Arch Live CD之前插入网线即可),下面我们连接无线网络:

我们为了简便,创建一个shell脚本来进行连接。

nano wifi.sh

在nano编辑器的界面中,我们写入如下命令,并按Ctrl+O保存,Ctrl+X退出:

#! /bin/bash
echo ---Init---
rfkill unblock wifi
rfkill unblock all
ip link set wlp2s0 up
echo ---Input---
echo -n SSID:
read ssid
echo -n password:
read -s pass
echo You will connect the $ssid
echo ---state---
echo "(Connect the WLAN)"
wpa_supplicant -B -i wlp2s0 -c <(wpa_passphrase $ssid $pass)
echo "(DHCP)"
dhcpcd wlp2s0

将SSID和password替换成你的Wi-Fi名称和密码。 输入chmod a+x wifi.sh并执行./wifi.sh来启动无线网络 使用ping来验证网络:ping -c 3 archlinux.org

如果是静态 IP 的有线网络或 WiFi,请参见这里

准备存储设备

查看硬盘、内存基本信息

  • 查看硬盘分区
df -h
# 显示磁盘相关信息
blkid
# 查看块设备(包括交换分区)的信息
lsblk
# 列出所有可用块设备信息,包括硬盘,闪存盘,CD-Rom等
lsblk -f
# 列出块设备的文件系统信息
fdisk -l
# 列出设备的分区表情况
# 以上命令,均可查看硬盘情况

free -h
# 查看内存使用情况
  • 查看是否以UEFI启动
ls /sys/firmware/efi/efivars
# 如果提示efivars不存在,则不是UEFI启动。

分区应该设置多大?

注意: 以下只是简单的建议,分区大小没有严格的准则。如果可能的话,为每个文件系统保留 25% 的额外空间以应对今后的变化,还可以避免文件系统碎片。 分区的大小主要取决于个人的选择,以下内容可能会有一定帮助:

/boot - 100 MB     32M-100M (启动分区,最多只要100M左右)

实际需求大约 100 MB,如果有多个内核/启动镜像同时存在,建议分配 200 或者 300 MB。

/ - 15-20 GB

传统上包括 /usr 目录,根据安装的软件数量,会产生非常明显的增长。15-20 GB 对于大多数用户来说是一个比较合适的取值。

/var - 8-12 GB

除了其他数据以外,还包括ABS 树和 pacman 缓存。保留缓存的包提供了包降级的能力,因此非常有用。也正因为这样,/var 的大小会随着时间推移而增长。尤其是 pacman 缓存将会随着新软件的安装、系统的升级而增长。在磁盘空间不足的时候,可以安全的清理这个目录。/var 分配 8-12 GB 对于桌面系统来说是比较合适的取值,具体取值取决于安装的软件数量。

/home - [不定]

通常用于存放用户数据,下载的文件和媒体文件。在桌面系统中,/home 通常是最大的文件系统。

swap - [不定]

历史上 swap 分区的大小通常是物理内存的2倍。由于当前的电脑内存容量快速增长,这条规则已经不那么适用。在拥有不足 512 MB 内存的机器上,通常为 swap 分区分配2倍内存大小的空间。如果有更大的内存(大于 1024 MB),可以分配较少的空间甚至不需要swap 分区。在拥有 2 GB 以上物理内存的情况下,不使用 swap 分区可以获得更好的性能。

/data - [不定]

可以为需要多用户共享的文件建立一个“data”分区。也可以使用 /home 分区用于这一目的。

UEFI

推荐使用 GPT 分区表,可以和 64 位 Windows 7 以上版本进行双系统启动。

利用 cgdisk 创建 GPT 分区:

$ cgdisk /dev/sda

分区方案:

类型 大小 类型代码
/dev/sda1 EFI 系统分区 512M ef00
/dev/sda2 Linux ext4 任意 8300
/dev/sda3 Linux 交换分区 适量 8200
/dev/sda4 /boot 200-500m 看情况创建

如果电脑上已经预装了 Windows 8,你需要:

  1. 关闭 Secure Boot
  2. EFI 系统分区已经存在,不要再创建

格式化分区,启用交换分区:

$ mkfs.vfat -F32 /dev/sda1
$ mkfs.ext4 /dev/sda2
$ mkswap /dev/sda3
$ swapon /dev/sda3
$ mkfs.ext4 /dev/sda4

挂载分区:

$ mount /dev/sda2 /mnt
$ mkdir -p /mnt/home /mnt/boot
$ mount /dev/sda1 /mnt/boot

(看情况备用下方)
# 创建efi目录用于挂在efi分区
mkdir -p /mnt/boot/efi
# 挂载efi
mount /dev/sda1 /mnt/boot/efi
# 挂在boot分区
mount /dev/sda4 /mnt/boot
BIOS

推荐使用 MBR 分区表,可以和所有 Windows 版本进行双系统启动。

利用 fdisk 创建 MBR 分区:

$ fdisk /dev/sda 或者cfdisk

分区方案:

类型 大小 类型代码
/dev/sda1 Linux ext4 任意 8300
/dev/sda2 Linux 交换分区 适量 8200

格式化分区,启用交换分区:

$ mkfs.ext4 /dev/sda1
$ mkswap /dev/sda2
$ swapon /dev/sda2

挂载分区:

$ mount /dev/sda1 /mnt
$ mkdir -p /mnt/home

分区方案:

类型 大小 类型代码
/dev/sda1 Linux ext4 任意 8300
/dev/sda2 Linux 交换分区 适量 8200
/dev/sda3 /boot Linux ext4 200-300m

格式化分区,启用交换分区:

$ mkfs.ext4 /dev/sda1
$ mkswap /dev/sda2
$ swapon /dev/sda2
$ mkfs.ext4 /dev/sda3

挂载分区:

$ mount /dev/sda1 /mnt
$ cd /mnt
$ mkdir boot
$ mount /dev/sda3 /mnt/boot
$ mkdir -p /mnt/home

选择软件源

修改/etc/pacman.conf

启用 Multilib 仓库,将以下行取消注释

#[multilib] #IncIude = /etc/pacman.d/mirrorlist

(multilib 仓库让用户可以在 64 位 ArchLinux 系统上运行和编译 32 位程序)

编辑 /etc/pacman.d/mirrorlist,将要使用的源复制到最前面,然后刷新:

生成可用中国镜像站列表:

sudo pacman-mirrors -i -c China -m rank

勾选 http://mirrors.ustc.edu.cn/manjaro/ ,然后按 OK 键两次。

最后刷新缓存:

sudo pacman -Syy

pacman具体用法

安装基本系统

利用 pacstrap 脚本安装基本系统:

$ pacstrap /mnt base base-devel

生成 fstab

利用 genfstab 生成 fstab:

$ genfstab -U -p /mnt >> /mnt/etc/fstab
$ cat /mnt/etc/fstab

注意,生成 fstab 后,务必检查一下内容是否正确。如果有问题,不要再运行 genfstab,直接手动编辑 /mnt/etc/fstab 文件。

Chroot 到新系统

现在,新安装的系统还需要一些配置工作,才能自力引导系统。下面要 chroot 到新系统:

$ arch-chroot /mnt /bin/bash

这里顺便说一下,如果以后我们的系统出现了问题,只要插入U盘并启动, 将我们的系统根分区挂载到了/mnt下(如果有efi分区也要挂载到/mnt/boot下),再通过这条命令就可以进入我们的系统进行修复操作。

提前安装必须软件包

pacman -S vim dialog wpa_supplicant ntfs-3g networkmanager git wget curl

语言地区

编辑 /etc/locale.gen,去掉以下项目的注释:

en_US.UTF-8 UTF-8
zh_CN.UTF-8 UTF-8

然后运行:

$ locale-gen

最后,编辑 /etc/locale.conf

LANG=en_US.UTF-8
或者
echo LANG=en_US.UTF-8 > /etc/locale.conf
echo LANG=zh_CN.UTF-8 > /etc/locale.conf

注意:不要在这里把系统全局设置成中文,因为终端无法显示中文,请单独将桌面环境设置为中文。

终端字体(可选)

编辑 /etc/vconsole.conf

KEYMAP=us
FONT=Lat2-Terminus16

时区

依次执行如下命令设置我们的时区为上海并生成相关文件:

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
hwclock --systohc --utc

时间

利用 ntp 自动校时:

$ pacman -S ntp
$ ntpdate time.nist.gov
启动网络时间同步 
sudo timedatectl set-ntp true

将系统时间写入硬件时钟:

$ hwclock --systohc --utc

注意:Linux 的硬件时钟使用 UTC,而 Windows 则使用本地时间。如果要和 Windows 进行双系统启动,可以将 Windows 设置为使用 UTC 硬件时钟,参见这里。同时关闭 Windows 上的自动校时功能,只用 Linux 上的 ntp。

主机名(可选)

$ echo myhostname > /etc/hostname

编辑/etc/hosts文件:

vim /etc/hosts
作如下修改(将myhostname替换成你自己设定的主机名)

127.0.0.1	localhost.localdomain	localhost
::1		localhost.localdomain	localhost
127.0.1.1	myhostname.localdomain	myhostname

连接网络

可以参照上面的方法连接网络。只不过,这次需要手动启用 dhcpcd 服务:

$ systemctl enable dhcpcd.service

注意,GNOME 自带了 NetworkManager 来管理网络,这会与 dhcpcd 冲突,所以安装 GNOME 后要记得要切换到 NetworkManager:

$ systemctl disable dhcpcd.service
$ systemctl enable NetworkManager.service

设置 Root 密码、添加用户

除了设置 Root 密码外,添加一个管理员组的帐户做平时使用:

$ passwd
###useradd -m -g users -G wheel -s /bin/bash ${username}
useradd -m -g -G wheel username (请自行替换username为你的用户名)
passwd username (请自行替换username为你的用户名)
pacman -S sudo

visudo或者sudo nano /etc/sudoers

找到
# %wheel ALL=(ALL)ALL
这行,去掉之前的#注释符,保存并退出就可以了。

这里的%wheel就是代表wheel组,意味着wheel组中的所有用户都可以使用sudo命令。
当然为了安全使用sudo命令还是需要输入当前用户的密码的。

安装Intel-ucode(非IntelCPU可以跳过此步骤)

直接pacman安装:

pacman -S intel-ucode

安装和配置 Bootloader

UEFI
$ mount -t efivarfs efivarfs /sys/firmware/efi/efivars
$ pacman -S grub os-prober efibootmgr
esp_mount一般为 /boot或/boot/EFI
$ grub-install --target=x86_64-efi --efi-directory=esp_mount --bootloader-id=arch_grub --recheck
$ grub-mkconfig -o /boot/grub/grub.cfg

如果报warning failed to connect to lvmetad,falling back to device scanning.错误。参照这篇文章,简单的方法是编辑/etc/lvm/lvm.conf这个文件,找到use_lvmetad = 11修改为0,保存,重新配置grub。

如果报grub-probe: error: cannot find a GRUB drive for /dev/sdb1, check your device.map类似错误,并且sdb1这个地方是你的u盘,这是u盘uefi分区造成的错误,对我们的正常安装没有影响,可以不用理会这条错误。

BIOS
$ pacman -S grub os-prober
$ grub-install --recheck /dev/sda ##--target=i386-pc 
$ grub-mkconfig -o /boot/grub/grub.cfg
初始化内存盘
mkinitcpio -p linux

如果报warning failed to connect to lvmetad,falling back to device scanning.错误。参照这篇文章,简单的方法是编辑/etc/lvm/lvm.conf这个文件,找到use_lvmetad = 11修改为0,保存,重新配置grub。

安装后检查

如果你是多系统,请注意上面一节中对os-prober这个包的安装。

强烈建议使用如下命令检查是否成功生成各系统的入口,如果没有正常生成会出现开机没有系统入口的情况:

vim /boot/grub/grub.cfg

检查接近末尾的menuentry部分是否有windows或其他系统名入口。下图例子中是Arch Linux入口与检测到的windows10入口(安装在/dev/sda1),具体情况可能有不同:

img

如果你没有看到Arch Linux系统入口或者该文件不存在,请先检查/boot目录是否正确部署linux内核:

cd /boot
ls

查看是否有initramfs-linux-fallback.img initramfs-linux.img intel-ucode.img vmlinuz-linux这几个文件,如果都没有,说明linux内核没有被正确部署,很有可能是/boot目录没有被正确挂载导致的,确认/boot目录无误后,可以重新部署linux内核:

pacman -S linux

再重新生成配置文件,就可以找到系统入口。

如果你已经安装os-prober包并生成配置文件后还是没有生成其他系统的入口

你目前处的U盘安装环境下有可能无法检测到其他系统的入口,请在下一步中重启登陆之后重新运行

grub-mkconfig -o /boot/grub/grub.cfg

如果还没有生成其他系统的入口,请参照:

https://wiki.archlinux.org/index.php/GRUB/Tips_and_tricks#Combining_the_use_of_UUIDs_and_basic_scripting

编辑配置文件手动添加引导的分区入口。

安装 grub 主题 (可选)
$ pacman -Sy deepin-grub2-themes

编辑配置文件 /etc/default/grub

GRUB_THEME="/boot/grub/themes/deepin/theme.txt"

重新生成配置文件

$grub-mkconfig -o /boot/grub/grub.cfg

卸载分区并重启系统

现在新系统已经准备好第一次引导了,先退出 chroot 环境:

$ exit

然后,卸载分区并重启系统:

$ umount -R /mnt
$ reboot

在新系统上安装需要的软件

显卡驱动

img

参照这个表格,安装相应的包,比如你是intel的集成显卡(绝大多数人的情况),执行:

sudo pacman -S xf86-video-intel libva-intel-driver

提示:Nvidia的独显驱动如非必要,建议只装集成显卡的驱动(省电,如果同时装也会默认使用集成显卡),不容易出现冲突问题。相反,如果集成显卡驱动有问题无法装上,可以装独显驱动,具体的版本请到下面的链接查询:

https://wiki.archlinux.org/index.php/Xorg#Driver_installation

查询显卡类型:

$ lspci | grep VGA

查询可用的开源驱动:

$ pacman -Ss xf86-video | less

安装通用驱动(vesa):

$ pacman -S xf86-video-vesa

支持硬件加速的驱动程序可以在安装 X 时自动提示你安装,只需要选择正确的显卡类型,不需要显式安装。

声卡驱动

通常不需要配置就能工作,只需解除静音。需要做的只是安装 alsa-utils 软件包:

$ pacman -S alsa-utils
或者
pacman -Sy alsa-utils pulseaudio pulseaudio-alsa

方向键 选中 Master 和 PCM
[M] 取消静音

输入设备驱动

输入设备驱动已经在安装 X 时自动安装,一般不需要显式安装。不过,笔记本或触摸屏用户需要安装 synaptics:

$ pacman -S xf86-input-synaptics

如果是在 VMware 中安装

安装一些专门用于虚拟机的驱动程序:

$ pacman -S xf86-input-vmmouse xf86-video-vmware svga-dri

安装 VMware Tools,在 VMware 中选择“安装 VMware Tools”,然后:

$ pacman -S linux-headers
$ for x in {0..6}; do mkdir -pv /etc/init.d/rc$x.d; done
$ mount /dev/cdrom /mnt
$ cd /root
$ tar zxf /mnt/VMwareTools*.tar.gz
$ cd vmware-tools-distrib
$ ./vmware-install.pl

按提示一步步进行,如果最后报错,一般也不用担心,重启后 VMware Tools 能正确启动。

安装 X 窗口管理系统

$ pacman -S xorg-server xorg-xinit

安装桌面管理器

安装好了桌面环境包以后,我们需要安装一个图形化的桌面管理器来帮助我们登录并且选择我们使用的桌面环境,这里我推荐使用sddm

安装sddm

执行:

sudo pacman -S sddm
sddm --example-config > /etc/sddm.conf
设置开机启动sddm服务

这里就要介绍一下Arch下用于管理系统服务的命令systemctl了,服务的作用就是字面意思,为我们提供特定的服务,比如sddm就为我们提供了启动xorg与管理桌面环境的服务。

命令的使用并不复杂:

sudo systemctl start   服务名 (启动一项服务)
sudo systemctl stop    服务名 (停止一项服务)
sudo systemctl enable  服务名 (开机启动一项服务)
sudo systemctl disable 服务名 (取消开机启动一项服务)

所以这里我们就执行下面命令来设置开机启动sddm

sudo systemctl enable sddm

安装桌面环境

安装Xfce

直接安装软件包组(包含了很多软件包)即可:

sudo pacman -S xfce4 xfce4-goodies

安装 slim 以及主题(弃用)

$ pacman -S slim slim-themes archlinux-themes-slim
$ systemctl enable slim.service

图形界面启动方式两种

  1. startx 命令行启动

配置 xfce 桌面启动环境 ~/.xinitrc

exec startxfce4

启动 xfce 桌面

$ startx
安装GNOME
$ pacman -S gnome

要启用图形界面登录和锁屏等功能,可启用 gdm:

$ systemctl enable gdm.service

安装 GNOME 的一些常用工具(更多工具和扩展请参见这里):

$ pacman -S gnome-tweak-tool gnome-packagekit gnome-settings-daemon-updates

窗口管理器

窗口管理器负责绘制窗口的边框和背景等,处理窗口的移动、最大/小化等行为。桌面环境是窗口管理器的超集,使用窗口管理器和其它一些常用软件组成一个完整的桌面工作环境。 所以说,只安装窗口管理器,而不安装桌面环境也是可以的。(还是推荐一个桌面环境,这样好多软件,如文件管理器等,就不用自己挨个找了) 窗口管理器可以用桌面环境默认自带的,也可以自己选择,如平铺式有i3, awesome等。

安装i3
sudo pacman -S i3 dmenu
# 安装i3窗口管理器,dmenu为i3程充启动器
cp /etc/i3/config ~/.i3/config
# 创建i3配置文件,.i3没有则自己mkdir
# 如果使用xorg-init,则添加 "exec i3" 到.xinitrc,通过startx则可以启动ie
安装awesome
sudo pacman -S awesome
mkdir -p ~/.config/awesome/
cp /etc/xdg/awesome/rc.lua ~/.config/awesome/
# 安装awesome,并创建配置文件rc.lua
# 如果使用xorg-init,则添加 "exec awesome" 到.xinitrc,通过startx则可以启动ie

安装字体

安装一些常用的中英文字体:

桌面也搞定了, 继续最后一步安装字体吧. 以下根据自己需要选择运行:
pacman -S adobe-source-han-sans-otc-fonts # 使用思源黑体
pacman -S wqy-microhei wqy-zenhei ttf-dejavu # 使用文泉驿字体
yay -S ttf-dejavu-sans-mono-powerline-git
# 打补丁的dejavu字体,包含powerline图标字体
sudo pacman -S noto-fonts noto-fonts-cjk noto-fonts-emoji
# (可选)Google Noto字体
sudo pacman -S adobe-source-han-sans-cn-fonts
# (可选)安装思源体简体中文部体,中文效果比文泉好些
sudo pacman -S ttf-ubuntu-font-family
# (可选)ubuntu上的字体
yay -S ttf-ms-win10-zh_cn
# (可选)win10字体
yay -S fontconfig-infinality-ultimate
# 字体渲染优化

# 手动安装consolas安体
cd /usr/share/fonts
mkdir consolas
# copy consolas-font to /usr/share/fonts/consolas
cd consolas
sudo chmod 664 *.ttf
sudo mkfontscale
sudo mkfontdir
sudo fc-cache -fv

附:consolas字体

提前配置网络

到现在我们已经安装好了桌面环境,但是还有一件事情需要我们提前设置一下。由于我们之前使用的一直都是netctl这个自带的网络服务,而桌面环境使用的是NetworkManager这个网络服务,所以我们需要禁用netctl并启用NetworkManager

sudo systemctl disable netctl
sudo systemctl enable NetworkManager (注意大小写)

同时你可能需要安装工具栏工具来显示网络设置图标(某些桌面环境已经装了,但是为了保险可以再装一下):

sudo pacman -S network-manager-applet

这样开机以后我们就可以在图形界面下配置我们的网络啦。

完成安装

重新启动,即可由图形界面登录到系统了。祝贺你!说实话,你能有足够的耐心做到这里而没有叛逃到 Debian/CentOS,我很欣慰。相信你很快就会意识到这些麻烦不是没有回报的,欢迎加入 Archers 的行列!

如有任何问题,RTFM:Arch Linux Beginners’ Guide

一些优化

SATA 启用 AHCI 模式

SATA 有两种工作模式:原生的 AHCI 模式提供更好的性能(如热插拔和 NCQ 支持)、模拟的 IDE 模式提供更好的兼容性。一般主板出厂默认将 SATA 模式设置为 IDE 模式,但如今先进的 Linux 和 Windows 都早已原生支持 AHCI,所以我们最好打开 AHCI 模式以优化性能。

Arch Linux 在安装好以后,内核镜像默认没有载入 AHCI 驱动模块。修改 /etc/mkinitcpio.conf,添加 ahciMODULES 变量:

MODULES="ahci"

然后重建内核镜像,重新启动后 AHCI 驱动就会加载:

$ mkinitcpio -p linux

在主板 UEFI 或 BIOS 中,将 SATA 模式从 IDE(或 PATA Emulation 等等),设置为 AHCI(或 Native 等等)。需要注意的是,如果你还在用 Windows XP,它需要安装 AHCI 驱动才行。Windows Vista 及以后的版本则不需要担心这个问题(但如果你是在 Windows 安装完成后才启用 AHCI 模式,因为安装期间 Windows 会自动禁用未使用的存储驱动程序,你需要参考 KB922976(Windows Vista/7)或 KB2751461(Windows 8)来启用 AHCI 驱动程序)。

设置好以后,你可以从 dmesg 命令的输出里,找到 AHCI 和 NCQ 成功启用的证据:

$ dmesg
...
SCSI subsystem initialized
libata version 3.00 loaded.
ahci 0000:00:1f.2: version 3.0
ahci 0000:00:1f.2: irq 24 for MSI/MSI-X
ahci 0000:00:1f.2: AHCI 0001.0300 32 slots 6 ports 6 Gbps 0x10 impl SATA mode
ahci 0000:00:1f.2: flags: 64bit ncq led clo pio slum part ems apst 
scsi host0: ahci
scsi host1: ahci
scsi host2: ahci
scsi host3: ahci
scsi host4: ahci
scsi host5: ahci
...
ata5.00: 976773168 sectors, multi 16: LBA48 NCQ (depth 31/32), AA
...

优化系统启动速度

Arch Linux 的 systemd-analyze 是个很不错的工具,利用它你可以很直观地观察到系统启动的时间都花到哪儿去了:

$ systemd-analyze
Startup finished in 6.857s (firmware) + 3.157s (loader) + 1.870s (kernel) + 8.157s (userspace) = 20.044s

我注意到打开 AHCI 后,内核和用户空间的载入速度明显提高了,总启动时间从约 30 秒缩短到 20 秒,效果非常明显。

用下面这个命令,可以了解到是什么东西启动最慢:

$ systemd-analyze blame

此外,还可以把启动过程绘制成 SVG 图表供你审阅(用 GNOME 的图片预览或 Chrome 浏览器都可以打开),这个图表中你还可以观察到是否有启动慢的组件影响到了依赖它的组件的启动:

$ systemd-analyze plot > plot.svg

后续优化

安装yay

root权限打开编译/etc/pacman.conf,将下面这三行加入到文件末尾并保存:

[archlinuxcn]
SigLevel = Optional TrustAll
Server = https://mirrors.ustc.edu.cn/archlinuxcn/$arch

同步软件信息库并安装yay

sudo pacman -Syu (刷新源)
sudo pacman -S archlinuxcn-keyring
sudo pacman -Sy yay

yaourt使用(弃用)

请见yaourt

滚动更新

ArchLinux的更新机制是非常激进的滚动更新,也就是说ArchLinux的软件与内核会时刻与稳定版本保持一致,你所用的系统总是时刻保持最新的。

这个机制给很多Arch教徒带来了强大的快感,可以第一时间体验到新的软件与新 的内核,但是也存在着日常滚炸这样的问题。虽然滚动更新的包可能因为没有经过完善的测试会导致系统不能工作种种问题,但是绝大部分情况下的更新都不会导致太大的问题。修复滚炸的系统和提交Bug信息也是ArchLinux用户的技能之一。

滚动更新命令使用yay非常简单:

yay -Syu --aur

--aur参数是检查并更新AUR包中的内容。

常用软件安装

yay -S wget curl git shadowsocks-qt5 proxychains-ng shadowsocks-libev / 
visual-studio-code-bin neofetch netease-cloud-music dropbox /
kio-gdrive typora wireshark-qt virtualbox dbeaver /
medis telegram-desktop deluge aria2-fast uget /
keepass redshift deepin-screenshot playonlinux /
mailspring docker docker-compose kitematic /
deepin-wine-thunderspeed zsh oh-my-zsh-git /
openssh openssl gwenview plank rdesktop /
python2-pip numix-gtk-theme numix-circle-icon-theme-git /
google-chrome smplayer octopi okular jdk maven eclipse /
intellij-idea-ultimate-edition gradle npm nodejs /
\

systemctl enable sshd.service
#待定软件包
gksu yaourt-gui-manjaro wps-office libreoffice net-tools dnsutils inetutils iproute2 jdk nodejs npm xdg-user-dirs htop chromium deepin-wechat deepin-wine-tim ntfs-3g dosfstools ntfs-3g-fuse create_ap Vivaldi(浏览器) transmission-qt kcm-ufw docky conky filezilla Bumblebee virtualbox-ext-vnc virtualbox-guest-iso virtualbox-host-modules-arch virtualbox-ext-oracle flashplugin rhythmbox aria2 quiterss(rss订阅) thunderbird thunderbird-i18n-zh-cn zathura(pdf阅读器) texlive-{core,bin,langchinese} (LaTex) gnome-terminal-transparency(Gnome-Terminal透明) xfce4-terminal(Gnome-Terminal透明) redsocks-git pcap-dnsproxy-git studio-3t synapse yakuake mongochef firefox firefox-i18n-zh-cn Shutter(截图)

解压软件
fire-roller(gnome) ark(kde) p7zip unrar lrzip unace
#conky 配置文件
https://gist.github.com/imsuwj/204fbe376753d01b45bc
##gnome安装octopi的话 执行会说无法取得管理员权限
装gksu
Optional Deps : kdesu: for KDE [installed]
gksu: for XFCE, Gnome, LXDE, Cinnamon
lxqt-sudo: for LXQT
gnome-keyring: for password management
gist: for SysInfo report
pacaur: for AUR support
yaourt: for AUR support [installed]
octopi-repoeditor: for editing functions [installed]
octopi-cachecleaner: for cleaning functions [installed]
octopi-notifier-qt5: for notifications
octopi-notifier-frameworks: for notifications with Knotifications support [installed]
pacmanlogviewer: to view pacman log files

主题图标
la-capitaine-icon-theme
Adapta-gtk-theme
Papirus
Arc

ArchLinux推荐软件列表

https://wiki.archlinux.org/index.php/List_of_applications
http://bbs.archlinuxcn.org/viewtopic.php?id=381
https://github.com/alim0x/Awesome-Linux-Software-zh_CN

Java 程序员眼中的 Linux

  • 带动更多的人进入 Linux 世界,特别是做 Java 开发的人,开发人员必备linux编程环境配置手册

https://youmeek.gitbooks.io/linux-tutorial/content/

shadowsocks

图形版本

安装官方源中的shadowsocks-qt5包,自带图形界面,通过软件菜单(桌面环境自带)启动即可。

命令行版本

安装官方源中的shadowsocks-libev包,编辑/etc/shadowsocks/config.json文件,按示例填写:

{
    "server":"",
    "server_port":"",
    "local_adress":"0.0.0.0",
    "local_port":1080,
    "password":"",
    "timeout":600,
    "method":"aes-256-gcm",
    "plugin":"obfs-local",
    "plugin_opts":"obfs=tls;obfs-host=baidu.com"
}

server:服务器地址

server_port:服务器端口

下面两行分别是本地地址和本地端口

password:密码

method:加密方式

然后以系统服务方式启动:

sudo systemctl start shadowsocks@example.service

如需开机启动:

sudo systemctl enable shadowsocks@example.service

命令行代理

需先配置好本地shadowsocks代理

推荐使用proxychains-ng包进行命令行代理:

安装proxychains-ng包后编辑/etc/proxychains.conf文件(需root权限)

到文件末尾找到ProxyList项,按示例添加本地代理:

socks5 127.0.0.1 1080

之后需要用代理运行的命令都可以通过在命令前加上proxychains来使用代理运行。

Steam 配置

如果你发现你的 steam 不能正常运行,就去装 steam-native 这个包。然后是不是就好了?如果你玩 XCOM2 的话,你可能会发现这个游戏在 Ubuntu 上能正常运行,但是在 Arch 上卡的能吃屎。你可以考虑调整他的配置文件,位置是:

~/.local/share/feral-interactive/XCOM2/VFS/Local/my\ games/XCOM2/XComGame/Config/XComEngine.ini

把 PoolSize=10 改成 256,OneFrameThreadLag=True 改成 False。再运行一下,虽然还有点卡,是不是能玩了?

JetBrains IDE 配置

你可能会发现 JetBrains 的 IDE 会有一个颜色漂移的问题,据说是来自于 jre。解决方案你可以参考 这篇 wiki。当然,最简单的方法是在 IDE 设置里把文字抗锯齿设置成灰度(greyscale),这样的效果我觉得已经基本可以接受了

中文字体与中文输入法

中文字体推荐安装官方源中noto-fonts-cjk,中文输入法需要安装fcitx包与fcitx-im集合包,再加上一个中文支持包,可以到https://wiki.archlinux.org/index.php/fcitx#Chinese中挑选一个喜欢的包装上。

安装fcitx和搜狗输入法:
yay -S fcitx-im fcitx fcitx-configtool kcm-fcitx fcitx-gtk2 fcitx-gtk3 fcitx-qt4 fcitx-qt5 fcitx-sogoupinyin
or
yay -S fcitx fcitx-sogoupinyin fcitx-im kcm-fcitx fcitx-skin-material fcitx-rime
同样的,在~/.xprofile写入
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"
可以解决一些软件无法调出fcitx的问题。

oh-my-zsh

zsh是默认shell bash的替代品之一,它的特点是插件多配置方便,兼容bash脚本并且支持更强大的高亮与补全。

安装官方源中zsh包。

设置zsh为默认shell

sudo chsh -s /bin/zsh username
curl 方式:
$ sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

wget 方式
$ sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"

推荐安装AUR中的oh-my-zsh-git这个包,可以帮助配置一些实用的功能。

其他主题插件配置请见oh-my-zsh的配置介绍,分享一下我安装的插件:

plugins=(vim git sudo extract archlinux zsh-autosuggestions zsh-syntax-highlighting)

注意后面两个插件需要安装相应的支持包并配置才能使用。

https://hufangyun.com/2017/zsh-plugin/

git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

git clone git://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions

yay安装软件卡在 node install.js

终极解决方案
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

nvm install v8

npm 安装 node-sass 网速慢的 可以 运行 npm config set registry https://registry.npm.taobao.org

然后 编辑 ~/.npmrc 加入下面内容

# $HOME为你home目录路径的全写
cache=$HOME/.node_modules

prefix=$HOME/.node_modules

registry=https://registry.npm.taobao.org

sass_binary_site=https://npm.taobao.org/mirrors/node-sass/

phantomjs_cdnurl=http://npm.taobao.org/mirrors/phantomjs

ELECTRON_MIRROR=http://npm.taobao.org/mirrors/electron/

系统备份

我目前的解决方案是 rsync,下面给出一个我从 Arch wiki 那里魔改来的备份脚本.区别基本上就是使用了更新和删除,就是如果目标位置已经有备份,他只会更新新的文件,并删除已经被删除了的文件。另外,我还把 steam 的路径添加到了黑名单,这样可以让我节省几十个G的游戏的硬盘空间。如果要还原的话,你只需要把 rsync 的参数互换一下,就以把备份文件复制回原来的位置了。

#!/bin/sh

START=$(date +%s)
rsync -aAXvu --delete /* /Your/Destination/Directory --exclude={/dev/*,/proc/*,/sys/*,/tmp/*,/run/*,/mnt/*,/media/*,/lost+found,/var/lib/pacman/sync/*,/home/towdium/.local/share/Steam/*}
FINISH=$(date +%s)
echo "total time: $(( ($FINISH-$START) / 60 )) minutes, $(( ($FINISH-$START) % 60 )) seconds"

美化

此处仅为gnome美化 这里先展示一下美化后的样子 img

GNOME 插件配置

要修改 GNOME 的插件,你需要安装 chrome-gnome-shell,然后打开预装的 gnome-tweak-tool,在相应的面板就可以编辑了。我对于 manjaro 挑插件的口味不是特别能认同,所以我把他们的大部份插件都拿掉了,按我的口味重新换了一波,大概列在下边:

  • Advanced volume mixer:提供简单的控制各个程序音量的界面
  • Netspeed:显示实时网速
  • Openweather:天气预报
  • Topicons plus:把状态栏(tray)的图标移动到状态栏(自带神秘特效)

GNOME 的插件其实多的能上天,装那些还是取决于你自己的口味。

Nautilus 插件配置

除去自带的插件,我还额外装了两个插件。如果你是 typeahead 的重度使用者(就是按键盘直接跳转到相应文件名的位置),你可能会发现新版的 nautilus 阉割了这个功能,不过安装 nautilus-typeahead 可以恢复这个功能。另外,nautilus-hide 可以帮你方便的隐藏文件,即使他并不是 .开头。

gnome-tweak-tool

如果你安装了gnome-extra,那么这个工具已经被安装了,否则的话

  1. sudo pacman -S gnome-tweak-tool

图标包

这里我使用的numix-circle图标包,这个图标包在aur里,直接用yay即可

  1. yay -S numix-circle-icon-theme-git

然后在gnome-tweak-tool里启用主题

gtk主题

gtk主题我选择了arc主题

  1. yay -S gtk-theme-arc-git

然后在gnome-tweak-tool里启用

gnome-shell主题

首先在gnome-tweak-tool里的拓展里启用User themes

然后安装主题,这里我是用的贴吧的@Air_Wawei的Air主题,并自己做了些修改。

首先下载主题 然后解压,将Air文件夹放到/usr/share/themes/文件夹里,在gnome-tweak-tool里启用主题

gdm背景

输入以下指令

  1. curl -L -O http://archibold.io/sh/archibold
  2. chmod +x archibold
  3. ./archibold login-backgroung 你的背景的地址

重启后gdm就会变成你要的背景

gnome-shell拓展

shell拓展请进入https://extensions.gnome.org/自行按照说明安装

screenfetch

screenfetch可以在终端里输出你的系统logo和状态。 img 可以用pacman安装:

  1. pacman -S screenfetch

要让screenfetch在打开终端是自动输出,在~/.bashrc里加入

  1. screenfetch

dock

要获得像苹果osx一样的dock可以用docky或者dash-to-dock docky的话sudo pacman -S docky即可,docky不支持wayland。 dash-to-dock是gnome拓展,请在https://extensions.gnome.org/自行按照说明安装 我这里装了docky,这是我的docky配置 img

纯命令行安装流程

  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
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
格式化分区
fdisk /dev/sda
mkfs.ext4 /dev/sda1 ==>boot
mkfs.ext4 /dev/sda2 ==>/
mkfs.ext4 /dev/sda3 ==>tmp
mkfs.ext4 /dev/sda6 ==>home
mkswap /dev/sda5 ==>swap
挂载分区
mount /dev/sda2 /mnt
mkdir /mnt/boot
mkdir /mnt/tmp
mkdir /mnt/home
mount /dev/sda1 /mnt/boot
mount /dev/sda3 /mnt/tmp
mount /dev/sda6 /mnt/home
swapon /dev/sda5
查看网卡名字和设置网卡名字
ip link show
ip link set enp0s3 name eth0
iw dev #找到interface, 一般以wlp开头
wifi-menu [interface] #链接wifi
dhcpcd #有线网络,启动动态ip服务(可使用静态ip)
ping www.bing.com
pacstrap -i /mnt base base-devel
pacstrap /mnt grub-bios #安装启动项管理器
genfstab -U -p /mnt > /mnt/etc/fstab #生产分区信息
arch-chroot /mnt /bin/bash #进入新系统
echo USERNAME >> /etc/hostname #设置主机名
vi /etc/timezone #设置时区
Asia/Shanghai
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #设置时间
vi /etc/locale.gen #去掉前面注释
en_US.UTF-8 UTF-8
zh_CN.UTF-8 UTF-8
zh_TW.UTF-8 UTF-8
echo LANG=en_US.UTF-8 > /etc/locale.conf
vi /etc/vconsole.conf #键盘布局方案
KEYMAP=us
FONT=
FONT_MAP=
locale-gen #生产locale讯息
hwclock --systohc --utc
vi /etc/hosts
#<ip-address>   <hostname.domain.org>   <hostname>
127.0.0.1   localhost.localdomain  localhost    USERNAME
::1     localhost.localdomain  localhost    USERNAME
mkinitcpio -p linux #生产内核的启动镜像
pacman -S grub
grub-install --recheck /dev/sda #安装引导程序
grub-mkconfig -o /boot/grub/grub.cfg #生产配置文件
pacman -S iw wpa_supplicant dialog #安装iw和wifi-menu
pacman -S net-tools dnsutils inetutils iproute2 #ifconfig
systemctl enable dhcpcd.service #dhcpcd服务开机自启
passwd #设置root密码
exit
umount /mnt/{boot,home}
reboot
useradd -m -G wheel -s /bin/bash USERNAME
passwd USERNAME
visudo #设置wheel组的用户能使用sudo
%wheel ALL=(ALL) ALL            #取消注释
exit
sudo pacman -S vim
vim /etc/pacman.conf 添加archlinuxcn镜像源
[archlinuxfr]
SigLevel = Optional TrustAll
Server = http://repo.archlinux.fr/$arch
[archlinuxcn]
SigLevel = Optional TrustedOnly
Server = http://repo.archlinuxcn.org/$arch
sudo pacman -Syy
sudo pacman -Syu
sudo pacman -S archlinux-keyring
sudo pacman -S yay
sudo pacman -S bash-completion
sudo pacman -S ntfs-3g
pacman -S alsa-utils
pacman -S alsa-oss
gpasswd -a USERNAME audio 把你的普通用户账号加入到audio用户组中
su - USERNAME 切换到普通用户
alsamixer 70-90的音量是较合适的范围
aplay /usr/share/sounds/alsa/Front_Center.wav 保存alsamixer设置
exit
/usr/sbin/alsactl store 保存声音配置
vi /etc/rc.conf
DAEMONS=(syslog-ng network crond alsa)
lspci | grep -e VGA -e 3D #查看显卡类型
pacman -Ss xf86-video | less #查看所有开源驱动
# 官方仓库提供的驱动包:
# # +----------------------+--------------------+--------------+
# # |                      |        开源        |     私有     |
# # +----------------------+--------------------+--------------+
# # |         通用         |   xf86-video-vesa  |              |
# # +----------------------+--------------------+--------------+
# # |         Intel        |  xf86-video-intel  |              |
# # +--------+-------------+--------------------+--------------+
# # |        | GeForce 7+  |                    |    nvidia    |
# # | nVidia +-------------+ xf86-video-nouveau +--------------+
# # |        | GeForce 6/7 |                    | nvidia-304xx |
# # +--------+-------------+--------------------+--------------+
# # |        AMD/ATI       |   xf86-video-ati   |              |
# # +----------------------+--------------------+--------------+
pacman -S xorg X11
pacman -S xorg-server xorg-server-utils 安装 Xorg Server
pacman -S xf86-input-synaptics 可选,触摸板支持
pacman -S wqy-zenhei 开源的文泉驿正黑矢量字体
pacman -S ttf-dejavu wqy-microhei 可选,微米黑字体
pacman -S xf86-input-keyboard 图形界面的键盘驱动
pacman -S xf86-input-mouse 鼠标的驱动
pacman -S xorg-xinit
pacman -S gnome gnome-extra gnome-packagekit gnome-software
pacman -S gdm 安装GDM作为登陆器
sudo systemctl enable gdm #显示管理器开机自启
sudo systemctl enable gdm.service
sudo systemctl enable NetworkManager
reboot
sudo pacman -S adobe-source-han-sans-cn-fonts #安装中文字体
yay -Rsc epiphany #删除epiphany浏览器
yay -S google-chrome
pacman -S firefox firefox-adblock-plus flashplugin
yay -S firefox-i18n-zh-cn #中文, 可选
yay -S gedit gedit-plugins
yay -S vim
yay -S emacs
sudo pacman -Rncd ibus
gsettings set org.gnome.settings-daemon.plugins.keyboard active false 禁用iBus
sudo pacman -S fcitx fcitx-configtool fcitx-im fcitx-qt5
vim ~/.xprofile
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
gsettings set org.gnome.settings-daemon.plugins.xsettings overrides \
"{'Gtk/IMModule':<'fcitx'>}"
yay -S gnome-shell-extension-kimpanel-git
fcitx-configtool 添加输入法
pacman -Ssq fcitx pinyin 拼音
yay -S fcitx-sogoupinyin
pacman -S tar xarchiver
pacman -S rhythmbox
pacman -S gimp inkscape
yay -S uget aria2 #下载工具
yay -S wget
yay -S file-roller p7zip
yay -S unrar
yay -S screenfetch
sudo yay -S virtualbox
sudo pacman -S virtualbox-guest-utils Virtualbox
sudo pacman -S virtualbox-modules
sudo modprobe vboxdrv #加载内核模块
pacman -S gparted 分区管理工具
pacman -S scrot
pacman -S skype ??
pacman -S mplayer
pacman -S codecs gstreamer0.10-bad gstreamer0.10-ugly
pacman -S gstreamer0.10-ffmpeg
pacman -S smplayer
pacman -S vlc
pacman -S deluge
pacman -S liferea RSS离线阅读软件
pacman -S thunderbird 电子邮件客户端
pacman -S lftp
pacman -S filezilla
pacman -S k3b
gpasswd -a danmo98 optical
pacman -S archey3
pacman -S alsi
pacman -S evince
pacman -S kchmviewer CHM文档查看器
pacman -S file-roller
pacman -S unrar unzip
pacman -S lilyterm
pacman -S cowsay
pacman -S gnome-packagekit
pacman -S ibus
pacman -S ibus-rime ibus-libpinyin
pacman -S ibus-qt
qtconfig-qt4 将ibus设置为默认输入法
dconf update 更新dconf配置
ibus-daemon -rdx 重启ibus

参考文章

https://ruiming.me/archlinux-installation/

https://wiki.archlinux.org/index.php/Installation_guide

https://www.viseator.com/2017/05/17/arch_install/

https://www.viseator.com/2017/05/19/arch_setup/

https://www.viseator.com/2017/07/02/arch_more/

https://bleedingfight.github.io/2018/01/07/arch/

https://www.cnblogs.com/bluestorm/p/5929172.html

https://www.mivm.cn/archlinux-vmware/

https://www.zybuluo.com/Mahdi/note/1001705

http://yhhx.tech/2017/06/11/%E7%AC%94%E8%AE%B0/Arch-Linux%E5%AE%89%E8%A3%85%E8%AE%B0%E5%BD%95/

https://moonfoam.github.io/2017/10/04/ArchLinux-installation-note/

Arch完全指南

https://steemit.com/archlinux/@bigear/install-arch-linux

https://xlui.me/t/install-conky/

https://xlui.me/t/install-xfce4-in-archlinux/

https://spxg.me/archives/326

https://spxg.me/archives/286

http://sparkgis.com/java/2018/02/vmware-workstation%E5%AE%89%E8%A3%85arch-linux%E5%92%8Cxfce%E6%A1%8C%E9%9D%A2%E6%95%99%E7%A8%8B-%E5%8E%9F-vmware-workstation%E5%AE%89%E8%A3%85arch-linux%E5%92%8Cxfce%E6%A1%8C%E9%9D%A2%E6%95%99/

https://www.jianshu.com/p/61eb6397fa8f

https://www.jianshu.com/p/fe2165cc6af8

https://bigeagle.me/2014/06/archlinux-install-for-beginners/