TniAsu
TniAsu
文章10
标签16
分类2
Arch Linux 配置与调优

Arch Linux 配置与调优

还是懒得看 wiki 啊,所以就写一些相关的。

缘起

前些日子尝试在电脑上装 arch ,参照着大佬:幻若梦云写的 Arch Linux + Windows 双系统安装教程,也算是成功地把arch linux装在了电脑上,但是装机之后,却发现网上地 arch linux 的配置教程却少的可怜,于是就想着自己写一些相关的配置过程。

Tip:配合Arch Linux + Windows 双系统安装教程一起查阅更佳!且本篇皆是在Arch Linux + Windows 双系统安装教程的基础上所进行的配置(暂时)。

你所应该先知道的(备份相关)

以下两条,你得知道的:

  • 滚动更新机制:所谓滚动更新就是指不能单独更新某个特定软件包,每次更新必须将全部软件包更新到最新
  • 滚挂:当有些软件包出现问题(如果是官方源的包,一般官网会告知),更新 (sudo pacman -Syyu) 之后可能会有整个系统挂掉的风险。

所以我们应该先了解的是——如何避免滚挂

  1. 良好的习惯,充足的准备。

    谨慎开启 test 库。

    多查看官网与社区了解详情。


  2. 准备一个 livecd

    时常备有一个 livecd ,以备在无法进入系统时仍然可以在 livecd 内挂载 /mnt 来 chroot 到你的 arch linux 来执行恢复等操作。


  3. 需要做的备份操作


    本文提供两种备份方式, Rsync 命令、tar 命令。

Rsync

rsync 命令由 Andrew Tridgell 和 Paul Mackerras 编写,于 1996年 首次发布。rsync 的主要目的是使一台计算机上的文件与另一台计算机上的文件远程同步。因此 名为 r sync (remote synchronize)

rsync 能够用于同步两个目录或目录树,无论它们是在同一个计算机上还是不同的计算机上,而且不仅如此,它还能做到更多。它创建或者更新的目录与源目录完全一样。新的目录不是以 tar 或 zip 等打包存储,而是普通的目录和文件,常见的 Linux 工具都可以访问。

rsync 的最重要的特性之一是它处理源目录被修改的已有文件的方式。它使用分块校验来比较源文件和目标文件,而不是从源把整个文件复制过去。如果两个文件所有块的校验和都相同,那么就不用传输数据。否则只有被改变的块被传输。这样节约了远程同步消耗的大量时间和带宽。

Rsync 是开源软件,通常每个Linux发行版都会带有此软件,但是鉴于 arch 的特性,如果如果没有,则

sudo pacman -S rsync

Arch Linux Wiki 也提供了相应的脚本

以下面的脚本为例,该脚本放置于 /etc/cron.daily 目录下,如果 cron daemon 被正确安装和配置,它将每天运行。配置和使用 cron 是本文的范围之外。

首先,创建一个包含相应命令选项的脚本:

/etc/cron.daily/backup
#!/bin/bash
rsync -a --delete /folder/to/backup /location/of/backup &> /dev/null

-a

表示文件应被存档,这意味着他们的大部分特性被保留 (包括ACLs, 硬链接或扩展属性,如>capabilities)

--delete
指同步源文件的删除操作。

在这里,/folder/to/backup 应该改成需要被备份的路径 (比如 /home),>/location/to/backup 是备份应存放的位置 (比如 /media/disk).

最后,脚本必须是可执行的

# chmod +x /etc/cron.daily/backup

备份

使用之前我们应该先知道 Rsync 的基本规范:

Rsync命令格式

# 本地模式
rsync [OPTION...] SRC DEST

上述命令中,SRC表示源地址,DEST表示目标地址,你需要遵照命令格式来输入命令来使用 rsync 。

上文引用部分给出的是一个每天自动备份的脚本,但是我们并不一定需要每天都进行备份,只要在需要备份时执行如下命令即可。

rsync -av --delete /folder/to/backup /location/of/backup

你说需要知道的是,上述命令中 /folder/to/backup 表示的是源地址,而 /location/of/backup 则表示目标地址。

参数详解:

  1. -a 选项表示归档模式,它会保持权限、所有关系和符号(软)链接 , 但是如果要保持硬链接可以用到参数 -H .


  2. -v 则会将详细信息展现在终端中。


  3. -H 选项用来保持硬链接。


  4. --deletd :不加此条参数的话只是简单的增量同步,加上此条参数,rsync 会比对源目录与目的目录,如果你在源目录删除了某个文件,那么 rsync 也会将之前备份过的但是你在源目录删除的文件也删除,达到“文件完全同步”(当然这里指的完全同步并非实际的完全同步,同步程度是建立在其他参数上的)

