ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

arch linux 安装

2021-10-16 19:02:20  阅读:223  来源: 互联网

标签:sudo arch 分区 linux Linux 安装 pacman


好长时间都没有更新自己的博客了,我简单翻阅了一下自己的更新记录,上一次更新好像还是在5月份左右,距今也有快半年,这半年也是遇到了很多事情,有不好的,也有好的。这半年我对在日常生活工作中使用Linux系统产生了一些兴趣,从零开始折腾这一系列的内容,主要从安装、配置、以及尝试各种软件来取代Windows的主导地位,也产生了一些心得,这里我想分几篇博客来聊聊我是如何慢慢使用arch Linux 来替代以前的Windows机器

为何选择arch Linux

我本身有一台6年前买的联想的笔记本,随着每次系统的更新,也变得越来越卡了,终于有一点我忍不了想着要不退回到windows 7吧,windows 10这台机器已经有点不行了。恰巧我最近在看一本关于计算机发展史的书,书中提到自由软件运动,那种运动有一种人人为我,我为人人的理想主义色彩,我想既然不能编写自由软件造福一方,至少应该享受自由软件带来的好处,而且国内经常爆出各种软件窃取用户隐私的新闻。何不趁此机会转移到自由软件阵营呢?说做就做,自由软件的基础自然是需要一个自由的操作系统,Linux是目前使用最为广泛的自由操作系统。在看了各种Linux发行版本之后我决定使用arch Linux,主要有以下几个原因:

  1. 更新方式比较激进,arch Linux采用滚动更新的方式,这意味着用户能享受最新的软件版本,当然过激的更新行为会导致一些问题,比如常见的滚挂。我自认为我不缺少动手能力,这个我有信心能自己解决
  2. arch Linux 丰富的软件源使它能够安装其他发行版Linux无法安装的软件
  3. 丰富的wiki文档,你能遇到的问题几乎都可以在里面找到答案
  4. 最小化安装,arch Linux自身是最精简的系统,几乎精简到不能再精简。因此比起其他发行版本的Linux来说,它提供更高自由度的可配置性。
  5. 安装困难,我一直觉得对于自己专业内的事情,要做就做最困难的,既然它的安装使用最为困难,那我就用它,当彻底征服了这一块内容,带来的成就感是无法比拟的。而且熟悉了它的安装过程,又例如提高对Linux的认识

基于上述几点理由,我开始了漫长的折腾之路

arch Linux 安装

安装主要参考 arch wiki 好在文档大部分都有中文版本,对于英语不好的人来说阅读起来也不会有过多的阻碍

制作U盘启动项

首先去官方指定的镜像站下载安装包,然后使用相应的工作制作U盘启动项,windows上我使用的是rufus、Linux或者mac上直接使用如下命令写入到U盘

sudo dd bs=4M if=/path/to/archlinux.iso of=/dev/sdx status=progress oflag=sync

上述命令的含义是制作一个镜像文件,源文件内容保存在if参数所指定的位置,输出到 of 所指定的位置, status=progress 表示现实制作进度, oflag=sync表示以同步的方式写入,即所有数据写入完成命令结束,而不是刚写入就结束

需要注意的是,sdx 是u盘在系统中的命名,一般插入U盘后,在shell上使用fdisk -l可以看到,另外有的U盘可能经过分区,显示出下面还有sdx1、sdx2等分区,要写到sdx,而不是sdx1或者sdx2

将U盘插入待装机的电脑上,进入bios调整启动顺序和安全设施,如果使用uefi方式启动的话,需要调整启动方式为uefi only 而不是 legacy/csm

接下来就可以启动电脑,进入arch Linux的安装界面了

arch linux 安装界面

联网设置

进入到安装界面的第一步需要连接上网络,这里使用 iwctl 进行网络连接配置

iwctl                       #进入交互式命令行
device list                 # 列出设备名,比如无线网卡一般叫做 wlan0
station wlan0 scan          #扫描Wi-Fi
station wlan0 get-networks  #列出扫描到的Wi-Fi名称,例如要连接到esi-0这个Wi-Fi
station wlan0 connect esi-0 #尝试连接,这个时候需要输入密码

成功后就连上互联网了,可以使用 ping archlinux.org 来试试网络是否成功连上

更新系统时间

后续在访问https之类的站点时会验证客户端和服务器的证书和时间的,有时候时间不统一,在访问时可能会报无效的证书之类的错误

使用命令

timedatectl set-ntp true

