小白的proxmox ve(pve)打造AIO(all in boom)折腾日记 (五)openwrt虚拟机建立(包括openwrt系统编译)

2023-05-16

        打造一台pve主机,软路由功能可以说是必不可少的,我这里选择使用openwrt系统。

一、准备系统镜像

        网上的openwrt系统可以说是五花八门,可以选择直接下载官方的固件,也可以去恩山无线论坛中找到适合自己的固件,当然也可以自己编译自己需要的固件。这里提供两个在恩山论坛中找到的连接,其中一个是可以自定义插件的,另一个是版本比较全面的,我都是实际使用过的。

kiddin9/OpenWrt_x86-r2s-r4s-r5s-N1: 一分钟在线定制编译 X86/64, NanoPi R2S R4S R5S R6S, 斐讯 Phicomm N1 K2P, 树莓派 Raspberry Pi, 香橙派 Orange Pi, 红米AX6, 小米AX3600, 小米AX9000, 红米AX6S 小米AX3200, 红米AC2100, 华硕ASUS, 网件NETGEAR 等主流软硬路由 (github.com)

sirpdboy/openwrt: openwrt (github.com)

        当然最好的固件肯定是自己编译的适合自己的固件,但是过程相对比较麻烦。

二、进行系统编译

        现在的系统编译主要分为官方的和lean
大神的,官方的相对来说纯净一些,lean大神的相对来说插件多一些,我都是有尝试编译过的,所以下面一些截图可能出自不同的源代码。进行系统编译也是参考了很多文章:

        首先是官方的一些:

[OpenWrt Wiki] OpenWrt编译 – 说明

零开始学习OpenWrt完美教程_JackieGemini的博客-CSDN博客

【老湿基】OpenWRT 高级编译总览、编译插件|第一弹_哔哩哔哩_bilibili

新手折腾进阶篇-openwrt编译入门(绝对详细版)-OPENWRT专版-恩山无线论坛 - Powered by Discuz! (right.com.cn)

        然后是lean大神的一些:

coolsnowwolf/lede: Lean's LEDE source (github.com)

自己编译OpenWRT初级教程,适合新手小白,20分钟学完,完美GET新技能 - 哔哩哔哩 (bilibili.com)编译属于自己的OpenWrt固件_软件应用_什么值得买 (smzdm.com)

1.必要条件准备

        编译系统是需要在linux环境下进行的,所以往往需要安装ubuntu系统,或者使用wsl或者其他的linux系统。然后最最重要的是一个良好的可以搞“学术”的网络,在准备和编译过程中很多时候失败的原因就是因为没有一个良好的网络环境。这方面具体的我就不说了。

2.软件环境准备

        首先更新软件包列表,代码如下:

sudo apt-get update

        然后安装编译软件环境:

sudo apt-get -y install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch python3 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 curl swig rsync

       可以自己一条条输入,这样有问题可以及时修改,当然这样也会有提示,比如我用的ubuntu22提示如下

         所以我用的命令是:

sudo apt-get -y install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch python3 python2.7 unzip zlib1g-dev lib32gcc-s1 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 curl swig rsync

3.源码下载

        官方源码获取命令为:

git clone https://www.github.com/openwrt/openwrt

        lean源码获取命令为:

git clone https://github.com/coolsnowwolf/lede

4.更新并安装扩展包 

        首先需要进入代码目录,官方是 cd ./openwrt,lean大神的是  cd ./lede

        可以通过修改feeds文件添加一些自己需要的东西。相关命令为:

echo 'src-git helloworld https://github.com/fw876/helloworld' >>feeds.conf.default

        当然最好还是直接下载需要的包,命令为:

cd ./package
git clone https://github.com/fw876/helloworld.git package/lean/luci-app-ssr-plus
cd ../

        然后更新。更新过程可能因为网络问题失败,所以要注意一下。

./scripts/feeds update -a

         安装。一般来说只要上面没有问题,安装不会有问题。

./scripts/feeds install -a

5.进行openwrt配置(重点) 

        接下来就是最重要的地方,根据自己的设备和需求进行openwrt配置。首先输入以下命令。