更多相关参数可以参阅 Senra 大佬的Rsync参数说明及使用文档 罗列得非常详细。

恢复

恢复,测试备份文件是否完整复制粘贴覆盖即可。

自动化

I automated my backups because – “automate everything.” I wrote a BASH script that handles the details of creating a series of daily backups using rsync. This includes ensuring that the backup medium is mounted, generating the names for yesterday and today’s backup directories, creating appropriate directory structures on the backup medium if they are not already there, performing the actual backups and unmounting the medium.
I run the script daily, early every morning, as a cron job to ensure that I never forget to perform my backups.
My script, rsbu, and its configuration file, rsbu.conf, are available at https://github.com/opensourceway/rsync-backup-script

参照 相关文章Arch linux wiki 可以使用 cron 来实现自动化,相关脚本和配置文件可以从 上文引用处链接 获得。

其他的:rsync 的其他操作,arch Linux wiki 第一条将它作为 cp 命令的高级替代品,此外 rsync 还可以备份服务器到本地等操作,是一个值得研究倒腾的命令(软件),其他玩法可以查看 arch Linux wiki

tar 命令

常用的备份命令是

tar cvpjf backup.tar.bz2 --exclude-from=excl /

根目录通过 tar 命令打包 为 .tar.bz2 文件,需要恢复时只需要解打包覆盖即可。

tar -jxvf backup.tar.bz2 -C /

基本配置

添加新用户

此番配置在Arch Linux + Windows 双系统安装教程中已经提到过,但是我在这里踩了坑,所以在这里重提一次(凑字数)。

