详写 UEFI & BIOS 安装 Arch Linux

2023-05-16

Arch Linux官方安装向导:https://wiki.archlinux.org/index.php/Installation_guide

文章目录

    • 1. 准备
    • 2. VirtualBox 打开 EFI
    • 3. 安装
      • 验证启动方式
      • 连接互联网
        • 连接 wifi
      • 更新系统时钟
      • 磁盘分区
        • BIOS 磁盘分区
        • UEFI 磁盘分区
      • 磁盘格式化
        • BIOS 磁盘格式化
        • UEFI 磁盘格式化
      • 挂载
        • BIOS 挂载
        • UEFI 挂载
      • 修改镜像列表
      • 安装系统
      • 配置系统
      • 进入系统
      • 修改时区
      • 同步系统时间
      • 本地化设置
      • 网络配置
      • 给 root 用户添加密码
      • 安装 grub 引导
        • BIOS 安装 grub 引导程序
        • UEFI 安装 grub 引导程序
      • 安装 dhcpcd 和 iwd
      • 退出系统
      • 取消挂载
      • 重启电脑
    • 4. 重启进入系统后的设置
      • 联网设置
      • 更新系统
      • 安装软件包
      • 添加普通用户
      • 给新用户设置密码
      • 修改 /etc/sudoers 文件
      • 退出root用户
      • 使用新用户登录
    • 5. pacman 常用命令
    • 6. Arch Linnux 美化 (st + dwm)

1. 准备


官方镜像下载地址:https://archlinux.org/download/

在物理机上安装需要U盘启动盘。

在虚拟机上安装需要iso镜像。

2. VirtualBox 打开 EFI


如果使用VirtualBox虚拟机,勾选Enable EFI以在VirtualBox中打开EFI
在这里插入图片描述

3. 安装


验证启动方式


ls /sys/firmware/efi/efivars

如果命令没有报错,则使用的是UEFI

如果目录不存在则可能使用的是BIOS

连接互联网


安装Arch Linux必须连通网络。

可以插入网线或使用wifi

如果使用虚拟机,则不需要进行这一步操作。

连接 wifi


使用iwd连接wifi

# 进入iwd交互界面
iwctl

# 查看设备名
device list

# 扫描网络
station <设备名> scan

# 查看网络名称
station <设备名> get-networks

# 连接网络
station <设备名> connect <网络名称>

更新系统时钟


timedatectl set-ntp true

磁盘分区


可以使用fdisk命令进行磁盘分区,也可以使用cfdisk命令进行磁盘分区。

cfdisk命令有交互界面。

cfdisk

输入命令进入cfdisk界面。

在这里插入图片描述
BIOS选择dosUEFI选择gpt

在这里插入图片描述
New创建一个新分区,并输入分区大小。

在这里插入图片描述
Type选择分区类型。

在这里插入图片描述
boot分区选择EFI Systemswap分区选择Linux swap系统分区选择Linux filesystem

在这里插入图片描述
分区完成,Write写入磁盘。

在这里插入图片描述

BIOS 磁盘分区


BIOS只需要分2个区swap分区系统分区

分区大小:

swap分区:自定义。

系统分区:剩余大小。

分区类型:

挂载点分区类型
swapLinux swap(交换分区)
/mntLinux(系统分区)

在这里插入图片描述

UEFI 磁盘分区


UEFI需要创建3个分区boot分区(启动分区)swap分区系统分区

分区大小:

boot分区:" 512M-1G "之间。

swap分区:自定义。

系统分区:剩余大小。

分区类型:

挂载点分区类型
/mnt/bootEFI系统分区
swapLinux swap(交换分区)
/mntLinux

在这里插入图片描述

磁盘格式化


分区的设备名可能不一样。

使用fdisk -l命令查看分区设备名。

fdisk -l

在这里插入图片描述

BIOS 磁盘格式化


格式化系统分区

mkfs.ext4 /dev/sda2

格式化swap分区

mkswap /dev/sda1

激活swap分区

swapon /dev/sda1

UEFI 磁盘格式化


格式化boot分区

mkfs.fat -F32 /dev/sda1

格式化系统分区

mkfs.ext4 /dev/sda3

格式化swap分区

mkswap /dev/sda2

激活swap分区

swapon /dev/sda2

挂载


BIOS只需要挂载系统分区

UEFI需要挂载boot分区(启动分区)系统分区

BIOS 挂载


系统分区/dev/sda2挂载到/mnt目录

mount /dev/sda2 /mnt

UEFI 挂载


系统分区/dev/sda3挂载到/mnt目录

mount /dev/sda3 /mnt

创建boot分区挂载点