make menuconfig

        稍等以下会出现下面的界面。

        前三个选项是根据自己的硬件选择,我用的intel的芯片,所以选项为 x86 - x86_64 - Generic x86/64。

 

        target中选择自己需要的镜像文件, 把一些不需要的取消勾选就可以,节约空间。

        这个Kernel partition size和Root filesystem partition size分别是内核分区大小以及文件系统分区大小,前面指这个openwrt内核占据空间大小,后面指整个系统占据大小,一般来说越大越好,后面这个大的话可以多装一些插件,但是具体还是要看自身配置,储存空间不够,这个设置大了也无法安装。

        后面的几条是不用动的。如果是lean大神的代码,在extra packages选项中可以打开ipv6helper,会帮你完成ipv6相关的一些东西安装。官方的没有这个选项,默认也有打开ipv6功能。

         fonts -dejavu中是一些字体,喜欢的可以全部勾选。

         kernel modules - network devices中是一些网卡驱动相关的内容,要根据自己网卡驱动去选择合适的选项。

         kernel modules - usb support是usb驱动相关的选项,根据自己所需进行选择。一般来说这两项大多数都是默认选好的,不需要修改。

         luci是openwrt一个可以说必须要用的功能,就是网页管理端。

        在luci - collections中选择并打开。 

        在modules中据说选择luci-compat会让luci打开不卡顿,具体情况不清楚。 

        在modules中的translations中倒数第二个可以选择简体中文。 然后luci中还可以选择主题。在luci- applications中可以选择需要的插件。可以根据下面这个网站选择自己合适的插件。

OpenWrt 编译 LuCI-> Applications 添加插件应用说明-L大【2022.11.28】-OPENWRT专版-恩山无线论坛 - Powered by Discuz! (right.com.cn)

        在我们学校如果使用有线网需要l2tp,可以在ntwork-vpn中找到。需要进行内网穿透可以使用zerotier,也可以在这个地方打开。

         根据自己的需要完成了设计后,就可以save,exit,进行编译了。

         第一次编译建议用单线程编译。j后面数字指定线程数量。命令为:

make -j1 V=s

        在编译过程中,很有可能会出现错误,要学会看错误原因,有的是缺文件,多半是网络不行导致的,重新编译就可以了。有的是因为冲突了,需要根据提示重新makeconfig,关闭冲突的选项。

         编译完成后可以在bin文件夹下硬件对应文件夹下找到想要的img镜像。

 三、openwrt虚拟机安装及设置

         系统安装方面主要参考下面这两篇:

PVE虚拟机部署OpenWRT+群晖NAS+Windows系统,打造一台全能主机,Proxmox VE系统超详细安装_哔哩哔哩_bilibili

PVE安装Openwrt/LEDE软路由保姆级图文教程 - 十佳测评 (10bests.com)

        获取了openwrt镜像之后就可以进行安装了。首先需要进入pve系统的网页端。选择节点,点击右上角 ——创建虚拟机。

         节点和id都是默认填好的,一般不需要改,如果觉得id数字不好看可以自行修改,输入名称。

         操作系统方面选择 不使用任何介质,之后再添加。

         系统这些默认就可以了。

         磁盘也不需要进行修改,之后会删除。

         核心可以根据自己电脑性能及需求进行填写,因为openwrt作为软路由是pve系统的基础,所以cpu权重故意调高了一点。

         根据自己电脑配置选择内存大小。openwrt对内存要求不高。

         网络就选择半虚拟化就可以的。

         最后进行确认,创建。

         打开新创建的节点,打开硬件,找到硬盘,选择分离,然后选择删除。对于CD/DVD驱动器也进行删除。

         然后添加网口直通。一般来说最起码需要双网口,一个进行连接互联网,一个作为管理口,将连接互联网的网口直通到openwrt中。选择添加,pci设备,找到自己的网卡。

         之后需要上传镜像文件,选择local ——iso镜像,点击上传,然后将自己的openwrt系统镜像上传进入。

         上传完成后,在target file:后会有该镜像位置信息,最好复制一下,之后会用到。

 

        进入ssh界面,输入以下命令并回车。其中102需要改成你自己的id,后面那个路径是刚刚复制的那一段,因为我把local-lvm删掉了,所以我用的是local,一般来说是local-lvm。

qm importdisk 103 /var/lib/vz/template/iso/openwrt-x86-64-generic-squashfs-combined.img local

     

         之后重新进入刚开的虚拟机的界面,选择硬件,然后会发现多了一个硬盘的选项,双击进入将总线/设备改为SATA。

         然后进入选项界面,将引导顺序改为sata0.这个一定要改,不然可能开机后关机都无法正常关闭。

         这样就可以了,点击右上角的启动。可以进入控制台输入以下命令修改ip地址。

