ArchLinux安装完毕后,没办法使用网络。(安装时正常使用网络)

我决定使用,纯血 Arch Linux ! 但是我遇到了,很尴尬的问题,就是我安装好的 Arch Linux 根本没有网络,但是安装的时候,却有(通过iwctl连接)网络,安装好却怎么样都连不上。

GnomeNetworkmanager

前言

对于 Arch 的安装,如果你插线了,那直接开箱就能安装。如果使用的是 Wi-Fi 网络,就需要通过 iwctl 命令来连接网络。

下面展示一些基础的 iwctl 命令:

iwctl # 进入 iwctl 交互式命令行
device list # 列出无线网卡设备名,比如无线网卡看到叫 wlan0
station wlan0 scan # 扫描网络
station wlan0 get-networks # 列出所有 wifi 网络
station wlan0 connect wifi-name # 进行连接,注意这里无法输入中文。回车后输入密码即可(可以Tab补全)
exit # 连接成功后退出 iwctl
ping dontalk.org # 测试是否有返回 - 判断网络是否有连接

解决方法

当 Arch Linux 安装完毕后,无论是手动安装,还是 Archinstall 安装索引,都记得千万不要马上选择重启到系统。

Arch Linux 安装完成后,如果你需要从 Live 环境(比如安装 U 盘)或者从另一个已安装的 Linux 系统中 chroot 进入你新安装的 Arch Linux 系统来安装软件、修复系统或进行配置,这是一个非常常见的操作。

否则再 chroot 进系统会很麻烦,你需要挂载各个分区 – 详见文章末尾。

Arch 提供了一个一键挂载的工具:arch-chroot,只需要 arch-chroot /mnt 即可。

在安装完毕后,你仍旧处于 chroot 的情况下。(或者 Archinstall 安装完毕后选择 Chroot 到新系统,而不是重启)

我们需要安装两个东西:1.dhcpcd,2.iwd

dhcpcd 是为了 DHCP 分配 IP。

iwd 是为了可以使用 iwctl 命令连接 Wi-Fi

在 连接网络 后的 安装完毕/救援Live 时候 Chroot 到新系统,使用下面命令安装:

ping dontalk.org # 测试是否有返回 - 判断网络是否有连接
pacman -S dhcpcd
pacman -S iwd

安装完毕后,通过下面命令设置为开机自启动即可:

systemctl enable dhcpcd
systemctl enable iwd

之后再重启进系统,通过 iwctl 即可完成联网。

iwctl 基本命令看文章上面。下面有更多的选择:

但是上面的选择并非唯一,如果你想卸载上面,试试下面,可以把 pacman 参数 -S 换为 -Rns 来卸载.

  1. NetworkManager:对于桌面用户来说,NetworkManager 是更常用和推荐的网络管理工具,它提供了更便捷的命令行工具(nmcli)和各种桌面环境的图形前端。它通常会自动处理 Wi-Fi 和有线连接,并且包含了 DHCP 客户端功能。

  2. systemd-networkdsystemd 自带的网络配置工具,对于需要更精细控制或使用 systemd 生态系统的用户来说是一个强大的选择。

  3. netctl:Arch Linux 官方维护的另一个网络配置文件管理器,可以与 wpa_supplicant 配合使用。


手动挂载入 Chroot

Arch 官方推荐的 arch-chroot 工具会自动处理 /dev、/proc、/sys 的绑定挂载以及 resolv.conf 的复制,大大简化了过程。如果不是为了学习或特定需求,使用 arch-chroot 会更方便和不容易出错。

就好比 手动安装 Arch Linux,有不少人拒绝使用 Archinstall 安装索引,当然可能也会有人拒绝使用 Arch-chroot 自动挂载命令。

所以,这里说说如何 手动挂载入 Chroot。(使用Arch手动安装证明你有一定Linux能力,下面内容不可照搬,只可参考)

步骤 1: 读分区

lsblk

步骤 2: 挂载根分区

假设你的根分区是 /dev/sda1:

mount /dev/sda1 /mnt

步骤 3: 挂载其他必要分区 (如果存在独立分区)

如果你的 /boot 是一个单独的分区(例如 /dev/sda2):

mkdir /mnt/boot
mount /dev/sda2 /mnt/boot

如果你的 /home 是一个单独的分区(例如 /dev/sda3):

mkdir /mnt/home
mount /dev/sda3 /mnt/home

如果你使用了 EFI 系统分区 (ESP)(例如 /dev/sda0,通常挂载到 /boot/efi):

mkdir /mnt/boot/efi
mount /dev/sda0 /mnt/boot/efi

步骤 4: 挂载虚拟文件系统

在 chroot 之前,你需要将当前运行环境的一些虚拟文件系统(如 /proc、/sys、/dev)挂载到新根目录 (/mnt) 下的对应位置,这是 chroot 环境正常运行所必需的。

mount --bind /dev /mnt/dev          # 设备文件系统
mount --bind /proc /mnt/proc        # 进程信息文件系统
mount --bind /sys /mnt/sys          # 系统信息文件系统

–bind 选项创建了一个绑定挂载(或称作“循环挂载”),它实际上是将一个目录树挂载到另一个目录树上。这里是将宿主系统的 /dev、/proc、/sys 目录“镜像”到 /mnt/dev、/mnt/proc、/mnt/sys 上。

步骤 5: 复制 resolv.conf 以启用网络

resolv.conf 文件包含了 DNS 服务器的地址,没有它,你的 chroot 环境就无法解析域名

cp /etc/resolv.conf /mnt/etc/resolv.conf

步骤 6: 执行 chroot 命令

chroot /mnt /bin/bash
  1. chroot /mnt:将根目录切换到 /mnt

  2. /bin/bash:指定在新的 chroot 环境中要启动的 shell 程序。通常是 Bash,如果你习惯用 Zsh,也可以用 /bin/zsh,但前提是新系统里已经安装了 Zsh。

最后: 卸载分区

umount -R /mnt

如果遇到 “target is busy” 的错误,这证明有进程还在使用这些挂载点。你可以尝试等待片刻或使用 lsof | grep /mnt 来查找占用进程并杀死它们,或者直接重启。


发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注