mkdir /mnt/boot

boot分区/dev/sda1挂载到/mnt/boot目录

mount /dev/sda1 /mnt/boot

修改镜像列表


中国的源放到最前面。

vim /etc/pacman.d/mirrorlist

在这里插入图片描述

安装系统


pacstrap /mnt base linux linux-firmware

等待系统安装完成。

配置系统


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

进入系统


arch-chroot /mnt

界面发生变化说明已经进入系统。

修改时区


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

同步系统时间


hwclock --systohc

本地化设置


进入系统后没有编辑器,下载需要的编辑器。

pacman -S neovim

修改/etc/locale.gen文件,去掉en_US.UTF-8 UTF-8的注释。

nvim /etc/locale.gen

再执行locale-gen

locale-gen

创建/etc/locale.conf文件,并在/etc/locale.conf文件中添加LANG=en_US.UTF-8

nvim /etc/locale.conf

# 添加以下内容
LANG=en_US.UTF-8

网络配置


创建/etc/hostname文件,在文件中添加自己的主机名

nvim /etc/hostname

# 添加自己的主机名
arch-test

添加hosts,在/etc/hosts中添加以下内容:

127.0.0.1     localhost

::1           localhost

127.0.1.1     主机名.localdomain 主机名

给 root 用户添加密码


passwd

连续输入两次密码即可。

输入密码时不会有字符显示。

安装 grub 引导


BIOS 安装 grub 引导程序


BIOS只需要安装grub

安装grub软件包。

pacman -S grub

grub安装。

grub-install --target=i386-pc /dev/sda

生成grub的配置文件。

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

UEFI 安装 grub 引导程序


UEFI需要额外安装efibootmgr

pacman -S grub efibootmgr

grub安装。

grub-install --target=x86_64-efi --efi-directory=/boot

生成grub的配置文件。

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

根据cpu选择安装intel-ucodeamd-ucode

pacman -S intel-ucode

或

pacman -S amd-ucode

双系统需要额外安装os-prober

pacman -S os-prober

安装 dhcpcd 和 iwd


dhcpcd用于新系统动态分配ip地址

iwd用于新系统连接wifi

pacman -S dhcpcd iwd

退出系统


exit

取消挂载


umount -R /mnt

重启电脑


reboot

4. 重启进入系统后的设置


联网设置


启动dhcpcd

systemctl start dhcpcd

systemctl enable dhcpcd

启动iwd

systemctl start iwd

systemctl enable iwd

网络设置好后,可以ping一下看网络是否连通。

ping baidu.com

更新系统


pacman -Syyu

安装软件包


pacman -S base-devel

添加普通用户


useradd -mG wheel <用户名>

给新用户设置密码


passwd <用户名>

修改 /etc/sudoers 文件


nvim /etc/sudoers

/etc/sudoers文件中放开以下代码的注释可以使用sudo命令。

# 放开此行的注释
%wheel ALL=(ALL) ALL

退出root用户


exit

使用新用户登录


arch-user

5. pacman 常用命令


文章地址:pacman 常用命令

6. Arch Linnux 美化 (st + dwm)


文章地址:Arch Linux 美化 (st + dwm)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

