“你最喜欢的Linux发行版是什么?不要跟我说是Ubuntu。”
“额…用过的不多,就是Ubuntu了。”
然后就被安利成功了……
简单介绍一下
Arch是一个相当简单和轻量级的发行版,官方主打的目标也就是想要把它保持得简单点。
但是Arch中的软件库管理却做得非常出色,秒杀apt-get和yum等等好大一截,以至于成功被安利并且使用了一段时间之后,真心不想再切回其他的了。
Arch除了官方的软件库之外,还提供了很多社区维护的软件甚至还有很多用户提供的安装脚本。比如很多本身还在Github上面处于开发阶段的软件,只要Arch的库中有人给它写过安装脚本,都能通过Arch的软件库命令一键安装,中间缺少的各种依赖都会自动补全。堪称神器。
Arch给我的感觉相当极客,它的发行版采用滚动更新的方式,不像其他发行版会有版本号什么之类的,而且始终保持里面的软件是最新的。(CentOS默认的gcc版本一直在4.5以下没变过好像,其他的发行版也有类似的情况,都是保证某个版本稳定适用。Oh,装完Arch,下完gcc,习惯性地看一下“–version”,返回来个5.3吓我一跳。)
然后就是系统特别干净,除了Linux最基础的东西以外,其他的几乎什么都没有加进去,由用户根据自己的需求来定制。
安装过程
在虚拟机上测试了一下之后,果断在Yoga上装上了Arch。
记录这个是方便以后自己再装的时候可以不用再去网上找别的教程。
在空U盘上刻好Arch的镜像,在Yoga的BIOS里面关掉SecurityBoot,然后就可以引导进安装盘了。
相对Ubuntu这些发行版来说,Arch的精简和轻量级简直令人发指。它安装的时候只给了一个root登录的shell,然后需要通过命令来完成整个安装过程。
shell登录之后目录下只有一个install.md的文件,其中记录了安装流程,可供安装过程中阅读使用,这些内容跟Arch官网Wiki中的Installation Guide是一样的。额,然而我觉得还是另外开个电脑上看Installation Guide比较好,上面有其他详细内容的页面链接。
按照教程上的提示安装过程大致是以下几个部分:
1 Pre-installation
1.1 Set the keyboard layout
1.2 Connect to the Internet
1.3 Update the system clock
1.4 Partition the disks
1.5 Format the partitions
1.6 Mount the partitions2 Installation
2.1 Select the mirrors
2.2 Install the base packages
2.3 Configure the system
2.4 Install a boot loader
2.5 Reboot3 Post-installation
Pre-installation
这部分主要是安装前的准备工作,比如检查硬盘情况,设置网络等等。
键盘和时间设置可以跳过,到后面安装的过程中会另外设置。
首先要检查网络,Arch的安装对网络的要求非常高,因为需要在安装过程中直接下载/更新一些软件,如果网络不太好,那…
还是不要装了吧。。。
最简单的情况是连在路由器上的有线网,最好是不需要什么特殊的登录等等的要求,直接插上网线就能用的情况。
以下介绍的部分都是建立在网卡能直接被安装shell驱动的情况,如果驱不起来…那就over了,查查wiki怎么解决吧
在shell中调用:
1 | $ ip link |
可以查看当前的网络硬件情况,比如网口在里面显示的是eth0,那么:
1 | $ ip link set eth0 up |
应该就能启动了,然后
1 | $ dhcpcd |
自动获取完地址之后应该就能ping通外网了。
Yoga上面没有自带网口,我也没有USB网卡可以用,幸好Arch的安装shell中也包含了无线网的连接工具。
首先使用:
1 | $ wifi-menu -o |
这个工具会扫描区域内的无线网信息,设置好连接的SSID和密码等信息之后生成连接网络用的配置文件。使用时会弹出一个对话框界面,非常方便。
生成的配置文件会被写在/etc/netctl/目录下,以网卡编号命名的一个文件中。把这个文件复制一份或者直接改名成wireless-wpa。
之后,运行:
1 | $ netctl start wireless-wpa |
就能连接之前设置好的无线网了。
之后是对硬盘的检查和分区。
1 | $ fdisk -l |
可以显示当前硬盘上各个分区的情况,然后根据需要把分区格式化成ext4格式,主要用到的几个指令是:
1 | $ cfdisk 磁盘分区 |
分区结束之后,开始挂载各个分区到系统中:
1 | $ mount xxxx yyyy 把硬盘上的xxxx挂载到yyyy目录下 |
首先挂载”/“目录,然后在目录下创建其他目录,并继续挂载其他的部分,比如我的Yoga下:
1 | $ mount /dev/sda8 /mnt |
然后开始正式安装的过程。
Installation
为了后面能够更快地安装,在正式安装的时候可以修改一下/etc/pacman.d/mirrorlist文件中记录的安装源地址,删掉国外的,留一个速度最快的国内源就好…比如科大源。
然后输入:
1 | $ pacstrap /mnt base |
命令,开始安装基础的Linux。命令执行结束之后可以看到/mnt目录下面已经出现了常见的Linux根目录结构了。
调用:
1 | $ genfstab -p /mnt >> /mnt/etc/fstab |
生成分区的挂载表。
至此,在安装shell上的工作全部完成,并且已经安装到硬盘上的Linux系统也已经初具雏形了,调用以下指令将根目录切换到硬盘上去,之后所有的工作都是在已经安装好的新Linux系统中完成:
1 | $ arch-chroot /mnt /bin/bash |
最后的bash也可以不加,这样切换过去之后默认用的是sh作为shell。
设置计算机的名字:
1 | $ echo Yoga-arch > /etc/hostname |
设置时区:
1 | $ ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime |
用vi打开/etc/locale.gen文件,把需要用到的语言从里面注释掉,一般常用的是en_US和zh_CN,选择UTF-8的就行。
然后调用:
1 | $ locale-gen |
生成语言信息。
还要在配置文件中加一下:
1 | $ echo LANG=your_locale > /etc/locale.conf |
这些全部设置好之后就可以开始最后的系统安装了:
1 | $ mkinitcpio -p linux |
至此,然后可以改一下root的密码,至此,Arch linux系统安装结束。
然而,系统虽然是装好了,引导还没添加。之后可以选择自己常用的引导工具来引导Arch。
当然这些在Arch里面是没有的,需要自己安装:
1 | $ pacman -S grub efibootmgr os-prober |
grub是linux下最常用的引导软件,efibootmgr用于efi模式的支持,os-prober用于处理多系统的引导。
1 | $ cd /boot |
首先将efi分区挂载到系统中,然后使用grub-mkconfig将整个硬盘上的系统信息写入配置文件,然后使用grub-install安装引导。
重启即可引导进入Arch!!!
!!! 然而这时候得等一下 !!! 要是什么都不注意直接重启可能就会悲剧
前面说过新装好的Arch里面什么都没有,可能连网络连接的工具都是不完整的,这个时候最好检查一下网络管理软件netctl等等是不是已经装上了,否则重启之后可能没有办法连上网。
Post-installation
装好Arch之后就是各种驱动,图形界面等等的安装了,记录一下通常需要做的事情:
1 | $ pacman -S alsa-utils # 声卡驱动 |
然后重启一遍,进入系统就OK了。
后话
Yoga对Arch的支持还算可以,基本的设备都是能够驱动起来的,几个Fn键也都是正常的,目前还没有解决的问题是触摸屏不支持多点触控,触控板也不太好用,总体上还是比较满意的。
记录一下Arch下常装的几个工具:
yaourt
Arch默认的软件库管理工具是pacman,yaourt是在pacman的基础上做的一个辅助工具,安装完之后语法与原始的pacman相同,但是功能更为强大。
安装方式是在/etc/pacman.conf中加入yaourt的源
1 | [archlinuxfr] |
然后同步一下源信息并安装即可:
1 | $ pacman -Sy |
zsh
通常bash是最为常用的shell,zsh搭配“oh my zsh”的配置脚本…只能说非常强大。
回头可以专门写一篇讲zsh的。
xorg/wayland+gdm+gnome
图形界面。
file-roller
gnome下解压用的插件。
在Yoga上的Bug记录
触摸屏的多点触控问题
装了不少驱动,最好还是发现Linux对触摸屏的支持不算太好,其实多点触控已经驱起来了,但是没有对应的动作可以执行。
Wiki上写了一个叫Touchegg的软件可以配置多点触控的动作。
搞了半天装上之后发现还是不能用,虽然成功地识别了多点,然后在一个文档里面找到了一句话大意是说pinch(捏)等等动作支持没完成什么的…
坑爹呢这是!
论坛上有人说gnome和某些应用已经支持了多点触控,回头找找看官方的说明。
4月15号更新
Oh,我的天!
晚上回来yaourt -Syu
一下更新了一堆东西,比较重要的东西有xinput的输入驱动,然后chrome也更新到了版本号50。打开chrome之后惊喜地发现多点触控能用了,双指放上去可以成功缩放页面了。
不知道是驱动更新了还是chrome的功能。
应该是chrome的功能,因为我现在在vs code下面开了双栏,然后左右不能够独立触摸滑动,我记得windows下是可以的。
之前在chrome下做过一些设置,可惜49版没有什么效果,在chrome地址栏输入:
1 | chrome://flags |
然后跳出来的页面中开启Enable touch events
项。
NetworkManager在gnome下显示故障
4月9号还是10号左右的时候gnome有过一次更新,新版本后NetworkManager在设置里面打开就出问题了,各种显示不正常。原本以为是我的Arch装了什么奇怪的东西起冲突了,后来发现实验室的台式机也是这个状况,找到原因是gnome更新带来的bug。
4月13号gnome再次有个小版本更新,故障消失,不得不赞一下Arch滚动更新之迅速,一有bug应该马上就会有人上报。
gdm下触控板只能移动不能点击
gdm下触摸屏能点,但是触控板不能点,然后触摸屏还不太好用,所以挺不舒服的。
在Arch的gdm Wiki页上找到了解决方案:
触控板点击的这个功能在gdm下是默认关闭的(话说我不明白为啥要关?)
直接在命令行下:
1 | $ sudo -u gdm gsettings set org.gnome.desktop.peripherals.touchpad tap-to-click true |
即可。
然而我这里输这个居然dbus报错了,不知道什么情况,还好还有GUI下的解决方法:
1 | $ xhost +SI:localuser:gdm |
首先处理一下gdm的访问权限,然后在dconf-editor的图形界面下面把tap-to-click改过来。
重启gdm即可。
Arch和Windows时间不一致问题
发现一个非常蛋疼的事情,Arch和Windows下如果都开了自动同步网络时间的话,同步的结果会差8个小时。而且它们都会修改bios里面的硬件时间,在Arch下设置好时区,把时间改到正常了,然后切到Windows下面就不正常了;如果在Windows下面改过来了,切到Arch下又会不正常。
刚装的时候未果,只好把Arch的自动同步时间关掉,然后时区选到英国那边的零时区,这样才保证两边不会出问题。
今天回来好好研究了一下,发现这是因为两个系统默认读取硬件时间之后的设定不同。Windows会把bios上的硬件时间直接作为localtime,而Arch会把硬件时间认为是UCT的标准时间,然后加上由于时区产生的8小时算出来计算机所在的当地时间。
据Arch的Wiki上说,Windows这样做是不太好的,会有夏令时计算上的bug,也建议用户不要使用localtime,而采用Arch的标准。
幸运的是,我们国家貌似没有夏令时的制度,那么果断把Arch的UCT改成localtime即可。
1 | timedatectl set-local-rtc true |
然后用status
可以检查配置:
1 | timedatectl status |
打开之后,下面会有个warning,提示说localtime怎么不好啊,什么的,无视之就好,重启一下检查bios和Windows时间是不是都是一致的。
给Arch安装微软字体
Arch中有一些编写好的aur包比如ttf-ms-win10
、ttf-ms-win8
等等,支持快速地给系统装上windows对应版本上面自带的那些字体,比如我还是非常喜欢微软雅黑的,而且默认gnome下面的中文偶尔在某些应用下面显示得怪怪的,看起来非常地不舒服。
于是直接yaourt -S ttf-ms-win10
,结果安装给我报错了,说是需要下载的文件找不到。
这我就呵呵了,想着是不是这个aur包的PKGBUILD文件写的有问题啊,需要下载的网址写错了什么的。
重新yaourt
装了一下,然后查看PKGBUILD,原来这里面写得很清楚:微软的字体是有license限制的,不是开源随便用的,因此字体以及license文件都需要自己想办法弄到,放到PKGBUILD的目录下面再执行安装即可。
来源则比较直观,就是windows的安装镜像或者一个现成的windows系统。这个时候就体现出双系统的好处了,直接mount
把C盘挂载过来,然后准备把字体直接复制过来就好了。
但是在这里直接复制的时候发生了点问题,显示出来中间有很多文件是软链接,而且系统无法定位到是链接到哪里去了,遂失败。
于是重启系统切到windows下面,特意查看了一下,这时候并没有发现里面的文件有链接的迹象啊?
Anyway,把C盘的字体文件重新复制了一份到D盘。复制快结束的时候资源管理器报告有重复文件,问我是否替换,没怎么注意结果切回Arch安装的时候发现少了文件。试图在PKGBUILD里面直接删掉那个文件的记录,结果下面居然还有个sha256sums
校验,我了个去。遂失败。(至今不明白为什么复制会出问题,C盘这个字体文件夹有点神奇)
于是再重启切回到windows下面,这次我在命令行里面复制,再切回去的时候文件终于都正常了。
把D盘挂载上,然后把字体复制到/tmp/yaourt-xxx
的对应目录中去,继续安装,完成。
IPv6
2018-03-30
重新把实验室配的台式机也装成了 Arch,发现 IPv6 虽然能够获取到地址,但是就是死活 ping 不通任何一个。
解决方案是 Arch Wiki 上提到的启用 Privacy Extension。
暂时不明具体的原理,但是改完 sysctl.d 以及 NetworkManager 的设置之后,重启生效。