自从转到Archlinux后,就再也没有想过尝试其他Linux发行版,同时也从Archlinux学到了很多知识。按照惯例,先说几句废话。
这篇blog原本是本人发表在开源中国的,不过既然独立出来写博客,那么也就停止对那篇文章的更新了,我会在原文中注明新的地址。
原文主要针对的是使用BIOS和MBR的计算机,不过考虑到目前大家都开始使用支持UEFI的机器,并且可能由于部分原因需要使用GPT,此文也就更新了相关内容(其实是我换新机器了。。。)。
Archlinux的优点:
1.滚动升级,使用最新的包,比如最新的内核
3.较完美得解决软件包的依赖问题
4.详细的wiki,基本能够找到你想要的
Archlinux的缺点:
1.据说pacman会滚动失败
2.安装有一定难度
3.软件包可能存在bug
如果你不怕折腾,但又厌倦无休止的折腾,那么ArchLinux是一个比较好的选择,但不要在生产环境中使用它,因为这纯粹是自找麻烦。
===Changelog===
[2015-4-20] 添加ibus-rime的相关配置,fcitx-sogoupinyin不再作为首选方案。
[2016-1-28] 添加deepin桌面的配置,并将其作为首选方案,重新启用fcitx-sogoupinyin
[2016-4-15] 修正EFI的boot loader,使用bootctl
[2017-4-22] 修正DDE潜在的依赖缺失问题,感谢Dr. Xie
0x00 安装准备
1.安装介质
我是从USTC的源上下载镜像文件的,教育网速度飞快,点击进入,非教育网用户,点击进入。
你可以选择刻录到光盘或者U盘,或者放到手机里等等,在此不再复述,如果你不会,请先学习相关内容。
2.测试网络
如果你使用有线网,直接ping任何网站(当然不能是局域网内的)。
如果你使用无线网,我的建议是使用wifi-menu,没有有线网卡的机器有时候的确很让人无奈。。。
0x01 安装基本系统
1.UEFI模式测试
如果你想使用UEFI,并且你的机器支持UEFI,你在引导时应该会看到如下选项,
Arch Linux archiso x86_64 UEFI USB
UEFI Shell x86_64 v1
UEFI Shell x86_64 v2
EFI Default Loader
你应该可以知道Archlinux只提供64位的UEFI模式安装,32位无法引导,本人已经尝试过了。
如果你忘记了是否出现过上述选项,你也可以使用如下命令:
efivar -l
如果你看到了一大串内容,那就是进入了UEFI安装模式。否则,请记住,你的电脑可能不支持UEFI或者你没进入UEFI安装模式,在后续内容中,你应该选择BIOS和MBR。
2.创建分区
在这里设计到一个很大的内容,如何安排分区,这个看每个人如何规划了,下面我将使用一个比较普遍的方案:
/dev/sda1 1G /boot 物理分区
/dev/sda2 40G / 物理分区
/dev/sda3 60G /home 物理分区
/dev/sda4 8G swap 物理分区
关于分区的扩展知识,请参考wiki,点击进入。
首先是MBR分区的创建,GPT的请略过,这里使用的工具是fdisk。
fdisk /dev/sda
本机只有一个硬盘,所以使用/dev/sda,如果你有多个硬盘,应该也能知道该使用什么绝对地址了。
分区的方法都比较相似,使用m,可以列出所有命令,请根据提示分区。
其次是GPT分区,基本和MBR分区一样,只是我们使用的工具是gdisk。
gdisk /dev/sda
需要注意的是分区的标志,
/dev/sda1 EF00
/dev/sda2 8300
/dev/sda3 8300
/dev/sda4 8200
3.安装文件系统
接下来是安装文件系统,在这里GPT和MBR的区别只有/dev/sda1这个分区,我们放到最后解释。这里我们使用的FS是比较成熟的ext4,至于最新的btrfs,老实说我没用过,即使我用的是SSD,并且“据说”btrfs对SSD有优化,大家可以尝试下。
mkfs.ext4 /dev/sda2
mkfs.ext4 /dev/sda3
mkswap /dev/sda4
swapon /dev/sda4
最后一条命令是开启交换分区。
对于/boot这个分区,使用MBR的命令如下:
mkfs.ext4 /dev/sda1
对于GPT分区,请使用如下命令:
mkfs.fat -F32 /dev/sda1
4.挂载分区
如果你使用推荐的分区,请使用如下命令,否则,请自行调整
mount /dev/sda2 /mnt
mkdir /mnt/{boot,home}
mount /dev/sda1 /mnt/boot
mount /dev/sda3 /mnt/home
5.选择更新源
sed -i "s/^\b/#/g" /etc/pacman.d/mirrorlist
nano /etc/pacman.d/mirrorlist
pacman -Syy
还是和之前说的那样,请根据你的网络环境选择镜像,选择镜像,只需要将对应地址前的#去掉即可,这里推荐使用ustc或者163的源。
这里还有一个小故事,第一次安装Arch的时候,在mirrorlist中所有的Taiwan后面都有“Province of China”字样,顿生好感,只可惜现在的mirrorlist中已经没有这个彩蛋了。
6.部署基本系统
这里只要一条基本的命令就能自动完成部署了,比Gentoo简单不少。如果你想使用netstat和ifconfig之类的指令,请加上net-tools。
pacstrap -i /mnt base base-devel net-tools
7.生成fstab
fstab中记录了挂载的相关信息,Archlinux中提供了工具来一键生成(怎么感觉逼格有点低。。。)
genfstab -U -p /mnt >> /mnt/etc/fstab
这里使用的是UUID,如果不加-U,那么在fstab中记录的就是/dev/sdX之类的地址了,UUID的方式更加好,为什么呢?请自行wiki。
0x03 基本系统设置
首先请使用chroot进入部署好的基本系统,这里使用“进入”,只是为了避免此blog涵盖过多内容,关于chroot的知识,点击进入。
arch-chroot /mnt /bin/bash
alias ls='ls --color'
后一条命令是为了让ls显示颜色,方便查看。
1.设置Locale
nano /etc/locale.gen
这里你至少开启en_US.UTF-8和zh_CN.UTF-8。
locale-gen
echo LANG=zh_CN.UTF-8 >> /etc/locale.conf
这里由于console字体的原因,中文会变成方框,如果你不安装桌面环境,请使用en_US.UTF-8。
2.设置console
nano /etc/vconsole.conf
输入如下内容
KEYMAP=us
FONT=
3.设置时区
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
这里大家可能会发现BIOS的时间和系统不一样了,我提供一个解决方案。
nano /etc/adjtime
输入如下内容:
0.000000 0 0.000000
0
LOCAL
原本是为了方便时区调整的措施,点击详解,对于多系统的用户而言,就很纠结了,特别是我这样有OCD的。
4.设置主机名
虽说这里的主机名可以有大写,不过我建议大家使用常规的英文小写。
echo 主机名 > /etc/hostname
你还得修改/etc/hosts文件的内容。
nano /etc/hosts
你会看到如下内容:
#
# /etc/hosts: static lookup table for host names
#
#<ip-address> <hostname.domain.org> <hostname>
127.0.0.1 localhost.localdomain localhost 主机名
::1 localhost.localdomain localhost 主机名
#End of file
请把myhostname替换成你所设置的主机名。
5.生成初始ramdisk环境
mkinitcpio -p linux
6.用户设置
首先是设置root的密码:
passwd
创建一个日常用户,这里添加wheel用户组是为了能够使用sudo提权,毕竟我可不敢直接拿着root操作(虽然我经常这么干)。
useradd -m -g users -G wheel -s /bin/bash 用户名
passwd 用户名
7.安装启动器
首先是对于BIOS用户,UEFI的请略过。这里推荐使用GRUB。
pacman -S grub-bios
grub-install /dev/sda
grub-mkconfig -o /boot/grub/grub.cfg
这三条命令分别是使用pacman获取grub,将引导信息写到sda,以及生成配置文件grub.cfg。
对于使用UEFI的用户,官方文档不再使用gummiboot,由于我已经很久没有重装系统了,因此也就没有关注官方的更新,对不住。现在的启动器是system-boot,应该是直接用systemd来接管启动,总算是统一了。
只需要运行如下命令:
bootctl install
虽然换成了system-boot,但是配置依旧少不了。
首先我们需要在/boot/loader/entries文件夹中创建名为arch.conf的配置文件,添加如下内容:
title Arch Linux
linux /vmlinuz-linux
initrd /initramfs-linux.img
options root=/dev/sda2 rw
大致意思,各位根据名字应该就能猜个大概,这里只需要注意root部分可以填写UUID,但是为了图方面,我就直接用路径代替了,sda2即为root分区,各位需要根据自己的分区情况自行决定。
接下来需要配置/boot/loader/loader.conf,这个文件有默认的内容,只需要修改下即可。
timeout 3
default arch
如有特殊需求,请自行参考相关wiki,点击进入。
8.重启
需要退出chroot,卸载分区,然后直接reboot。
exit
umount /mnt/{boot,home}
umount /mnt
reboot
请注意,如果你的机器只有无线网卡,并且你希望通过wifi-menu联网,那么请确保在reboot之前,你已经安装了dialog。
0x04 相关驱动安装
这里有个问题很纠结,我准备在这篇blog里先提供Gnome环境的配置,而目前Gnome能够只是wayland了,但是呢,还不完美,经过本人的测试,会出现部分触控失灵等问题。因此,先偷个懒,使用Gnome的默认环境X。
1.安装ALSA(声卡)
pacman -S alsa-utils
2.安装显卡驱动
由于我使用的是Intel核显,因此如下是核显驱动的安装,如果你使用的是其他显卡,请参考官方wiki,点击进入。
pacman -S mesa xf86-video-intel
3.安装触摸板驱动
pacman -S xf86-input-synaptics
4. 安装显示服务器
这里可选wayland和xorg-server,gnome对于前者已经支持的比较完善了,当然大家亦可选择全装。
# xorg及其utils
pacman -S xorg-server xorg-xinit
# wayland
pacman -S wayland
0x05 桌面环境
在Archlinux中,有很多可用的桌面环境,以下简称DE,比如Gnome,KDE,Xfce等。截至2016年1月底,Gnome的最新版本为3.18.3,可以称之为稳定的DE。KDE5依旧一团糟,不建议读者使用。
另外有一个好消息,Deepin DE正式从AUR并入package group,也就是说大家再也无需担心依赖问题了,本次更新,新增DDE的配置。
Gnome DE安装
1. Gnome基本环境安装
pacman -S gnome
2.安装额外软件包
其实有另外一个包合集gnome-extra,只不过这个包里面包含了太多没用的东西,没什么用,OCD又犯了。。。
pacman -S file-roller evolution gedit gnome-music gnome-photos cheese gnome-mplayer
pacman -S unrar unzip p7zip
Deepin DE安装
如果你已经安装了Gnome,想要改为DDE,那么你需要先移除所有gnome相关的包,然后在按照如下进行配置,另外,在这个过程中networkmanager也会被移除,一定要再次安装,否则会相当麻烦。
1. DDE基本环境安装
pacman -S deepin deepin-extra lightdm lightdm-deepin-greeter
2.安装额外软件包
deepin-extra包含了deepin特有的一些应用,还是挺简洁的,这里就无需OCD加成了。不过,有些应用依旧缺失,需要补救一下。
pacman -S file-roller evince gedit thunderbird gpicview
pacman -S unrar unzip p7zip
在安装完DDE后,可能会遇到无法将语言改为中文的情况,只要删除~/.pam_environment文件即可。
3.安装浏览器
这里我们使用chromium,至于为什么不是firefox,原因有二,其一,我觉得它更快;其二,它能用最近的flash插件。
pacman -S chromium
最新的flash插件需要到AUR上去下,这里提供下载地址,点击下载。
下载完成后,解压,进入相关目录。
makepkg
pacman -U 生成的文件名,以.xz结尾
4.配置输入法
关于输入法,大致有2个选择,ibus和fcitx,分别有ibus-rime和fcitx-sogoupinyin。
4.1 rime输入法配置
安装ibus-rime很简单
pacman -S ibus-rime
依赖会自动完成安装。和fcitx一样,我们需要配置一下.xprofile
export GTK_IM_MODULE=ibus
export QT_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
然后,在设置的输入源中就能找到rime了,你会发现ibus和gnome的集成比fcitx好多了,而且现在ibus也比原来快多了。
Tip:关于半角全角和简体繁体切换,只需要在输入的时候按F4即可看到选项。
4.2 sogou输入法安装
先安装fcitx框架
pacman -S fcitx fcitx-qt4 fcitx-qt5 fcitx-gtk2 fcitx-gtk3 fcitx-configtool
这里会把qt的环境给依赖进来,没办法。。。
在用户目录下添加个配置文件:
$ nano ~/.xprofile
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
然后,从AUR下载fcitx-sougoupinyin,点击下载。
先安装依赖opencc,这个神器是简体和繁体互相转换的库。
pacman -S opencc
解压下载的文件,进入目录,然后如下操作:
makepkg
pacman -U 生成的文件,以.xz结尾
之后重启的时候,进菜单点击搜狗图标,应该就能用了,不行的话可以尝试运行sogou-qimpanel。
5.注册相关服务
务必记得安装networkmanager,不然无法开启网络的自动探测。
pacman -S networkmanager
开启网络服务
systemctl enable NetworkManager
如果你安装的是Gnome,你需要开启gdm。
systemctl enable gdm
如果你安装的是Deepin,你需要开启lightdm
systemctl enable lightdm
另外对于deepin,我们还需要修改lightdm的一个配置文件/etc/lightdm/lightdm.conf。
在如下段中添加deepin的greeter-session。
[Seat:*]
...
greeter-session=lightdm-deepin-greeter
0xFF 写在最后
至此,恭喜你,已经成功安装Archlinux发行版,我希望每位读者都能到达这一步。我会持续更新这篇文章,只要我还在使用Archlinux。码字不易,且看且珍惜。如果你们发现什么错误或者有什么需求,请在评论中说明,我会尽快更正。
最后,声明一下,欢迎转载,但是请注明出处,并添加链接。
阔以 :D (Hexo吧,找个时间转一下)谢谢分享
谢谢楼主分享啊
请问楼主,sda3就不管了,空着?
我猜你的第4部分中"mount /dev/sda2 /mnt/home", 应该是"mount /dev/sda3 /mnt/home". 是吗?
哎呀,字打错了,谢谢指正^_^
我按照楼主uefi的配置安装下来
但是不能休眠 据说休眠要自己手动配置
请问楼主是怎么配置的
你有添加swap分区吗?我这边是可以休眠的,只不过是直接按一下关机键,你可以试试看
添加了 一按电源建就关机
/boot/loader/entries/arch.conf 这个文件夹的内容 你有加resume吗。。。
有的话能否贴一下内容
你说的应该是hibernate,我并没有添加过resume,我用的是suspend,对于超极本而言,所谓的suspend和hibernate也没什么大的区别了,毕竟不能拔出电池来验证一下。。。
不过Gnome对hibernate的支持也不太好,并没有相应的按钮,之前的版本有extension来扩展,但是目前似乎兼容性都有问题,我帮你找了一下解决方案,需要配置内核参数和initramfs的hook,前者在arch.conf的options中添加,大致为resume=/dev/sdX,X为具体的分区号,也可以使用resume=UUID的方式;后者在/etc/mkinitcpio.conf中的HOOKS中添加resume,完成后,需要mkinitcpio -p linux,重新创建initramfs镜像。至于触发hibernate的按键,你可以将电源键的事件改成hibernate,参照https://wiki.archlinux.org/index.php/GNOME#power
如果你要使用suspend的话,可以按住alt,然后选择关机的那个按钮,此时你应该会看到它变成了一个暂停的符号。如果不是长时间休眠的话,应该够用了。
谢谢,相信今晚结合arch wiki和贵网站的此篇文章,我可以安装成功arch
安装成功。
当网络配置出问题:
ping www.baidu.com
ping:unknown host www.baidu.com
ping 8.8.8.8
connect:Network is unreachable
这是因为host 用户名设置出错吗?
文中第四点应该是将localname改成自己设定的用户名吗?
你需要提供更多的信息,比如ipconfig的输出
可能是网络根本没配好
你指的安装成功,是指哪一步?如果是gnome成功进入了,那么可能是networkmanager的问题,当然需要等待更加详细的信息才能判断。
ifconfig
lo:flags=73 mtu65536
inet 127.0.0.1 netmask 255.0.0.0
inet 6 ::prefixlen 128
...........
安装后重启,就没办法使用网络,所以gnome也无法安装
为什么只有lo,用ip link命令看看是否由其它网卡,如果仅仅是未分配地址,那可以运行dhcpcd解决,或者用静态地址也行,具体在netctl中配置。
如果是驱动问题,那你需要去好好google了。。
请问楼主用的是 retina Macbook Pro 吗?
体验怎么样?
穷学生,买不起。。。
不过有一点可以肯定,rMBP可以装archlinux,但是retina分辨率在linux下用就太恐怖,只能说HiDpi在linux下尚不成熟,不知道最新的Gnome支持得怎么样了
噗,我发现我把 MBR 看成 MBP 了
还不错
创建新用户之后 提示说 invalid user name *** 是怎么回事?
提示说的挺明确的,换个正常点的username试试
gummiboot。not found怎么办
it is named system-boot now
谢谢提醒,已修正。
我来啦~ 发现一个Bug。
看Deepin桌面环境安装,第一节的标题。
你写成了“Gnome基本环境安装”
还有Bug,搜狗拼音的输入法的链接过期了。
然后我makepkg的时候提示依赖xorg-prop这个包。
AUR期间迁移到了git,很多链接都失效了,已纠正。
。。。失误失误
按照楼主的EFI安装在bootctl install输出 file system /boot wrong 的情况
在更新system-boot部分内容的时候,刚好拿自己的机器按照本文重装了一遍,并没有发现问题。
因此,我建议你回顾一下,是否按照文章的步骤安装的,尤其是
1. 验证UEFI环境
2. 确保分区和本文提供的一致,尤其是/boot和/
3. 挂载是否成功,用lsblk验证下
搞好了,设分区的时候,那个数值没有输入。
顺便请教俩问题,每次启动系统之后,输入法都不能自己启动,我装的ibus,每次我都自己执行ibus-setup才会出来
还有一个问题就是想看文件目录,但点击home文件夹,就会弹出选择打开程序
我装的kde的桌面系统
问题1:可能是autostart文件夹的权限问题,建议看看,我之前从未遇到过,当然我使用的是fcitx-sogou
问题2:可能是你并没有安装dolphin
对于GPT分区,请使用如下命令:
mkfs.fat -F32 /dev/sd1
少个a
谢谢提醒,已修正
说几个点:
1、intel显卡需要安装intel-ucode并配置,不然启动不了
2、lightdm需要安装xorg-server包,不然lightdm不能正常启动
3、deepin默认不能使用root登录,所以像我一样跳过创建常用用户步骤的童鞋在登录界面只能转圈了
你好,关于你说的几点,我大概看了下,
1. 请问你用的是什么intel的显卡?我使用的是intel i5-5200u,没有安装intel-ucode,能够正常启动
2. 关于xorg-server,如果你安装xf86-video-intel驱动,那么它应该会作为驱动被安装的,不知道你是不是有安装这个包
3. 教程里面有说明需要创建一个日常用户,所以没有考虑使用root登录的情形,这可能是一个思维定式,因为我自己是绝不会用root登录DM的,也不建议这么做
1. 我是虚拟机环境,真实机是i7-4700HQ,在安装前查看硬件信息PCI应该是intel-vmware之类的,记不得了。想偷个懒不装intel-ucode,结果系统启动不了,倒退快照装上就能正常启动了。
2. 虚拟机显卡装xf86-video-vmware,不会有xorg-server,lightdm启动失败,log中的错误大概是cannot connect X server, path not found之类的。
3. 按理说你的教程是没有错的哈,但是像我一样只是先尝试一下的人一般都会跳过创建普通用户的,而且我也没用过deepin,并不知道root不能登,缺乏经验卡在那里想了半天。
对了,是intel处理器需要intel-ucode,并不是intel核显需要,我打错字了。
摘录wiki
```
Boot loader
See Category:Boot loaders for available choices and configurations. For example, set up the boot loader with systemd-boot if your system supports UEFI, and GRUB when not.
If you have an Intel CPU, install the intel-ucode package in addition, and enable microcode updates.
```
详见https://wiki.archlinux.org/index.php/Installation_guide
是这样的,microcode update并不是所有intel处理器都需要安装的,当出现系统不稳定的时候,可以安装试试,但这个应该不是必不可少的。
教程确实没有考虑虚拟机的情况,主要还是先入为主了。。。之后,我会考虑添加相关内容的。
需要更正一个地方:
echo LANG=zh_CN.UTF-8 >> locale.conf
应该写成:
echo LANG=zh_CN.UTF-8 >> /etc/locale.conf
被你发现了
Deepin 的桌面环境 好像还需要安装
pacman -S lightdm-deepin-greeter xorg-server
greeter可能是忘记加了,xorg-server按理应该是作为依赖自动安装的。
建议在安装GRUB之前安装显卡驱动, 否则在Vmware上GRUB的分辨率会不正常.
我在ESXi和kvm上并未发现问题,是否有找到具体的原因?比如受某个配置项的影响?
请问,怎么在system-boot加上win10的引导?
抱歉,我只使用Linux,所以并没有systemd-boot引导win10的配置经验。
但是,我查了一下systemd-boot的wiki,里面是有相关描述的,具体见https://wiki.archlinux.org/index.php/Systemd-boot 中的“Adding Boot Entries”一节,大意是使用bootctl就能实现自动检测了,另外wiki强烈建议关闭win10的快速启动。
楼主是直接把esp分区挂在/boot上的吗?像ubuntu和fedora都不让esp分区挂载到/boot上,要求挂载到/boot/efi上?有什么区别吗?
是的,我这边是直接mount到/boot,两者的区别在于,后者需要依靠boot loader,例如Grub,得看你有没有这种需求。