编译 Lean Openwrt 并新建 PVE 单网口虚拟机

涉及到 WSL 的配置,Lean LEDE(Openwrt) 的编译,PVE 使用 img 格式的镜像新建虚拟机(无需 U 盘)以及 Linux 下的网络配置

环境

  • Ubuntu 18.04 WSL
    • 负责编译工作
  • PVE 6.2-6

参考

步骤

负责编译的机器核心数越多、频率越高越好,不然编译比较慢

WSL 关闭共享 PATH

如果不使用 WSL ,跳过本步直接查看 编译 Openwrt

如果使用 WSL 编译,需要关闭 WSL启动时自动共享的 Windows PATH 变量

  1. 编辑配置文件
    • 打开 /etc/wsl.conf,添加以下内容
      [interop]
      appendWindowsPath = false
      
      [automount]
      enabled = true

      其中,将 appendWindowsPath 设置为 false 即关闭共享 PATH

      automount 域的 enabled 设置为 true 即自动在 WSL 下挂载 Windows 磁盘,方便编译成功后向 Windows 传输镜像

  2. 重启 WSL
    • 在 WIndows 下打开 Powershell,执行
      # 查看已安装的 WSL
      wsl --list
      # 关闭指定 WSL
      wsl --terminate [your WSL distro name]

  3. 查看 PATH 变量
    • WSL 下执行
      $PATH

编译 Openwrt

不要使用 root 用户

编译 Openwrt 是最麻烦且耗时的一步

直接使用编译好的镜像会节省很多时间,但是无法自定义软件包

  1. 安装编译环境
    • 执行指令,安装依赖
      sudo apt update
      sudo apt install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch python3.5 python2.7 unzip zlib1g-dev lib32gcc1 libc6-dev-i386 subversion flex uglifyjs git-core gcc-multilib p7zip p7zip-full msmtp libssl-dev texinfo libglib2.0-dev xmlto qemu-utils upx libelf-dev autoconf automake libtool autopoint device-tree-compiler g++-multilib antlr3 gperf wget swig

      如果需要输出 LiveCD 镜像,还需要安装 mkisofs

  2. 克隆 Lean 源码
    • 执行指令
      git clone https://github.com/coolsnowwolf/lede
  3. 编辑添加其他订阅源
    • Lean 默认情况下关闭了的代理软件的订阅源,需要取消订阅源注释
    • 进入 lede 根目录,编辑 feeds.conf.default
      # 取消注释最后一行
      将
      #src-git helloworld https://github.com/fw876/helloworld
      更改为
      src-git helloworld https://github.com/fw876/helloworld
      去掉‘#’
    • 如果还想同时编译其他代理软件或者界面主题,可以在 feeds.conf.default 中添加以下源
      src-git kenzo https://github.com/kenzok8/openwrt-packages
      # small源为 Passwall 的依赖源
      src-git small https://github.com/kenzok8/small
  4. 更新并安装源
    • 在 lede 根目录下执行指令
      ./scripts/feeds update -a
      ./scripts/feeds install -a
  5. 编辑 make 配置文件
    • 在 lede 根目录下执行指令
      make menuconfig
    • 执行后会在 shell 显示图形界面的菜单(忘记截图),使用 Y 键设置安装选定的包,N 键取消安装,/ 键搜索包位置
    • 注意:尽量少选择附加的包,这样可以减少编译错误的概率例如 Luci 下的 4 款代理软件(Clash、Openclash、SSRP、Passwall)选一即可,Clash 和 Openclash 又有单独的 ipk 安装包,所以可以选择不在编译时添加,事后单独安装因为后续的安装环境为 PVE 虚拟机,没有无线设备,所以可以取消所有无线相关的包Openwrt 默认选择安装了AMD 显卡的驱动包,如果不使用 AMD 显卡也可以取消
  6. 下载 dl 库
    • 执行指令
      make -j8 download V=s

      其中 -j 参数后的数字为执行指令使用的线程数,根据编译机器的 CPU 线程数设定

  7. 编译镜像
    • 执行指令
      make -j1 V=s

      注意:第一次编译时需要将线程数设置为 1,只有这样才能看到具体的编译错误信息

      设置为更高的线程数会提高编译速度,但是无法查看具体的错误信息(make 会提示重新执行 make -j1 V=s 来查看具体信息),也就无法排查哪个包出了问题

    • 编译成功后,镜像被保存在 lede/bin/targets/x86/64/ 下(如果你选择了 X86_64 架构)
    • 在 lede/bin/packages 下还可以找到已经编译完成的你选择安装的 ipk 安装包
  8. 导出镜像到 Windows
    • 如果没有使用 WSL,可以使用 WinSCP 等软件连接到 Linux 编译机下载镜像
    • Windows 磁盘已经被自动挂载在 WSL 下的 /mnt 目录下,直接执行复制指令
      cd lede
      cp bin/targets/[your path here]/openwrt-xxx-xxx-xxx.img /mnt/c/

PVE 安装虚拟机

关于 PVE 安装 img 镜像可以查看 Proxmox VE 单网口安装 Koolshare LEDE x86,这里复述一遍

  1. 上传 img 镜像到 PVE 
  2. 新建虚拟机
    • 在操作系统标签页下选择不使用任何介质其他项目按需设置
    • 删除配置的硬盘
  3. 挂载 img 镜像
    • 进入 Web Shell,执行指令
      qm importdisk [虚拟机 ID] [img 镜像路径] [虚拟机磁盘的存储位置]

    • 添加磁盘并调整大小
  4. 成功启动 Openwrt 虚拟机

配置虚拟机网络

Openwrt 启动后网络接口默认的连接方式为静态 IP,无法访问 Web 界面

需要将其更改为 DHCP,由路由器自动分配 IP 地址

  1. 编辑配置文件
    • 编辑 /etc/config/network 文件,删除最后三行内容
    • 将 proto 字段的值 ‘static’ 更改为 ‘dhcp’
  2. 重启网络
    • 执行指令
      /etc/init.d/network restart

  3. 查看 IP 地址
    • 执行指令
      ifconfig

效果

通过 IP 地址访问 Openwrt

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据