更新之后可以使用 timedatectl status 检查服务状态

磁盘分区与格式化

根据arch wiki上的说法,采用uefi的启动方式时,至少需要一个boot或者efi 分区作为efi系统分区(大小不能小于280M)、一个根分区。

这里假设硬盘大小为100G,我采用如下的分区方案

  • efi 分区 /efi 1G
  • 根分区 / 40G
  • 用户主目录 /home 剩余全部空间,越大越好

windows 做类比的话,根分区相当于c 盘,主要用来装系统相关的内容,用户分区相当于D盘或者其他盘,用来放用户数据,后续如果系统挂了,重装系统的话,不会破坏用户目录的内容,甚至如果用户目录在其他物理盘上,后面换机器了直接将这块盘挂载到其他机器上,数据直接就能用了

首先将磁盘分区表转化为gpt类型

lsblk                       #显示分区状况
parted /dev/sdx             #执行parted命令, 进行磁盘类型变更
(parted)mktable             #输入mktable 修改磁盘分区表类型
new disk label type? gpt    #输入gpt,修改分区表为gpt类型
quit                        #最后退出parted交互式命令 

接下来使用cfdisk 命令对磁盘进行分区

cfdisk /dev/sdx #使用cfdisd对磁盘进行分区

cfdisk 界面

free space 表示未分区的部分,上下键用来选择区域,左右键用来选择操作

先选择new新建分区,然后输入大小,最后回车,重复几次这个操作,按照之前定义的大小来完成分区

fdisk 完成分区

记得完成之后,将选项调整到wirte 在退出前将分区写入到磁盘。完成之后使用

fdisk -l 

查看分区

分区

接下来格式化磁盘中的各个分区

  • efi 分区格式化为 vfat 格式
  • 根分区和用户分区格式化为 ext4格式
mkfs.ext4 /dev/sda2
mkfs.ext4 /dev/sda3
mkfs.vfat /dev/sda1

接下来将磁盘挂在到当前系统的文件目录下,使磁盘能正常被系统访问到

mount /dev/sda2 /mnt
mkdir /mnt/efi
mkdir /mnt/home
mount /dev/sda1 /mnt/efi
mount /dev/sda3 /mnt/home

系统安装

折腾了这么多东西,终于要开始正式安装系统了,arch linux提供了一个脚本用来自动安装系统内核

pacstrap /mnt base base-devel linux linux-firmware

这句命令可以帮助我们将系统所需要的包安装到/mnt 这个目录也就是磁盘上

等待一段时间,安装就完成了,先别着急重启,还有一些内容需要安装

pacstrap /mnt dhcpcd vim sudo networkmanager # dhcpcd networkmanager 是网络相关的软件包,后期缺少可以通过网络下载,联网软件没有的话只能白瞎 

系统自身配置

到这里基本已经完成了安装部分的工作了,接下来要进行的就是重启前的基本配置了

生成磁盘分区的记录文件

genfstab -U /mnt >> /mnt/etc/fstab

生成之后可以使用cat或者 vim 之类的命令复查一下生成的是否有误

fstab 文件

接下来切换到新安装的系统上

arch-chroot /mnt

在新系统中先在/etc/hostname中设置主机名,在文件中输入你想要的主机名,例如叫 arch

接下来在文件/etc/hosts中设置与其匹配的条目,可以加入以下内容

127.0.0.1   localhost
::1         localhost
127.0.1.1   arch.localdomain    arch

接着设置时区,在/usr/localtime 下用 /usr 中合适的时区创建符号连接

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

将系统时间同步到硬件时间

hwclock --systohc

接下来进行本地化操作,程序如果需要本地化文件,都需要依赖 locale,它规定了地域、货币、时区日期的格式、字符排列方式和本地化标准。需要在这两个文件中设置 locale.genlocale.conf

编辑 /etc/locale.gen 然后去掉 en_US.UTF-8 UTF-8 和其他需要的地区前的注释,例如作为中文用户可以去掉 zh_CN.UTF-8 UTF-8 以显示中文

编辑完成之后使用如下命令生成 locale

locale-gen

/etc/locale.conf 文件中指定系统使用的语言,这里推荐使用英文,否则在出错的时候可能会出现中文乱码,不便与排错

echo 'LANG=en_US.UTF-8' > /etc/locale.conf

设置root 密码

passwd root

根据cpu的不同,安装对应的微码,以确保处理器能稳定运行

pacman -S intel-ucode   #intel
pacman -S amd-ucode     #amd

