在经历了五次不成功的 Arch Linux 安装之后,我已经正确安装了两次。第一次,网络运行良好,我什至通过 SSH 安装 Arch Linux。
从已安装的系统而不是 Live CD 启动后,它无法连接到网络,当我尝试 ping 任何内容(甚至是我的路由器)时,我会收到以下消息:
连接:网络无法访问
我尝试再次安装 Arch,因为互联网上似乎没有任何内容可以解决我的问题。安装后,我遇到了同样的问题。
似乎无法启动 eth0,因为它超时了。
答案1
我面临的问题是没有eth0
(据我所知)。运行命令ip link
,这应该输出您的接口。我没有这个eth0
界面。相反,我有enp1s8
。
cd /etc/netctl
因为我使用的是 static,所以我使用then复制了示例配置文件cp examples/ethernet-static my-network
。之后,我my-network
使用进行编辑nano my-network
,并将接口从 更改为eth0
(en1s8
或您的适配器所在的任何内容ip link
)。最后,我让它在启动时使用该配置文件netctl enable my-network
。
启用该配置文件将确保它在启动时启动,但无需重新启动系统,只需运行即可netctl start my-network
立即初始化它。
我能够在 Arch Linux 官方论坛上获得帮助,您可以查看我的主题那里。
答案2
Archlinux 说,如果您的安装程序无法自动连接,请尝试 dhcpcd。这在安装后当场对我有用。只需输入“dhcpcd”作为命令,等待几秒钟,然后“ip route”或“ping 8.8.8.8”即可检查它是否有效。我什至使用“watch ip address”来查看这些 inet 和 inet6 地址弹出的速度有多快。
我还可以使用以下命令从零开始连接,而不是使用 dhcpcd:
modprobe e1000e
ip link set dev eth0 up
ip address add 192.168.0.16/24 dev eth0
ip route add 192.168.0.0/24 dev eth0
ip route add default via 192.168.0.1
modinfo 表示,e1000e 是一个“网络驱动程序”。通过加载这个模块,我得到了一个 eth0 链接(不,不要在 /dev 中查找它)。 “ip”命令激活链接,选择一个地址并定义一个本地(子网),然后定义一个默认网关。我花了相当长的时间来测试这一点(ip 链接帮助、ip 地址帮助、ip 路由帮助...)。
所以这是有启发性的,但是“dhcpcd”输入速度更快,而且可能更健壮。您可以使用“dhcpcd -x”干净地停止它。
通过工作 ping 和 /etc/pacman.d/ 中的镜像列表,您就拥有了 pacman 或 pacstrap 所需的一切。
是的,我看到一条内核消息将 eth0 重命名为 enoxxx,因此您必须首先使用“ip link”检查 systemd 已设置哪些接口。它发生在这里:
[ 3.052354] e1000e 0000:00:1f.6 eth0: (PCI Express:2.5GT/s:Width x1) 94:c6:91:a5:39:b8
[ 3.052360] e1000e 0000:00:1f.6 eth0: Intel(R) PRO/1000 Network Connection
[ 3.052445] e1000e 0000:00:1f.6 eth0: MAC: 13, PHY: 12, PBA No: FFFFFF-0FF
[ 3.055917] e1000e 0000:00:1f.6 eno1: renamed from eth0
我的地址中的 .16 只是任何(免费)号码,192.168.0.1 应该始终是网关。也许我很幸运,但好消息是你可以在 systemd 和 inet6 下进行修改。不过我会尝试 netctl。
现在我已经使用 systemd 启动并启动了 dhcpcd。我在“eno1”上得到了地址 0.15 和三个 inet6 地址,但除此之外,结果与上面的“ip”-hack 完全相同。
3: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 94:c6:91:a5:39:b8 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.15/24 brd 192.168.0.255 scope global noprefixroute eno1
valid_lft forever preferred_lft forever
inet6 2a05:41c0:12:bf00::2/128 scope global dynamic noprefixroute
valid_lft 2559430sec preferred_lft 572230sec
inet6 2a05:41c0:12:bf00:f51e:97c1:de6f:6f49/64 scope global dynamic mngtmpaddr noprefixroute
valid_lft 2591994sec preferred_lft 604794sec
inet6 fe80::47cf:a2e4:af0b:b7cd/64 scope link
valid_lft forever preferred_lft forever
default via 192.168.0.1 dev eno1 proto dhcp src 192.168.0.15 metric 203
192.168.0.0/24 dev eno1 proto dhcp scope link src 192.168.0.15 metric 203
答案3
网络不可达意味着您没有通往该网络的路由。如果您甚至无法 ping 通本地路由器,则要么您没有 IP 地址,要么您的网络接口已关闭。
netctl
是 Arch 中管理网络接口的标准实用程序。如果你还没有设置它(或其他东西),你将没有任何网络。连 DHCP 都没有。
答案4
ArchLinux 的 wiki 中详细记录了 ArchLinux 的网络设置:https://wiki.archlinux.org/index.php/Netctl
对最高票数答案的一个重要澄清是——无需重新启动。如果仅存在网络接口,并且 /etc/netcl 中的配置文件中使用了正确的接口名称和配置(让示例副本命名为 mynet1),则
netctl start mynet1
将启动网络配置文件 mynet1 并且网络路由将起作用。
然而
netclt enable mynet1
将使系统服务能够在每次启动时由 systemd 服务管理器启动,即它将在 /etc/systemd/system/netc@[mynetprofilename].service 中创建一个包含单元详细信息(设备绑定和依赖项)的单元文件。
另请注意,如果网络配置文件被修改,则必须重新启用 netctl。