我决定使用,纯血 Arch Linux ! 但是我遇到了,很尴尬的问题,就是我安装好的 Arch Linux 根本没有网络,但是安装的时候,却有(通过iwctl连接)网络,安装好却怎么样都连不上。
前言
对于 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
来卸载.
NetworkManager
:对于桌面用户来说,NetworkManager
是更常用和推荐的网络管理工具,它提供了更便捷的命令行工具(nmcli)和各种桌面环境的图形前端。它通常会自动处理 Wi-Fi 和有线连接,并且包含了 DHCP 客户端功能。-
systemd-networkd
:systemd
自带的网络配置工具,对于需要更精细控制或使用systemd
生态系统的用户来说是一个强大的选择。 -
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
chroot /mnt
:将根目录切换到/mnt
。-
/bin/bash
:指定在新的 chroot 环境中要启动的 shell 程序。通常是 Bash,如果你习惯用 Zsh,也可以用 /bin/zsh,但前提是新系统里已经安装了 Zsh。
最后: 卸载分区
umount -R /mnt
如果遇到 “target is busy” 的错误,这证明有进程还在使用这些挂载点。你可以尝试等待片刻或使用 lsof | grep /mnt
来查找占用进程并杀死它们,或者直接重启。
发表回复