在只有一部手机和一台 OpenWrt 路由器的情况下拯救没有系统的电脑

前言

前阵时间鼓捣电脑把系统鼓捣没了,手头又没有 U 盘和 root 过的手机,于是采用 PXE 方式拯救了一番,并记录下这个过程。(本文中图片大部分不是在实际设备上截取,实际设备中可能有所不同)

前提条件

  • 一台支持网络启动的 Legacy BIOS 的电脑。
  • 一个 OpenWrt 路由器
  • 一个有 ssh 客户端的上网终端(此处示例:一台 Android 手机)
  • ipxe.pxe(必须)
  • SimpleHttpServer.apk(Android 应用,非必须)
  • 操作系统 ISO(WePE64_v2.2.iso,非必须)
  • 另一个路由器/手机网线扩展坞(如果你的 OpenWrt 固件在重置后不会自动开启 Wi-Fi,请准备)
  • 良好的网络环境
  • 灵巧的双手
  • 聪明的大脑

准备

如果手机没有流量的话请自行先下载以上文件。

重置 OpenWrt

首先进入路由器的管理后台:

进入“备份/刷写固件”并生成一个备份:

重置:

此时你的路由器会重启,请耐心等待重启完成。

开启 Wi-Fi

把手机/另一个路由器通过网线连接到路由器的 LAN 口,手动进入 LuCI 开启 Wi-Fi 并连接。

配置 PXE

一般 OpenWrt 固件都不会有 sftp,所以如果需要从手机传输文件到路由器上,需要使用 http 方式。

启动 SimpleHttpServer:

为了方便,最好把 Document Root 设置成手机根目录:

使用 ssh 连接路由器,就可以开始了。

上传文件

在浏览器里手动访问 SimpleHttpServer 的监听地址,寻找到目标文件(ipxe.pxe)之后复制链接。

然后在 ssh 终端中输入:

mkdir /tmp/pxe && cd /tmp/pxe
wget http://192.168.1.5:12345/Download/ipxe.pxe
# 也就是 wget <粘贴那个链接>

此时就把 iPXE 下载好了。

配置 PXE 启动到 iPXE

打开 OpenWrt LuCI 管理界面,找到 dnsmasq(DHCP&DNS)的配置界面:

此处你应该和图中输入的一样。

然后保存并应用,PXE 就配置好了。

启动电脑

在电脑的 BIOS 设置中启用网络启动并设置优先启动项。

启动电脑,在你看到“Press Ctrl-B”的时候按下 Ctrl-B。

这时候你的电脑屏幕应该类似于:

(只要红线之下的部分相似就已经成功)

然后像这样输入:

dhcp
sanboot <到 iso 文件的网址,不一定要在手机上>

按下回车,你会欣喜地发现进入了系统。

其他 OS

理论上,所有把 BIOS 启动代码写进 iso 文件中的 OS 都是可行的,但是经测试发现 Arch Linux不可以通过这个方式启动——建议自己测试。

后记

记得恢复路由器配置哦!

写这篇文章的目的是记录下自己像个没头苍蝇一样拯救自己电脑的过程,并整理成一个系统的、可行的方法。当然如果帮到你了不妨收藏本站 ;)