zoukankan      html  css  js  c++  java
  • arch linux 安装

    好长时间都没有更新自己的博客了,我简单翻阅了一下自己的更新记录,上一次更新好像还是在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库中的软件

    结尾

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


  • 相关阅读:
    个人网站一步一步搭建——(11)使用python爬取博客园数据
    个人网站一步一步搭建——(10)后台登陆dome
    个人网站一步一步搭建——(9)路漫漫其修远矣
    个人网站一步一步搭建——(8)小小节
    个人网站一步一步搭建——(7)微动态页面前端
    个人网站一步一步搭建——(6)留言板页面前端
    Codeforces 1327D Infinite Path
    Codeforces 1316E Team Building
    Codeforces 1316D Nash Matrix
    Codeforces 1325E Ehab's REAL Number Theory Problem
  • 原文地址:https://www.cnblogs.com/lanuage/p/15414950.html
Copyright © 2011-2022 走看看