安装引导程序

为了能在机器加电之后正常找到Linux所在位置,需要安装引导程序,来引导操作系统的启动。

pacman -S grub efibootmgr # 使用grub做引导程序,efibootmgr 是uefi方式启动需要的
grub-install --target=x86_64-efi --efi-directory=/efi --bootloader-id=arch #将启动项取名为arch 启动类型为efi的64位系统 系统启动位置在 /efi

接下来可以稍微对启动配置做一些修改,编辑 `/etc/default/grub` 文件,去掉 `GRUB_CMDLINE_LINUX_DEFAULT` 一行中最后的 `quit` 参数,同时把`log level` 的数值从3改到5,这样是为了后续如果出现系统错误方便排查。同时加入 `nowatchdog` 参数,这样可以显著提升开关机速度

修改完成之后生成grub所需的配置文件

grub-mkconfig -o /boot/grub/grub.cfg

这样就完成了安装

exit
umount -R /mnt
reboot

一切顺利的话,重启之后应该就能进入系统了。

新系统基础配置

网络配置

之前我们下载了与网络相关的两个工具networkmanagerdhcpcd,用来管理网络和dhcp自动分配IP地址

systemctl enable --now NetworkManager # 启动networmmanager服务
nmcli device wifi list # 查看Wi-Fi列表
nmcli device wifi connect ssid password password #连接Wi-Fi,ssid表示Wi-Fi名,后面一个password表示连接wifi的真实密码

网络连接成功之后,使用pacman将系统更新到最新版本

pacman -Syyu

创建非root用户

为了系统安全防止自己某天抽风不小心输入类似 rm -rf / 之类的危险命令,平时最好使用非root登陆。 对于系统操作使用sudo来提升权限

useradd -m -G wheel -s /bin/bash arch

创建一个名为arch的用户,将用户组归属到wheel中,同时创建用户目录, 并且指定shell使用bash

接下来使用 passwd arch 来修改用户密码

由于系统中并没有安装vi,所以默认会使用vi命令的一些命令都会失效。所以需要将 vi 链接到 vim

ln -sf /usr/bin/vim /usr/bin/vi

使用visudo 将文件中 #%whell ALL=(ALL) ALL 这行的注释去掉

使用su arch 将当前用户切换到arch。可以使用命令sudo pacman -Syyu来更新系统,同时测试一下输入用户密码之后能否执行一些root命令

设置交换文件

在桌面环境中,交换分区或文件用来实现休眠(hibernate)的功能,即将当前环境保存在磁盘的交换文件或分区部分。除此之外,某些特定软件需要 swap 才可以正确运行。交换文件与分区性能相同,且交换文件更为灵活,可随时变更大小,增加与删除

dd if=/dev/zero of=swapfile bs=1M count=4096 status=progress #设置4G的交换分区,大小根据系统的实际内存来决定,一般最好略大于物理内存
chmod 600 /swapfile
mkswap /swapfile # 格式化swap文件
swapon /swapfile # 启用swap文件

最后往/etc/fstab中追加如下内容

/swapfile none swap defaults 0 0

开启32位软件库支持与ArchLinuxCN库的支持

为了系统的稳定,官方关闭了32位软件以及aur软件库,但是仅仅只依靠官方源中的软件时不够用的,这里我们要打开这两个库

vim /etc/pacman.conf

去掉[multilib]一节中两行的注释,来开启 32 位库支持。
在文档结尾处加入下面的文字,来开启 ArchLinuxCN 源。

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

添加这两行

执行 sudo pacman -Syyu 更新pacman数据库

然后需要安装 archlinuxcn-keyring 包以导入 GPG key

sudo pacman -S arhclinuxcn-keyring

有时候因为密钥环的问题,导致这一步安装报错,可以依次执行下面的命令

sudo pacman -syyu
sudo pacman -S haveged
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

然后再重新安装,即可解决问题

最后安装 yay 用来下载archlinuxcn库中的软件

结尾

至此,已经完成了对系统的安装到基础配置,现在已经有了一个基本可用的操作系统了,但是目前系统仍然只有一个基本的黑框框,作为日常使用还远远不足,至少还需要一个桌面环境,后面的博文会陆续介绍我是如何安装并配置一个基本的桌面环境。最后到一个基本可用于日常生活和工作中的操作系统。


标签:sudo,arch,分区,linux,Linux,安装,pacman
来源: https://www.cnblogs.com/lanuage/p/15414950.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有