详写 UEFI & BIOS 安装 Arch Linux 的相关文章

  • linux-x64 二进制文件无法在 linuxmusl-x64 平台上使用错误

    我正在安装Sharp用于使用 package json 的 Nodejs 项目的 docker 映像上的映像压缩包 当我创建容器时 我收到有关 Sharp 包的以下错误 app node modules sharp lib libvips
  • 如何在 Ubuntu 中创建公共 HTML 文件夹?

    简单的问题 但由于某种原因我无法在谷歌上找到确切的答案 我在 Slicehost 上安装了全新的 Ubuntu 并且想在我的主目录中为包含一堆静态 HTML 文件的简单网站创建一个公共目录 我该怎么做呢 只是打字的问题吗mkdir publ
  • 如何在linux中以编程方式获取dir的大小?

    我想通过 C 程序获取 linux 中特定目录的确切大小 我尝试使用 statfs path struct statfs 但它没有给出确切的大小 我也尝试过 stat 但它返回任何目录的大小为 4096 请建议我如何获取 dir 的确切大小
  • 如何阻止ubuntu在使用apt安装或更新软件包时弹出“Daemons using outdatedlibraries”? [关闭]

    Closed 这个问题是与编程或软件开发无关 help closed questions 目前不接受答案 我最近新安装了 Ubuntu 22 04 LTS 我发现每次使用 apt 安装或更新软件包时 它都会询问我有关Which servic
  • CMake 链接 glfw3 lib 错误

    我正在使用 CLion 并且正在使用 glfw3 库编写一个程序 http www glfw org docs latest http www glfw org docs latest 我安装并正确执行了库中的所有操作 我有 a 和 h 文
  • 使用包管理器时如何管理 Perl 模块?

    A 最近的问题 https stackoverflow com questions 397817 unable to find perl modules in intrepid ibex ubuntu这让我开始思考 在我尝试过的大多数 Li
  • 与 pthread 的进程间互斥

    我想使用一个互斥体 它将用于同步对两个不同进程共享的内存中驻留的某些变量的访问 我怎样才能做到这一点 执行该操作的代码示例将非常感激 以下示例演示了 Pthread 进程间互斥体的创建 使用和销毁 将示例推广到多个进程作为读者的练习 inc
  • 静态方法的 Java 内存模型

    我来自操作系统和 C 语言背景 在代码编译时 世界很简单 需要处理和理解堆栈 堆文本部分等 当我开始学习 Java 时 我确实了解 JVM 和垃圾收集器 我对静态方法感到很有趣 根据我的理解 类的所有实例都会在堆中创建 然后被清理 但是 对
  • 使用 python 脚本更改 shell 中的工作目录

    我想实现一个用户态命令 它将采用其参数之一 路径 并将目录更改为该目录 程序完成后 我希望 shell 位于该目录中 所以我想实施cd命令 但需要外部程序 可以在 python 脚本中完成还是我必须编写 bash 包装器 Example t
  • 如何使用Android获取Linux内核的版本?

    如何在 Android 应用程序中获取 Linux 内核的版本 不是 100 确定 但我认为调用 uname r 需要 root 访问权限 无论如何 有一种不太肮脏的方法可以做到这一点 那就是 System getProperty os v
  • 使用os.execlp时,为什么`python`需要`python`作为argv[0]

    代码是这样的 os execlp python python child py other args this works os execlp python child py other args this doesn t work 我读过
  • 检查已安装的软件包,如果没有找到则安装

    我需要检查已安装的软件包 如果未安装则安装它们 RHEL CentOS Fedora 示例 rpm qa grep glibc static glibc static 2 12 1 80 el6 3 5 i686 如何在 BASH 中进行检
  • 如何让 Node.js 作为后台进程运行并且永不死掉?

    我通过 putty SSH 连接到 linux 服务器 我尝试将其作为后台进程运行 如下所示 node server js 然而 2 5 小时后 终端变得不活动 进程终止 即使终端断开连接 我是否也可以使进程保持活动状态 Edit 1 事实
  • 为什么同一个curl命令在windows和linux下输出不同的东西?

    为什么同样的curl o file https www link com 命令输出不同的东西 例如 如果我运行命令curl o source txt https www youtube com playlist list PLIx6Fwnp
  • 使用自定义堆的类似 malloc 的函数

    如果我希望使用自定义预分配堆构造类似 malloc 的功能 那么 C 中最好的方法是什么 我的具体问题是 我有一个可映射 类似内存 的设备 已将其放入我的地址空间中 但我需要获得一种更灵活的方式来使用该内存来存储将随着时间的推移分配和释放的
  • ansible unarchive 模块如何查找 tar 二进制文件?

    我正在尝试执行一个 ansible 剧本 该剧本的任务是利用unarchive模块 因为我是在 OSX 上执行此操作 所以我需要使用它gnu tar 而不是bsd tar通常与 OSX 一起提供 因为BSD tar 不受官方支持 https
  • 无法显示 Laravel 欢迎页面

    我的服务器位于 DigitalOcean 云上 我正在使用 Ubuntu 和 Apache Web 服务器 我的家用计算机运行的是 Windows 7 我使用 putty 作为终端 遵循所有指示https laracasts com ser
  • 来源和出口有什么区别?

    我正在编写一个 shell 脚本 以读取具有 key value 对的文件并将这些变量设置为环境变量 但我有疑问 如果我这样做source file txt是否会将该文件中定义的变量设置为环境变量 或者我应该逐行读取文件并使用导出命令设置它
  • 使用awk将列中的值替换为txt文件中的另一个值

    我是 Linux 和 awk 脚本编写的新手 我有 tab delim txt 文件 如下所示 AAA 134 145 Sat 150 167 AAA 156 167 Sat 150 167 AAA 175 187 Sat 150 167
  • 如何在shell脚本中给出密码?

    在 shell 脚本文件中 我使用一些命令 例如scp and make install要求我输入密码 我运行一个 shell 脚本来编译一个大项目 一段时间后它会要求我输入密码才能使用scp 我需要等待该过程并在此之后提供密码 我只想通过

随机推荐