vi /etc/config/network

        在lan下面 option ipaddr修改到需要的ip地址。之后保存退出,重启。

        在web输入刚刚设置的ip地址就可以进入luci,就可以更方便的修改你的openwrt了!

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

小白的proxmox ve(pve)打造AIO(all in boom)折腾日记 (五)openwrt虚拟机建立(包括openwrt系统编译) 的相关文章

  • 算法中的一些数学问题

    1 欧几里得算法 xff08 辗转相除法 xff09 该算法用来快速计算两个整数的最大公约数 递归算法 xff1a int gcd int a int b if b 61 61 0 return a return gcd b a b 非递归
  • 安装pillow已完成,但仍报错No module named ‘PIL‘

    python 3 6 2 xff0c 安装pillow已完成 xff0c 但仍报错No module named 39 PIL 39 no module named 39 pillow 39 python3 6 我加班还不行吗 的博客 CS
  • 使用汇编语言与C语言实现LED1/LED2/LED3三盏灯点亮

    汇编语言代码段 text global start start LED1点灯LED1 gt PE10 64 1 对LED1进行初始化 RCC AHB4 ENSETR MODER OTYPER OSPEEDR PUPDR 64 2 实现LED
  • linux移动文件夹

    使用命令mv 要移动的文件夹 目标文件夹 假如我要将root下的文件amelia txt移动到opt下的文件夹software中 xff0c 我可以使用命令mv root amelia txt opt software amelia txt
  • docker安装nextcloud,聪明人已经收藏了!

    1 为什么要使用分布式锁 使用分布式锁的目的 xff0c 无外乎就是保证同一时间只有一个客户端可以对共享资源进行操作 1 1举一个很长的例子 系统 A 是一个电商系统 xff0c 目前是一台机器部署 xff0c 系统中有一个用户下订单的接口
  • CCF CSP 序列查询新解

    CCF CSP 序列查询新解 C语言 题目背景 上一题 序列查询 中说道 xff1a A 61 A0 A1 A2 An 是一个由 n 43 1 个 0 N 范围内整数组成的序列 xff0c 满足 0 61 A0 lt A1 lt A2 lt
  • 打开edge,出现错误代码: STATUS_ACCESS_DENIED,解决方法

    问题描述 xff1a 这个问题 xff0c 一般显示edge页面加载失败 xff0c 且电脑右下角出现弹窗 解决办法 xff1a 此时 xff0c 你可以到C盘 xff0c 把Microsoft下的子文件删掉 xff0c 注意最好用dele
  • JS的表达式

    一 原始表达式 1 表达式是js的代码形式 2 原始表达式包含直接量 关键字和变量名 xff1b lt script gt 直接量 100 xff1b 200 2 xff1b 34 hi 34 关键字 True False 变量名 a 函数
  • JS的DOM操作——style的操作

    对于JS操作文档中的元素 xff0c 改变其的样式特征需要用到一个属性 style 常见操作 xff1a 获取的元素点 xff08 xff09 style xx 需要设置或修改的属性 代码演示 xff1a 例如修改div块的背景颜色 lt
  • 学会iframe并用其解决跨域问题

    了解iframe 官方定义为 xff1a iframe是HTML标签 xff0c 作用是文档中的文档 xff0c 或者浮动的框架 FRAME iframe元素会创建包含另外一个文档的内联框架 xff08 即行内框架 xff09 简单理解为
  • Vue中的样式绑定

    我们将样式绑定分为两种 xff1a 一种是通过style绑定 xff0c 一种是通过class绑定 样式绑定适用于 切换效果的实现 xff0c 小规模用style xff0c 大规模用class style绑定样式 这里需要用到v bind
  • 51 汇编语言编程:8个按键控制8个LED

    89C51汇编语言写8个按键控制8个LED 按键接P2口 xff0c LED接P1口 有6按键 xff0c 按下对应LED长亮 xff0c 重复按下 xff0c LED灭 xff1b 有两个特殊按键 xff0c 按下 xff0c 对应LED
  • 常见的排序算法

    今天来学习一下数据结构课程中非常重要的排序算法 我们学习一下一些常见的排序算法 xff0c 如冒泡排序 选择排序 快速排序等 1 冒泡排序 实现思路 xff1a 对未排序的各元素从头到尾依次比较相邻的两个元素大小关系 如果左边的队员大 则两
  • Vue的仓库vuex

    Vue js是一个渐进式的框架 xff0c 是一个分层的设计模式 一共分为五层 xff0c 核心库为基础 xff0c 在这基础上添加组件系统 客户端路由 大规模状态管理和开发环境 其中大数据状态管理对应的技术就是vuex xff0c 它是由
  • vue3.0的setup函数以及解决其内的数据不是响应式数据的问题

    相比于2 0 xff0c vue3 0在新增了一个setup函数 xff0c 我们在setup中可以写数据也可以写方法 xff0c 就像我们以前最开始学习js一样 xff0c 在js文件中写代码 如 xff1a setup let name
  • setup中使用watch

    watch属性监听器的作用在vue3 0中没有改变 xff0c 还是监听值得变化 在vue3 0中 xff0c 仍然支持watch配置项 但是我们要在setup中使用watch得话 xff0c 我们要导入watch的API xff0c 然后
  • 缓存相关知识点

    缓存的优点 1 减少不必要的数据传输 xff0c 节省带宽 2 减轻服务器负担 xff0c 提升网站性能 3 加快客户端网页加载速度 4 用户体验更好 缺点 如果资源发生更改 xff0c 客户端不及时更新会导致用户获取信息滞后 缓存类型 分
  • hook之useMemo

    useMemo 这个hook的作用有点像我们以前学习的计算属性一样 xff0c 它会缓存我们上次的结果 xff0c 只有当特定的属性改变时才从新计算 并且他能 记住 任何类型的值 标准写法 useMemo 61 gt return 34 我
  • hook之useContext

    useContext这个hook xff0c 我们通过翻译就可以大致知道它的用途 xff0c 译为使用上下文 context上下文我们在前面就已经使用过了 xff0c 它是一种用于跨组件之间的传值的技术 我们学过Context xff0c
  • hook之useRoducer

    useReducer用最简单的话来说 xff0c 就是允许我们在函数组件里面像使用redux一样通过reducer和action来管理我们组件状态的变换 我们可以通过useContext配合实现一个函数组件中的redux useReduce

