前言
在第一次装的时候,遇到了各种各样的问题,因为Archlinux更新飞快,网上很多东西都已经不适用,一开始还不回去找官方Wiki寻找方法,导致在装Arch的过程中遇到了各种各样的问题,遇到问题简单粗暴地直接格式化硬盘重新安装 重装次数都不止60次了 ,因此在这里指引大家,遇到问题最直接的方法还是去浏览Arch Wiki
,其中,部分中文版更新较慢,因此需要活用浏览器的网页翻译功能,或者中英对比进行查看。
英文Archlinux Wiki :https://wiki.archlinux.org/
中文Archlinux Wiki :https://wiki.archlinux.org/index.php/Arch_Linux_(简体中文)
在此感谢该文章的引导,我这篇文章是根据自己安装过程遇到的问题并如何解决进行记录。
https://www.viseator.com/2017/05/17/arch_install/
准备
安装介质
建议U盘安装
1、到Arch Linux Downloads页面下方的中国镜像源中下载archlinux-**-x86_64.iso这个iso文件。
如果是Linux系统下制作安装介质,推荐使用dd命令,教程:
http://www.runoob.com/linux/linux-comm-dd.html
如果是windows系统下制作安装介质,推荐使用Rufus
,可以直接到官网下载,官网链接:
http://rufus.ie/
使用方法:
磁盘准备
我直接在闲鱼掏了张西数HDD 500G黑盘,成本不高也就80R,为什么要专门弄一个盘进行安装呢?原因很简单,方便,出什么问题直接格式化硬盘重新开始 [够快够方便吧哈哈哈]
如果是长期用,还安装游戏什么的,建议500G(80R左右),办公250G(40R左右)绰绰有余。
-
在Windows平台下,需要到磁盘管理把磁盘设置成“未分配”状态下,也就是“删除卷”,步骤如下:
- 右击Windows图标,弹出菜单中选择磁盘管理
- 对需要安装的磁盘进行删除卷操作【若不是空盘,删除卷前请备份重要数据】:
-
在linux下分出一块区域安装:使用fdisk进行,教程请见链接中的删除分区:
http://www.liusuping.com/ubuntu-linux/linux-fdisk-disk.html
-
空闲的磁盘(新磁盘):不需要进行任何操作。
进入U盘的Linux系统
重启电脑选择启动设备
图中可以看到我的U盘(闪迪牌子的)有两个,其实是两个不同的启动方式。
在此我选择以UEFI方式安装Arch。因此选择UEFI开头的。 |
---|
- 以UEFI方式打开:
UEFI:SanDisk,Partition 1
- 以Bios方式打开:
SanDisk
选择UEFI方式打开后,在此选择如图第一项“Arch Linux install”
进入中如图:
成功进入如图:
正式开始
1、联网
有线连接输入dhcpcd
,回车
dhcpcd
安装过程中必须有网络连接,因此还需要检测网络是否连接正常:
ping www.baidu.com
并不会马上出检测结果,请耐心等待
注意:该指令并不会自动停下来,会不停地测试下去,因此需要按Ctrl + c
结束当前任务
如果网络不正常,可能是由于dhcp服务未开启,可以使用下面指令进行开启
systemctl enable dhcpcd.service
2、更新系统时间
timedatectl set-ntp true
若正常运行,则没有任何消息弹出
3、分区与格式化
注意:请一定要注意自己输入的是否正确,否则会带来数据的损失
血的教训
3.1 查看分区
执行语句
lsblk
3.2 进入选择的硬盘
fdisk /dev/sdx (请将sdx替换成你要操作的磁盘如sdb sdc等)
例如我的sdb则
fdisk /dev/sdb
进入后如图:
3.3 创建分区
对于一个选定的硬盘,有一些分区是必须要有的:
(1)一个根分区
(挂载在根目录) /
,
(2)如果 UEFI 模式被启用,你还需要一个 EFI 系统分区,
(3)Swap 可以在一个独立的分区上设置,也可以直接建立 交换文件。
因为我前面是以EFI方式引导
的,所以这里按照如下操作就行:
1、如果你是一块全新的硬盘:输入 g
来创建一个全新的gpt分区表,否则直接进行第2步。
2、输入 n
:创建一个默认分区
3、若出现 [ p / e
] 选择,选 p
,若没出现,跳过这步直接执行过程4
4、选择序列号,一般直接回车
就行,默认从1开始从小到大排列
5、输入起始扇区First sector:这一步直接回车
默认从前面开始
6、输入终止扇区Last sector:输入 +XXXM
,例如:+598M
,这里需要你自己根据需求输入你选择的大小,然后回车
7、若弹出“Do you want to remove the signature? [Y]es/[N]o:”,输入 y
即可
8、输入 t
改变分区类型,请一定要先按 l(小写的L)
找到自己需要的类型序号,可能因为主板不同序号不同
9、输入 p
查看当前盘的分区状况
10、最后一定要输入 w
写入更改
到此,创建分区步骤结束,下面贴上步骤图,仅供参考
最后记得输入 p
打印状态检查是否符合你需要的大小和类型,与预想一样再输入 w
写入数据
3.4 格式化分区
分区后需要对分区进行格式化,由于这里使用了EFI分区,因为EFI分区
需要FAT32文件格式
(如果是在真机上已安装有Windows的情况下安装Linux成双系统,且以EFI引导系统,则EFI分区不需要再次格式化),所以需要将其格式化为FAT32格式;根分区(/)
格式化为ext4
格式;设置并开启Swap分区:
注意自己改sdX为自己的盘符,不改或改错格式化错硬盘就糟了
mkfs.fat -F32 /dev/sdb1
mkfs.ext4 /dev/sdb2
mkswap /dev/sdb3 -L Swap
swapon /dev/sdb3
3.5 挂载分区
格式化完成后,需要将分区挂载到 /mnt ,先挂载根分区(这里是/dev/sdb2);再挂载EFI分区(这里是/dev/sdb1),挂载EFI分区时,需要在/mnt上先创建 boot/EFI 目录,然后将EFI分区挂载到/mnt/boot/EFI上;Sawp分区不需要挂载:
mount /dev/sdb2 /mnt
mkdir -p /mnt/boot/EFI
mount /dev/sdb1 /mnt/boot/EFI
4、安装基本系统
4.1 选择镜像源
从这一步开始我们需要对部分文件进行编辑,因此在此推荐一款编辑器Vim,详细操作可以自己网上搜学习。
镜像源是我们下载的软件包的来源,我们需要根据自己的地区选择不同的源来加快下载的速度。
执行以下命令,用Vim来编辑/etc/pacman.d/mirrorlist
这个文件
vim /etc/pacman.d/mirrorlist
- 提示:输入地址时可以按
Tab
自动补全地址
基本操作:
在normal模式下,按下 dd
可以剪切光标下的行,按 gg
回到文件首,按 P
(注意是大写的)将行粘贴到文件最前面的位置(优先级最高)。
也可以按下 i
切换到手动输入模式(效率更高,因为太多找着眼花)
按下Esc
退出手动输入模式(返回normal模式)
这里推荐阿里云、清华、163的源:
Server = http://mirrors.aliyun.com/archlinux/$repo/os/$arch
Server = http://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch
Server = http://mirrors.163.com/archlinux/$repo/os/$arch
最后在normal模式下输入
:wq
保存退出
顺带一提,不保存直接退出:q
4.2 安装基本包
下面就要安装最基本的ArchLinux包到磁盘上了。这是一个联网下载并安装的过程。
执行以下命令:
pacstrap /mnt base base-devel linux linux-firmware dhcpcd
等待下载完成
5、配置系统
5.1 配置Fstab
生成自动挂载分区的fstab文件,执行以下命令:
genfstab -L /mnt >> /mnt/etc/fstab
使用以下指令检查一下生成的fstab文件是否正确,执行以下命令:
cat /mnt/etc/fstab
5.2 chroot
使用Chroot切换到新安装的系统
arch-chroot /mnt
以后如果系统出了问题,可以插上U盘启动,加载分区后再通过Chroot进入系统并修复。
5.3 设置时区
将系统时区设为东八区:
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
设置时间标准为UTC,并调整时间漂移:
hwclock --systohc --utc
5.4 提前为系统安装必须软件包
因为我们已经通过Chroot进入了系统,只有一些非常基础的组件
这里就就介绍这个软件包管理器——pacman
pacman软件包管理器是 Arch Linux 的一大亮点。它将一个简单的二进制包格式和易用的构建系统结合了起来。pacman的目标是简化对软件包的管理,无论软件包是来自官方软件仓库还是来自用户自己的创建。
pacman 通过和主服务器同步软件包列表来进行系统更新。这种服务器/客户端模式可在使用一条命令就下载或安装软件包的同时,也安装其必需的依赖包。
用法:
pacman -S 包名
执行如下指令安装必须包(注意大小写)
pacman -S vim dialog wpa_supplicant ntfs-3g networkmanager netctl
5.5 配置Locale
这一步对使用地区和语言等进行配置。在/etc/locale.gen
文件中进行配置,locale.gen是一个仅包含注释文档的文本文件。指定需要的本地化类型,只需移除对应行前面的注释符号(#
)即可,使用下面命令打开locale.gen文件:
vim /etc/locale.gen
然后找到下面4项,去掉每项前面的#
即可:
en_US.UTF-8 UTF-8
zh_CN.UTF-8 UTF-8
zh_HK.UTF-8 UTF-8
zh_TW.UTF-8 UTF-8
保存并退出。(:wq
)
locale-gen
生成Locale信息:
locale-gen
打开(不存在时会创建)/etc/locale.conf
文件:
vim /etc/locale.conf
在文件的第一行加入以下内容:
LANG=en_US.UTF-8
保存并退出。(:wq
)
注意:不推荐此时设置任何中文locale,因为这样做可能会导致tty显示乱码。
5.6 设置主机名与host
打开(不存在时会创建)/etc/hostname
文件:
vim /etc/hostname
在文件的第一行输入你自己设定的一个myhostname
保存并退出(:wq
)。
编辑/etc/hosts文件:
vim /etc/hosts
在文件末添加如下内容(将myhostname替换成你自己设定的主机名)
127.0.0.1 localhost
::1 localhost
127.0.1.1 myhostname.localdomain myhostname
保存并退出(:wq
)。
5.7 设置Root密码
Root是Linux中具有最高权限帐户,有些敏感的操作必须通过Root用户进行,比如使用pacman,我们之前进行所有的操作也都是以Root用户进行的,也正是因为Root的权限过高,如果使用不当会造成安全问题,所以我们之后会新建一个普通用户来进行日常的操作。在这里我们需要为Root帐户设置一个密码:
执行如下命令:
passwd
密码不会显示,因此谨慎两次输入
5.8 网络配置
若使用有线网络的话,启动dhcp服务:
systemctl enable dhcpcd.service
5.9 新建用户与密码
新建用户
因为使用root用户登陆后,root用户拥有系统的所有操作权限,这样对系统的操作非常不安全(如一不小心将系统文件删除了,怎么办?),所以需要新建一个普通用户
,让其对系统的操作受到一定限制,使用下面命令新建新用户:
useradd -m -G wheel username (请自行替换username为你的用户名)
注意:用户名首字母不能大写
- -m:创建用户主目录(/home/[用户名])
- -G:用户要加入的附加组列表;此处将用户加到wheel组中,之后可以给这个组执行sudo命令的权限
设置密码
passwd username (请自行替换username为你的用户名)
根据提示输入两次密码就可以了,注意,这是你的用户密码,推荐与之前设置的root用户的密码不同。
5.10 配置sudo
我们已经创建好了一个新的用户,以后我们将会使用这个用户来登录,那么如果我们需要执行一些只有root用户才能执行的命令(例如修改系统文件、安装软件包)怎么办?
当然我们可以通过sudo
命令来切换到root用户
执行命令后再通过exit
返回普通用户。
但是sudo为我们提供了一个更快捷的办法,使用sudo,我们只要在需要root权权限执行的命令之前加上sudo就可以了,例如安装软件包:
sudo pacman -S 包名
下面我们就来安装并配置sudo。
sudo本身也是一个软件包,所以我们需要通过pacman来安装:
pacman -S sudo
接下来我们需要用专门的visudo命令来编辑sudo的配置文件(前面这句是为了创建vim到vi的软链接避免找不到vi编辑器):
ln -s /usr/bin/vim /usr/bin/vi
visudo
实际上就是vim
的操作,使用它是为了对编辑后的文件进行检查防止格式的错误。
将
#%wheel ALL=(ALL)ALL
这行,去掉之前的#
注释符,保存并退出就可以了。
这里的%wheel就是代表wheel组,意味着wheel组中的所有用户都可以使用sudo命令。
当然为了安全使用sudo命令还是需要输入当前用户的密码的。
5.11 配置grub
grub是一个启动引导器,同时支持EFI和BIOS方式的启动。若使用的UEFI方式引导系统,则还需要安装efibootmgr,如果是双系统的话,还需要安装os-prober,且如果使用Intel CPU的话,则需要安装 intel-ucode 并启用因特尔微码更新。
pacman -S intel-ucode(非IntelCPU可以跳过此步骤)
因为前面一直用的EFI/GPT引导方式,所以这里也很简单了
安装grub
与efibootmgr
两个包:
pacman -S grub efibootmgr
部署grub:(注意属性都是两个横杠-)
grub-install --target=x86_64-efi --efi-directory=/boot/EFI --bootloader-id=grub --recheck --debug
若最后提示Installation finished. No error reported
则表示“安装完成并没有遇到错误”。
生成配置文件:
grub-mkconfig -o /boot/grub/grub.cfg
我安装的时候遇到的问题会在下面列出并指出解决方法 ↓
若在部署grub的时候遇到如下问题:
EFI variables are not supported on this system
问题应该是出在efivars内核
没有被加载
通过输入以下指令进行确认是否属于该问题
输入:
efivar-tester
返回显示:
UEFI variables are not supported on this machine.
若提示以上指令,需要先exit
退出chroot,然后启用efivars:
exit
modprobe efivars
然后再进入chroot
arch-chroot /mnt
进入后再次测试,输入:
efivar-tester
如果不再报错,就可以再次部署grub了
grub-install --target=x86_64-efi --efi-directory=/boot/EFI --bootloader-id=grub --recheck --debug
生成配置文件:
grub-mkconfig -o /boot/grub/grub.cfg
这个问题我装Arch的时候弄了好几天,终于在这个网站找到了解决方法,解决办法来自:这里
5.12 安装后检查
如果你是多系统,请注意上面一节中对os-prober
这个包的安装。
强烈建议使用如下命令检查是否成功生成各系统的入口,如果没有正常生成会出现开机没有系统入口的情况:
vim /boot/grub/grub.cfg
检查接近末尾的menuentry
部分是否有windows或其他系统名入口。具体情况因个人不同:
如果你没有看到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
编辑配置文件手动添加引导的分区入口。
配置好后我们进行一次重启,执行:
exit
来退出chroot。
reboot
来重启你的电脑。
如果是直接在硬盘安装,重启的时候选择系统的时候就可以看到“grub
”
如果是vmware安装的话,重启可以直接进入这个选择页面,选第一个进入就可以了。
进入后可以看到的页面
到此,Archlinux安装成功。
6、安装后简单配置
重启以后输入你刚创建的用户名与密码来登录。注意登录后要重新进行联网操作。
切换账户输入logout
即可
以root登录:
以个人账户登录:
请以root权限登录,做几个简单的配置:
6.1 连接网络
现在我们是在新安装的系统上进行操作,所以我们要重新联网,我们在之前安装系统时已经提前装好了相关的包。所以现在只要跟之前一样:
如果你是有线网并且路由器支持DHCP的话插上网线后先执行以下命令获取IP地址:
dhcpcd
无线网:
wifi-menu
按界面提示进行操作就可以了。
如果wifi-menu无法联网,可以尝试下面的方法(来源):
sudo systemctl start wpa_supplicant.service
使用nmcli查看Wifi列表:
nmcli dev wifi list
连接Wifi(注意要带引号):
nmcli device wifi connect "你的Wifi名称" password "你的Wifi密码"
同样可以使用ping命令来测试是否正常联网。
6.2 创建交换文件
交换文件可以在物理内存不足的时候将部分内存暂存到交换文件中,避免系统由于内存不足而完全停止工作。
之前我们通常采用单独一个分区的方式作为交换分区,现在更推荐采用交换文件的方式,更便于我们的管理。
注:交换文件的存在简单点说就是为了避免在我们电脑的内存条内存不足而停止工作,这个交换文件就是从硬盘划分出一块空间必要的时候充当内存使用,但是我们都知道,硬盘处理数据的速度远远小于内存条的处理速度,因此当需要使用到交换文件的时候会出现的问题也可想而知。对于内存小的用户,交换空间通常是推荐的,但是对于拥有大量的物理内存的用户(8G/16G以上)来说是否使用主要看个人口味了(尽管它对于休眠到硬盘支持是必须的)。
分配一块空间用于交换文件,执行:
dd if=/dev/zero of=/swapfile bs=1M count=512 status=progress (请将512换成需要的大小,单位M)
交换文件的大小可以自己决定,推荐4G以下的物理内存,交换文件与物理内存一致,4G以上的物理内存,交换文件4-8G。
更改权限,执行:
chmod 600 /swapfile
创建好交换文件后,将其格式化:
mkswap /swapfile
启用交换文件:
swapon /swapfile
最后我们需要编辑/etc/fstab为交换文件设置一个入口,使用vim打开文件:
vim /etc/fstab
注意编辑fstab文件的时候要格外注意不要修改之前的内容,直接在最后新起一行加入以下内容:
/swapfile none swap defaults 0 0
简单提一下删除交换文件:
删除交换文件
如果要删除一个交换文件,必须先停用它。
作为root运行:
swapoff -a
然后即可删除它:
rm -rf /swapfile
最后从 /etc/fstab 中删除相关条目
更多交换文件的操作可以查阅Arch Wiki - Swap
7、可视化桌面的安装
该部分我以个人账户qingbing为前提讲:
Linux下有很多著名的桌面环境如Xfce、KDE(Plasma)、Gnome、Unity、Deepin等等,它们的外观、操作、设计理念等各方面都有所不同, 在它们之间的比较与选择网上有很多的资料可以去查。
在这里我以我正在用的非常流行的KDE(Plasma)作为示范,当然你也可以把它们全部装上换着用,因为Linux的模块化,这样完全没有问题。
更多桌面环境的安装指南请见下面的链接:
7.1 安装KDE(Plasma)
直接安装软件包组(包含了很多软件包)即可:
sudo pacman -S plasma kde-applications
7.2 安装桌面管理器sddm
安装好了桌面环境包以后,我们需要安装一个图形化的桌面管理器来帮助我们登录并且选择我们使用的桌面环境,这里我推荐使用sddm。
安装sddm
sudo pacman -S sddm
7.3 设置开机启动sddm服务
sudo systemctl enable sddm
简单说明一下用于管理系统服务的命令systemctl
的使用方法
sudo systemctl start 服务名 (启动一项服务)
sudo systemctl stop 服务名 (停止一项服务)
sudo systemctl enable 服务名 (开机启动一项服务)
sudo systemctl disable 服务名 (取消开机启动一项服务)
7.4配置网络
到现在我们已经安装好了桌面环境,但是还有一件事情需要我们提前设置一下。由于我们之前使用的一直都是netctl
这个自带的网络服务,而桌面环境使用的是NetworkManager
这个网络服务,所以我们需要禁用netctl
并启用NetworkManager
:
sudo systemctl disable netctl
sudo systemctl enable NetworkManager (注意大小写)
同时你可能需要安装工具栏工具来显示网络设置图标(某些桌面环境已经装了,但是为了保险可以再装一下):
sudo pacman -S network-manager-applet
这样开机以后我们就可以在图形界面下配置我们的网络啦。
搞定
到此,重启后即可进入图形化界面了
重启指令还是reboot