Archlinux从安装到基本配置

这里介绍从安装archlinux系统到基本配置过程,基本搜集了网上和官方wiki整理而来的,把错误最低化。当然,本文也是作为我的一份手册吧…

PS: 最近更新时间 2020-02-27

安装Archlinux

下载Archlinux ISO

到官网下载 https://www.archlinux.org/download/ 并做成U盘启动盘

一系列的命令…(BIOS)

由于我是有线连接网络的,所以… 反正也可以在虚拟机里试下呗

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
dhcpcd(可选)
ping www.baidu.com
timedatectl set-ntp true
fdisk /dev/sda # 分区这里应人而异。我就不多说了
...
...
mkfs.ext4 /dev/sdaX
...
...
mkswap /dev/sdaY # 交换分区
swapon /dev/sdaY
mount /dev/sda1 /mnt
nano /etc/pacman.d/mirrorlist
# 添加 Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch
pacstrap /mnt base base-devel
genfstab -U /mnt >> /mnt/etc/fstab
arch-chroot /mnt
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
hwclock --systohc --localtime
nano /etc/locale.gen
en_US.UTF-8 UTF-8
zh_CN.UTF-8 UTF-8
...
locale-gen
echo LANG=en_US.UTF-8 > /etc/locale.conf
echo myhostname > /etc/hostname
nano /etc/hosts
127.0.0.1 localhost
::1 localhost
127.0.1.1 myhostname myhostname
passwd
pacman -S grub
grub-install --target=i386-pc /dev/sda #BIOS系统 ,默认 i386-pc
grub-mkconfig -o /boot/grub/grub.cfg
exit
umount -R /mnt
reboot
pacman -S sudo net-tools wireless_tools
useradd -m -G wheel whoami
passwd whoami
nano /etc/sudoers
# %wheel ALL=(ALL)ALL 取消注释
reboot
sudo dhcpcd
ifconfig
# 安装显卡驱动
sudo pacman -S xf86-video-intel
# 安装Xorg开源图形服务
sudo pacman -S xorg

UEFI

如果是UEFI,那么可以用 fdiskparted 分区,grub引导

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
parted /dev/sda mklabel gpt
parted /dev/sda mkpart ESP fat32 1M 513M
parted /dev/sda set 1 boot on
parted /dev/sda mkpart primary ext4 513M 20.5G # 20.5G 为绝对大小
parted /dev/sda mkpart primary ext4 20.5G 100%

mkdir /mnt/boot
mkfs.fat -F32 /dev/sda1
mkfs.ext4 /dev/sda2
mount /dev/sda1 /mnt/boot
mount /dev/sda2 /mnt

pacstrap /mnt base base-devel
genfstab -L /mnt >> /mnt/etc/fstab
......

pacman -S grub efibootmgr
grub-install --target=x86_64-efi --efi-directory=esp --bootloader-id=GRUB
grub-mkconfig -o /boot/grub/grub.cfg

可选桌面环境安装

接着还需要按照桌面环境

GNOME

1
2
sudo pacman -S gnome gnome-extra
gnome-session

KDE

1
2
sudo pacman -S plasma   kde-applications
startkde

Deepin

1
2
3
4
5
6
7
8
9
10
11
sudo pacman -S deepin deepin-extra
1. lightdm
nano /etc/lightdm/lightdm.conf
[Seat:*]
...
greeter-session=lightdm-deepin-greeter

2. Xinit
nano ~/.xinitrc
exec startdde
startx

Xfce

1
2
sudo pacman -S xfce4 xfce4-goodies
startxfce4(手动进入桌面)

安装桌面登录管理器(自行选择)

1
2
3
4
5
6
7
8
sudo pacman -S sddm
sudo systemctl enable sddm

sudo pacman -S gdm
sudo systemctl enable gdm

sudo pacman -S lightdm lightdm-gtk-greeter
sudo systemctl enable lightdm

配置网络