随机推荐

  • linux安装jenkins 【详细教程】

    1 确保jdk已经安装 xff0c 至少是java8以上 xff0c 如果没有安装 xff0c 可以参考https blog csdn net m0 59347746 article details 125681582 csdn share
  • 【笔记】SQL 2

    1 比较运算符 比较运算符用于比较运算 xff0c 判断逻辑是否成立 A operator B 常用的比较运算符有 61 xff08 等于 xff09 61 xff08 不等于 xff09 lt gt xff08 不等于 xff09 lt
  • Qt Creator 3.0.1 部署远程调试

    QT Creator3 0 1 部署远程调试 远程目标板连接配置 从菜单栏选择options gt devices gt add gt generic linux device gt 开始向导 输入目标板的IP与登录用户信息 完成后会自动测
  • 代码源oj--数据结构初级:105 字符串处理1

    给定一个长度为n的字符串s xff0c 字符串由小写字母a z组成 小明来对这个字符串进行操作 xff0c 他会从头到尾检查这个字符串 xff0c 如果发现有两个相同的字母并排在一起 xff0c 就会把这两个字符都删掉 小明会重复这个操作
  • Python 视频转字符画 - 进阶

    昨晚我在网上看到了别人做的视频转字符动画 xff0c 觉得很厉害 xff0c 我于是也打算玩玩 今天中午花时间实现了这样一个小玩意 顺便把过程记录在这里 1 源视频 xff1a https docs qq com doc DU3pabWFh
  • Python教程 - Tkinter布局

    之前的Tkinter教程中 xff0c 我们创建的控件默认都是从上到下依次排列的 实际上 xff0c 我们可以完全控制每个控件的位置 Tkinter主要提供pack grid place三种布局方法 pack布局 pack布局 xff0c
  • java实现字符串中的字母排序

    String str 61 34 chenughonghuiaikuangwantong1314 34 System out println 34 原字符串 xff1a 34 43 str char chars 61 str toCharA
  • 这个 Python 游戏库,打开就能玩一天

    会 Python 的小伙伴 xff0c 选择用 Python 让 大风车 吱呦呦地转 xff01 还有的小伙伴 xff0c 选择用 Turtle 库绘制童年的卡通人物 我们其实还可以选择用 Python 开发小游戏 xff0c 回忆童年的美
  • k8s集群中部署rancher v2.7高可用集群

    一 xff0c 什么是 Rancher xff1f 官网地址 xff1a 什么是 Rancher xff1f Rancher Manager Rancher 是一个 Kubernetes 管理工具 xff0c 让你能在任何地方和任何提供商上
  • [Ubuntu] 虚拟机忘记登录密码的解决方案

    前言 xff1a 此文章仅作为本人在学习过程中的学习笔记 xff0c 同时也为记录此解决方案亲测有效 特别注明 xff1a 解决方案也是借鉴前人的成就 Ubuntu 虚拟机太久没登录 xff0c 忘记密码了 多次尝试无果后 xff0c 只好
  • shell脚本中常用的基础命令

    Shell xff08 Shell Script xff09 脚本又称Shell命令稿 程序化脚本 xff0c 是一种计算机程序使用的文本文件 xff0c 其内容由一连串的shell命令组成 xff0c 经由Unix Shell直译内容后运
  • 常用DOS命令和Path环境变量的配置

    常用DOS命令和Path环境变量的配置 1 常用DOS命令1 1 打开命令提示符窗口1 2 常用DOS命令 2 Path环境变量的配置2 1 为什么要配置Path环境变量2 2 配置流程2 3 检测Path环境变量配置是否成功 1 常用DO
  • Python 打包工具 Nuitka 入门指南

    Python 打包工具 Nuitka 入门指南 起因 由于最近用Python写了一个跟目标检测相关的小工具 xff0c 如果直接分发代码文件一来是不够优雅 xff0c 二来是对非计算机领域的用户来说不够友好 xff0c 因此我萌生了给小工具
  • 彻底关闭windows Update服务

    第一步 xff1a windows services 服务管理中关闭 Windows Update 服务 第二步 xff1a 关闭任务计划中的WindowsUpdate 第三步 xff1a 修改windows update 可执行程序的注册
  • Linux常用命令——常用网络命令

    一 配置IP地址 1 配置IP地址 IP地址是计算机在互联网中唯一的地址编码 每台计算机如果需要接入网络和其他计算机进行数据通信 xff0c 就必须配置唯一的公网IP地址 配置IP地址有两种方法 xff1a 1 xff09 setup工具
  • 单链表的就地旋转

    小白刚开始跟着陈越老师学习数据结构 xff0c 遇到单链表的就地旋转苦苦思索没有想明白 xff0c 经观看多个博客后有所理解 xff0c 并进行记录 首先 xff0c 存在两个链表 xff08 一开始看主体部分以为只有一个链表 xff0c
  • 小白的proxmox ve(pve)打造AIO(all in boom)折腾日记 (一)硬件篇(硬件选择)

    一直想要一台属于自己的nas xff0c 最近在公司能够攒点闲钱 xff0c 于是就开始了第一次玩软路由 xff0c 第二次玩nas xff08 前些天在电脑装了nas虚拟机 xff09 xff0c 第一次玩pve系统 xff0c 第一次装
  • 小白的proxmox ve(pve)打造AIO(all in boom)折腾日记 (二)装机篇(爱国者m2装机不完全教程)

    作为小白的第一次装机 xff0c 果然还是要记录一下 主板上都有防呆口 xff0c 过程还是比较轻松的 一 cpu安装 大多数主板长得都差不多 xff0c 一般cpu在中间部位 xff0c 左侧是接口 xff0c 右侧是内存条 xff0c
  • 小白的proxmox ve(pve)打造AIO(all in boom)折腾日记 (三)pve系统安装篇(包含换源、磁盘大小调整)

    从配好主机到现在不到两周的时间 xff0c 已经主动和被动boom不知道多少次了 所以记录一下 xff0c 也方便以后参考 这篇主要讲pve系统安装篇 xff08 包含换源 磁盘大小调整 xff09 主要参考这两篇 xff1a 榨干小主机
  • 小白的proxmox ve(pve)打造AIO(all in boom)折腾日记 (五)openwrt虚拟机建立(包括openwrt系统编译)

    打造一台pve主机 xff0c 软路由功能可以说是必不可少的 xff0c 我这里选择使用openwrt系统 一 准备系统镜像 网上的openwrt系统可以说是五花八门 xff0c 可以选择直接下载官方的固件 xff0c 也可以去恩山无线论坛