在使用图形界面时,桌面管理器往往只提供用户登录而不会显示 ROOT 用户,为了能够进入到桌面,我们需要做出如下操作。众所周知,权力是把双刃剑,而在平时使用时,如果不创建普通用户,只使用 root 用户的话,可能就会面临一些因为权限过高而产生的问题:

  • 诸如 rm -rf /* 等一些著名命令
  • 使用 root 强行覆盖权限也会给如果使用计算机的他人带来不便(如果有)

所以我们就有必要来添加一个普通用户作为日常使用者。

#添加新用户
useradd -m -G wheel -s /bin/bash 用户名
#设置密码
passwd 用户名 #输入此条命令后按照输出内容输入密码,密码需要输入两次,且密码不会显示

你需要注意的是:此时你创建的用户名 需要符合命名规范(基本上只要注意首字母不能大写就行了,其余规范尚在考证……),我在这里遇到的坑就是使用了大写字母开头,而导致无法创建用户。

为wheel组配置sudo权限

但是普通用户权力有限,一些基本操作诸如安装软件#pacman -S 包名 具有修改写入类型的操作普通用户是无法执行的,这时候就要接 root (su) 之手来执行这些命令了,但是如果安装一个软件就要切换到 root 用户,未免有些麻烦,所以 linux 为我们提供了一种更为便捷的操作,那就是 sudo ,按需执行 root 权限命令(仅个人理解)。

sudo 作为一个软件包的形式存在,在 arch linux 中一般都会包含在 base-devel 中,若是安装系统时已经装过base-devel就无需再进行安装。

否则,

pacman -S base-devel #此时还没有配置sudo,所以应该在root下执行该命令

或,

pacman -S sudo #此时还没有配置sudo,所以应该在root下执行该命令

编辑 sudoers 文件:

visudoers 
#此条命令默认使用的是vi编辑器,如果没有安装vi,可以先将自己所用的编辑器创建一个软连接到/usr/bin/vi
#执行
ln -s /usr/bin/vim /usr/bin/vi #此处的vim替换为自己所用的编辑器即可
visudoers

执行上方命令来进行配置,在文件中找到如下两行,一般在文件尾部,辨识度不高,一定要仔细,不要找错。

## Uncomment to allow members of group wheel to execute any command
# %wheel ALL=(ALL) ALL

根据翻译可知道,去掉注释,wheel 组就可以执行任何命令,根据提示去 %wheel ALL=(ALL) ALL 前面的 掉注释即可,如下。

## Uncomment to allow members of group wheel to execute any command
%wheel ALL=(ALL) ALL

接着按照编辑器所提供的命令来保存。

vim 可以使用 esc 来退出编辑模式,接着输入 :wq! 来强制保存。

接着可以登录刚刚创建的用户并尝试 sudo 命令

加入Archlinuxcn源

rootsudo 形式编辑 /etc/pacman.conf

sudo vim /etc/pacman.conf

在文件末加入官方archlinuxcn镜像源

[archlinuxcn]
Server = http://repo.archlinuxcn.org/$arch

或加入其他国内源

## 浙江大学 (浙江杭州) (ipv4, ipv6, http, https)
## Added: 2017-06-05
[archlinuxcn]
Server = https://mirrors.zju.edu.cn/archlinuxcn/$arch

## 中国科学技术大学 (ipv4, ipv6, http, https)
[archlinuxcn]
Server = https://mirrors.ustc.edu.cn/archlinuxcn/$arch

## 清华大学 (ipv4, ipv6, http, https)
[archlinuxcn]
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch

## Our main server (ipv4, ipv6, http, https)
## Our main server located in Netherlands
[archlinuxcn]
Server = https://repo.archlinuxcn.org/$arch

## xTom (Hong Kong server) (Hong Kong) (ipv4, ipv6, http, https)
## Added: 2017-09-18
## xTom Hong Kong Mirror
[archlinuxcn]
Server = https://mirror.xtom.com.hk/archlinuxcn/$arch

## xTom (US server) (US) (ipv4, ipv6, http, https)
## Added: 2019-02-19
## xTom US Mirror
[archlinuxcn]
Server = https://mirror.xtom.com/archlinuxcn/$arch

## xTom (Netherlands server) (Netherlands) (ipv4, ipv6, http, https)
## Added: 2019-09-07
## xTom Netherlands Mirror
[archlinuxcn]
Server = https://mirror.xtom.nl/archlinuxcn/$arch

## Open Computing Facility, UC Berkeley (Berkeley, CA, United States) (ipv4, ipv6, http, https)
## Added: 2019-02-19
[archlinuxcn]
Server = https://mirrors.ocf.berkeley.edu/archlinuxcn/$arch

## 上海科技大学 (上海) (ipv4, http, https)
## Added: 2016-04-07
[archlinuxcn]
Server = https://mirrors-wan.geekpie.club/archlinuxcn/$arch

## 网易 (ipv4, http, https)
[archlinuxcn]
Server = https://mirrors.163.com/archlinux-cn/$arch

## 重庆大学 (ipv4, http, https)
[archlinuxcn]
Server = https://mirrors.cqu.edu.cn/archlinuxcn/$arch

## SJTUG 软件源镜像服务 (ipv4, https)
## Added: 2018-05-21
[archlinuxcn]
Server = https://mirrors.sjtug.sjtu.edu.cn/archlinux-cn/$arch

## 莞工 GNU/Linux 协会 开源软件镜像站 (ipv4, http, https)
## Added: 2018-11-03
[archlinuxcn]
Server = https://mirrors.dgut.edu.cn/archlinuxcn/$arch

## 腾讯云 (ipv4, https)
## Added: 2018-11-23
[archlinuxcn]
Server = https://mirrors.cloud.tencent.com/archlinuxcn/$arch

镜像源转自传送门

接着检查更新并导入 PGP Keys :

sudo pacman -Syy && sudo pacman -S archlinuxcn-keyring

这一步是必要的,否则会出现验证密钥错误而导致无法安装应用等问题。

AUR

AUR : Arch User Repository
Arch 用户软件仓库,安装需要编译,虽然速度稍慢,但是 AUR 提供的软件包非常之多,Pacman + AUR 所有需要的软件几乎都可以找到。这也是 Arch 的强大之处!

虽然 AUR 很强大,但是从 AUR 里安装应用仍然不是一件方便简单的事情,所以 AUR 软件包管理器(aur 助手)就横空出世了,此类软件也很多,但是目前推荐使用 Yay(Yet another Yogurt) 来管理 AUR 软件包。

Archlinuxcn 源里面已经有了预编译的 yay 包,无需编译安装,直接使用 pacman 安装即可

sudo pacman -S yay

Yay 的命令与选项与 pacman 非常相似,因此在日常使用下,就可以使用简洁的 yay 替代 sudo pacman
如:

 $ yay -S netease-cloud-music

安装完成后就可以根据需求安装软件了!
这里贴出一些常用软件

# wps
$ yay -S wps-office # wps好评

$ yay -S ttf-wps-fonts # wps所需字体


$ yay -S google-chrome #谷歌浏览器

$ yay -S git #git版本控制器

$ yay -S typora #markdown编辑器

$ yay -S ranger # 终端文件浏览器

$ yay -S netease-cloud-music #网易云音乐

$ yay -S baidunetdisk # 百度网盘

$ yay -S wiznote #为知云笔记

$ yay -S deepin-screenshot #深度截图

$ yay -S telegram-desktop #tg

  • 国内生态的解决方案:

wine 已经很不错了,但是其需要一大堆的 32 位依赖,以及其不稳定的缺点,如果想要在 linux 下运行诸如 qq wechat 此类软件,建议还是安心虚拟机吧。

  • 中文输入法(此处只记录fcitx)

    sudo pacman -S fcitx-qt4 kcm-fcitx fcitx-sogoupinyin #根据个人喜好自行替换

    全部安装

    接着配置.xprofile文件

    vim ~/.xprofile

    在里面加入

    export GTK_IM_MODULE=fcitx
    
    export QT_IM_MODULE=fcitx
    
    export XMODIFIERS="@im=fcitx"

    注销再登入即可配置输入法。

Shell

介绍 fish shell 和 zsh .

Fish

fish shell 在没有遇到它之前,我一直以为 zsh 是最好的 shell 解决方案,但 zsh 臃肿的体积和缓慢的加载速度时常让我感到着急,但是直到有一天我遇见了 fish shell !

优美简洁的外观,飞快的访问速度,拥有像 zsh 中 oh-my-zsh 一样的 oh-my-fish 和 fisher ,强大的插件系统,非常简单的配置方式,让我一下子就爱上了 fish shell 。

yay -S fish 

一条命令就可以直接安装。

fish

输入即可切换到 fish shell !体验简洁又好看的 fish shell !

$ which fish #输入查询 fish 安装路径,一般都在 /usr/bin/fish

/usr/bin/fish #输出了 fish 的路径,根据此行输出结果填入下行来切换默认shell

$ chsh -s /usr/bin/fish

上文提到配置 fish 及其方便,确实,只需要在终端中输入 fish_config 就可以呼出浏览器在浏览器里实时预览不同的配色和样式来配饰你自己的 fish 了。

fish 插件:oh-my-fish、fisher

fish 拥有像 zsh 中的 oh-my-zsh 一样的强大的插件,但是前者的插件并非像后者一样全部集成,而是 只提供了一些必要的插件,不会拖累速度,需要时安装即可,更体现了 arch linux 的高度自定义!

  1. oh-my-fish

    curl -L https://get.oh-my.fish | fish

    输出 Installation successful 即完成安装。此时提示符也更改成了另一个样式。且窗口右方也多了一个时间显示。

    使用 oh-my-fish 时只需要在 shell 中输入 omf 即可查看相关命令。

    1. 一些有趣的插件

      天气插件

      omf install wttr

      输入即可安装 wttr 天气插件,安装完成后在 shell 中输入 wttr 即可显示当地近几日的天气,打印出来的天气状况生动形象,非常有趣。

  2. fisher

    curl https://git.io/fisher --create-dirs -sLo ~/.config/fish/functions/fisher.fish

    输入即可安装 fisher 兼容所有 oh-my-fish 的包,同样是十分强大

    zsh

  • 并非最优选择
$ sudo pacman -S zsh

$ sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" # 下载并配置ohmyzsh

$ chsh -s /bin/zsh  #更换默认bash,重启后生效

按照上方 fish 中的切换默认 shell 的方式使用 chsh 命令来切换至 zsh 即可

考虑到 oh-my-zsh of zsh 的体积非常臃肿,我找到了以下方案来施以优化。

  1. powerlevel10k

    不得不说,这款主题非常好看,而且对于 zsh 有较大的性能提升。

    Powerlevel10k is a backward-compatible reimplementation of the popular Powerlevel9k theme (see above) with 10-100 times better performance. If you like the looks of Powerlevel9k but feeling frustrated by its slow prompt, simply replace your powerlevel9k theme with powerlevel10k and enjoy responsive shell like it’s 80’s again! Powerlevel10k uses the same configuration options as Powerlevel9k and produces the same results. It’s simply faster.

背靠 pacman 和 aur 安装起来也是非常简单

$ yay -S zsh-theme-powerlevel10k

重启终端,会进行配置 powerlevel10k 根据自己的口味一步一步来即可。

  1. zinit

    该部分内容正在编辑中

参考

  1. https://wiki.archlinux.org/index.php/Rsync
  2. https://opensource.com/article/17/1/rsync-backup-linux
  3. http://www.senra.me/rsync-documents-parameters-description-and-usage-examples/
  4. https://rsync.samba.org/FAQ.html
  5. Arch Linux + Windows 双系统安装教程