1
2
3
sudo pacman -S network-manager-applet
sudo systemctl disable netctl
sudo systemctl enable NetworkManager

启动蓝牙

安装了KDE话,默认是未找到蓝牙适配器的。若要连接到蓝牙耳麦,那么可以这样做

1
2
3
4
5
6
7
sudo pacman -S bluez bluez-utils pulseaudio-bluetooth pavucontrol pulseaudio-alsa
sudo systemctl enable bluetooth
usermod -aG lp $USER

sudo systemctl start bluetooth
pulseaudio -k
pulseaudio --start

软件仓库镜像

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
nano /etc/pacman.d/mirrorlist
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch
Server = http://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch
Server = http://mirrors.aliyun.com/archlinux/$repo/os/$arch
Server = http://mirrors.163.com/archlinux/$repo/os/$arch
Server = http://mirrors.hust.edu.cn/archlinux/$repo/os/$arch
Server = http://run.hit.edu.cn/archlinux/$repo/os/$arch
Server = http://ftp.kaist.ac.kr/ArchLinux/$repo/os/$arch
Server = http://mirrors.hustunique.com/archlinux/$repo/os/$arch
Server = http://ftp.jaist.ac.jp/pub/Linux/ArchLinux/$repo/os/$arch
Server = http://mirror.premi.st/archlinux/$repo/os/$arch
Server = http://mirror.its.dal.ca/archlinux/$repo/os/$arch
Server = http://mirror.de.leaseweb.net/archlinux/$repo/os/$arch
Server = http://mirror.clibre.uqam.ca/archlinux/$repo/os/$arch

nano /etc/pacman.conf
[multilib]
Include = /etc/pacman.d/mirrorlist

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

或者:

[archlinuxcn]
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch

安装 archlinuxcn-keyring 导入 GPG key
sudo pacman -S archlinuxcn-keyring 直接这样会出错
sudo pacman -Syu haveged
sudo systemctl start haveged
sudo systemctl enable haveged

sudo rm -fr /etc/pacman.d/gnupg
sudo pacman-key --init
sudo pacman-key --populate archlinux
sudo pacman-key --populate archlinuxcn
sudo pacman -S archlinuxcn-keyring
sudo pacman -Syu

解决:

错误:无法提交处理 (无效或已损坏的软件包 (PGP 签名))

此处参考:

安装字体(中文)

1
2
3
4
5
6
7
8
1. sudo pacman -S adobe-source-han-sans-cn-fonts (思源黑体)
2. sudo pacman -S ttf-dejavu
3. sudo pacman -S wqy-zenhei
4. sudo pacman -S wqy-microhei

nano /etc/locale.conf
LANG=zh_CN.UTF-8
reboot

推荐安装 FireCode 自体 https://github.com/tonsky/FiraCode

中文输入法

建议卸载fcitx4,改用fcitx5

1
pacman -S fcitx5-git  fcitx5-qt5-git fcitx5-gtk-git fcitx5-chinese-addons-git fcitx5-configtool-git fcitx5-rime-git

环境变量

1
2
3
4
5
vim ~/.xprofile
export GTK_IM_MODULE=fcitx5
export QT_IM_MODULE=fcitx5
export XMODIFIERS="@im=fcitx"
fcitx5 &

安装Icon主题(可选)

1
pacman -S numix-circle-icon-theme-git

pacman彩色输出

编辑 /etc/pacman.conf,取消 Color 注释

Nano 支持代码高亮

nano是linux下轻量级的文本编辑器,也是大多数linux发行版都默认安装的。但默认安装archlinux后 nano对于特殊文本的代码高亮支持并没有开启,因此要想让代码高亮显示,就要手动开启该功能。

首先nano所支持的一些代码格式文件存放在 /usr/share/nano/ 目录下

1
2
3
4
5
6
7
8
9
10
11
$ ls /usr/share/nano/
asm.nanorc elisp.nanorc json.nanorc objc.nanorc ruby.nanorc
autoconf.nanorc fortran.nanorc lua.nanorc ocaml.nanorc rust.nanorc
awk.nanorc gentoo.nanorc makefile.nanorc patch.nanorc sh.nanorc
changelog.nanorc go.nanorc man.nanorc perl.nanorc spec.nanorc
cmake.nanorc groff.nanorc mgp.nanorc php.nanorc tcl.nanorc
c.nanorc guile.nanorc mutt.nanorc po.nanorc texinfo.nanorc
css.nanorc html.nanorc nanohelp.nanorc postgresql.nanorc tex.nanorc
debian.nanorc java.nanorc nanorc.nanorc pov.nanorc xml.nanorc
default.nanorc javascript.nanorc nftables.nanorc python.nanorc

此时,我们可以在当前用户主目录下新建 .nanorc 文件,并添加 /usr/share/nano/*.nanorc 表示nano支持 /usr/share/nano 下的所有代码格式。

1
2
$ cat ~/.nanorc 
include /usr/share/nano/*.nanorc

修改yay aur国内源

建议用 yay 而不是 yaourt

1
2
3
4
5
sudo pacman -S yay
nano ~/.config/yay/config.json
"aururl": "https://aur.archlinux.org"
替换为
"aururl": "https://aur.tuna.tsinghua.edu.cn"

或者直接:

yay --aururl "https://aur.tuna.tsinghua.edu.cn" --save

代理

ProxyChains

1
2
3
sudo pacman -S proxychains-ng
nano /etc/proxychains.conf
添加 " socks5 127.0.0.1 1080 "

比如 proxychains curl https://ip.cn

Shadowsocks

1
2
pacman -S shadowsocks-qt5
google-chrome-stable --proxy-server="socks5://127.0.0.1:1080" (暂时代理)

Lantern

1
pacman -S lantern-bin

v2ray

v2ray的安装方法官网有详细信息,qv2ray是Qt开发的基于v2ray core的GUI程序,支持Windows、Linux、macOS。

1
pacman -S v2ray qv2ray

之后就可以添加一些订阅地址或者自己买VPS搭建服务器

XX-Net + Proxy SwitchyOmega + Chrome

1
2
3
4
pacman -S xx-net
或者到 Github clone
git clone https://github.com/XX-net/XX-Net.git
...

音乐(网易云)

1
yaourt -S netease-cloud-music

Office

1
2
3
wps-office,ttf-wps-fonts
libreoffice
永中Office https://www.yozosoft.com/home.htm

解压缩文件

1
sudo pacman -S file-roller  xarchiver unzip unrar

数据库客户端管理

1
sqlitebrowser,dbeaver...

重命名网卡为eth0…

之前: ifconfig

enp12s0
lo
wlp3s0b1

关键是 net.ifnames=0

1
2
3
4
5
6
7
8
9
10
11
1. ArchLinux
-> /etc/default/grub
GRUB_CMDLINE_LINUX=""
GRUB_CMDLINE_LINUX_DEFAULT="audit=0 loglevel=3 quiet net.ifnames=0"
grub-mkconfig -o /boot/grub/grub.cfg

2. CentOS
-> net.ifnames=0 biosdevname=0
-> /etc/sysconfig/grub <=> /etc/default/grub
GRUB_CMDLINE_LINUX=... net.ifnames=0 biosdevname=0 ...
grub2-mkconfig -o /boot/grub2/grub.cfg

Vim配置(模板)

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
set nocp
set modelines=0
set backspace=2
syntax on
autocmd InsertLeave * se nocul
autocmd InsertEnter * se cul
set smartindent
set autoindent
set confirm
set tabstop=4
set softtabstop=4
set shiftwidth=4
set expandtab
set number
set history=50
set hlsearch
set incsearch
set gdefault
set encoding=utf-8
set fileencodings=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936,utf-16,big5,euc-jp,latin1
set guifont=Menlo:h16:cANSI
set langmenu=zn_CN.UTF-8
set helplang=cn
set ruler
set laststatus=1
set showcmd
set scrolloff=3
set showmatch
set matchtime=5
set autowrite
set wildmenu
set linespace=2
set whichwrap=b,s,<,>,[,]
filetype plugin indent on
set foldenable
set cursorline
set magic
set ignorecase
filetype on
set background=dark
set t_Co=256
set mouse=i
set backspace=indent,eol,start

Zsh

https://wiki.archlinux.org/index.php/Zsh_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)
https://github.com/robbyrussell/oh-my-zsh/

1
2
3
4
5
6
7
8
9
10
11
12
sudo pacman -S zsh
1. sudo pacman -S oh-my-zsh-git
2. sh -c "$(wget -O- https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
3. sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
4. curl -Lo install.sh https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh
sh install.sh

sudo chsh -s /bin/zsh
nano .zshrc
ZSH_THEME="jtriley"
plugin: zsh-syntax-highlighting
git clone https://github.com/zsh-users/zsh-syntax-highlighting ~/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting

虚拟机Virtualbox

1
2
pacman -S virtualbox virtualbox-host-modules-arch
pacman -S linux-headers linux

加载 VirtualBox 内核模块

1
2
3
4
5
6
7
8
9
10
手动加载模块
# modprobe -a vboxguest vboxsf vboxvideo
# -> modprobe vboxdrv
# lsmod|grep vb
vboxnetflt 32768 0
vboxnetadp 28672 0
vboxpci 28672 0
vboxdrv 503808 3 vboxpci,vboxnetadp,vboxnetflt

开机自动加载模块,启用 vboxservice.service 服务

增强功能

1
2
3
4
5
6
1. USB使用:
sudo usermod -aG vboxusers whos 或 sudo gpasswd -a whos vboxusers

2. 增强功能(载入ISO功能包)
sudo pacman -S virtualbox-guest-iso
--> /usr/lib/virtualbox/additions/VBoxGuestAdditions.iso

或者自己去下载 VBoxGuestAdditions.iso ,并在使用virtualbox时载入iso

https://download.virtualbox.org/virtualbox/6.0.10/

下载拓展包

1
wget https://download.virtualbox.org/virtualbox/6.0.10/Oracle_VM_VirtualBox_Extension_Pack-6.0.10.vbox-extpack

手动挂载

1
2
3
4
5
6
7
8
9
在virtualbox虚拟机运行:
mount -t vboxsf <共享目录的名字> <客户机系统的挂载点>

查看 vboxsf 的挂载参数
mount.vboxsf

假如用户不在 vboxsf 组里,用这个命令可以把挂载点的读写权限授权给他:
# mount -t vboxsf -o uid=1000,gid=1000 home /mnt/
# usermod -aG vboxsf guest

百度云盘

1
sudo pacman -S baidunetdisk-bin

MariaDB数据库

1
sudo pacman -S mariadb mariadb-libs mariadb-clients

安装 mariadb 软件包之后,你必须在启动 mariadb.service 之前运行下面这条命令:

1
# mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql

用下面这个命令启动数据库级别的安全配置助手,来配置一些必要的安全选项

1
mysql_secure_installation

关于Mariadb10.4身份验证发生的一些变化及其配置,可参考:

Authentication in MariaDB 10.4 — Understanding the Changes
或者
SET PASSWORD

修改 root 密码(身份验证表在 **mysql.global_priv **可以 select *from mysql.global_priv; 查看)

1
set password for 'root'@'%' =password('xxxxxxxxx')

如果试图这样做

1
UPDATE mysql.user SET Password=PASSWORD('xxxx') WHERE User='root';

那么得到的错误是
ERROR 1348 (HY000): Column ‘Password’ is not updatable

Qt5

Wiki : https://wiki.archlinux.org/index.php/Qt_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)

1
sudo pacman -S qt5-base qt5-doc qtcreator

反正也可以从官网下载安装包自行安装,不过速度就。。。

Python,Npm换国内源

Python

修改pip.conf文件,若不存在则新建一个并添加以下内容。
nano ~/.pip/pip.conf

1
2
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple

Npm

1
2
npm config get registry
npm config set registry https://registry.npm.taobao.org/

Github SSH Key

首先检查本机是否存在 SSH keys

  • id_rsa
  • id_rsa.pub
1
2
ls ~/.ssh
id_rsa id_rsa.pub

接着

1
2
3
4
ssh-keygen -t rsa -C "[email protected]"
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub

复制 id_rsa.pub 内容到:
–> Settings --> SSH and GPG keys --> New SSH key

测试是否成功

1
2
3
4
5
6
ssh -T [email protected]
The authenticity of host 'github.com (13.250.177.223)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'github.com,13.250.177.223' (RSA) to the list of known hosts.
Hi josexy! You've successfully authenticated, but GitHub does not provide shell access.

如此如此即ok,否则no

配置Git,比如我的这样子

1
2
3
4
git config --global user.name "josexy"
git config --global user.email "[email protected]"
git config --global color.ui true # 可选
git config --global credential.helper store # 可选

迁移Github Page hexo

假如要在另一台电脑上更新修改hexo搭建的博客,那么就要重新部署hexo。然而我们也可以不必如此,只需简单几步即可。

首先到博客根目录查看哪些文件/文件夹需要复制过去

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
ls -la
总用量 216
drwxr-xr-x 8 josexy josexy 4096 8月 5 08:18 .
drwxr-xr-x 6 josexy josexy 4096 8月 6 13:42 ..
-rw-r--r-- 1 josexy josexy 2591 7月 21 00:22 _config.yml
-rw-r--r-- 1 josexy josexy 174 8月 5 08:20 db.json
drwxr-xr-x 62 josexy josexy 4096 8月 5 08:19 .deploy_git
-rw-r--r-- 1 josexy josexy 65 7月 20 10:24 .gitignore
drwxr-xr-x 345 josexy josexy 20480 7月 20 20:57 node_modules
-rw-r--r-- 1 josexy josexy 676 7月 20 20:57 package.json
-rw-r--r-- 1 josexy josexy 148885 7月 20 20:57 package-lock.json
drwxr-xr-x 61 josexy josexy 4096 8月 5 08:18 public
drwxr-xr-x 2 josexy josexy 4096 7月 20 10:24 scaffolds
drwxr-xr-x 7 josexy josexy 4096 7月 21 11:56 source
drwxr-xr-x 4 josexy josexy 4096 7月 20 11:39 themes

以下表格列出需要和不需要复制到其他主机的文件/文件夹

需要 不需要
themes themes/.git
source public
_config.yml db.json
.gitignore .deploy_git
package.json package-lock.json
scaffolds node_modules

这样的话,我们就可以把 需要 的文件/文件夹复制过去了,为了能够在另一台主机上使用,还需要安装必要的application

1
2
3
4
5
sudo pacman -S nodejs
sudo pacman -S npm
sudo pacman -S git
npm config set registry https://registry.npm.taobao.org
sudo npm i hexo-cli -g

接着在该目录下执行 npm install 即可安装hexo所需原来的模块,保存在node_modules。
没有必要 hexo init!没有必要 hexo init!没有必要 hexo init****

若出现类似

run npm audit fix to fix them, or npm audit for details

npm WARN [email protected] requires a peer of eslint@>= 4.12.1 but none is installed. You must install peer depen
dencies yourself.

按提示操作即可

如果不想每次都要输入github帐号密码,则需要配置 github ssh key ,方法请参见上文。
然后 hexo g即可生成 public文件夹,hexo s本地运行,hexo d即可部署github

若出现类似Error: ENOSPC: System limit for number of file watchers reached,解决方法:

1
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p

参考资料