找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 17383|回复: 32

[openwrt(x86)] (2021/7/25更新打包磁盘镜像为lxc容器模板)记录下pve下lxc容器安装openwrt

  [复制链接]
发表于 2020-11-14 10:04 | 显示全部楼层 |阅读模式
迅雷TV
本帖最后由 olvolv 于 2021-12-7 20:41 编辑

对了,docker 也可以用本制作出来的rootfs,反正我用n1验证过,x86应该也没问题,命令好像是:
docker import xx.rootfs.gz
有没有坑我就不知道了
   以下更新于2021/7/26

  好吧我又更新一回,因为我突然意识到不管是rootfs的squashfs镜像固件还是可以引导的完全的squashfs磁盘镜像固件,

  都可以通过mount -o loop把openwrt的根目录挂载到一个目录中,这样我们不需要其它软件就可以打包为lxc模板

  (我说的这些都是基于squashfs文件系统的镜像固件,我记得还有其它的文件系统固件,理论上应该都可以挂载)

所以想要从各位大神发布的openwrt x86固件制作成 lxc容器 罗列如下:
1,无论xxx.squashfs-rootfs.img.gz还是xxx.squashfs-combined.img.gz都先解压:gzip -d  xxx.***.img.gz
2,开始mount 这根据是否是rootfs分为两种情况:
       xxx.squashfs-rootfs.img.gz格式:   直接    mount -o loop xxx.squashfs-rootfs.img openwrt

       xxx.squashfs-combined.img.gz格式:先    fdisk -l  xxx.squashfs-combined.img.gz
                 fdisk -l 显示的是镜像内的分区 大的分区是openwrt的根目录,所以我们mount 的时候要从
                 这个分区的开始地址挂载,例如这个固件 20210717-Ipv6-Mini-x86-64-generic-squashfs-combined.img.gz
                 fdisk 20210717-Ipv6-Mini-x86-64-generic-squashfs-combined.img  -l
                        Disk 20210717-Ipv6-Mini-x86-64-generic-squashfs-combined.img: 1.6 GiB, 1657274880 bytes, 3236865 sectors
                        Units: sectors of 1 * 512 = 512 bytes
                        Sector size (logical/physical): 512 bytes / 512 bytes
                        I/O size (minimum/optimal): 512 bytes / 512 bytes
                        Disklabel type: dos
                        Disk identifier: 0x4532fdad

                        Device                                                   Boot  Start     End Sectors  Size Id Type
                        20210717-Ipv6-Mini-x86-64-generic-squashfs-combined.img1 *       512  131583  131072   64M 83 Linu                    
                        20210717-Ipv6-Mini-x86-64-generic-squashfs-combined.img2      132096 3236863 3104768  1.5G 83 Linu                 第二分区(root目录)开始于132096扇区(sectors)每个扇区512字节,所以此分区开始于echo $((132096*512)) :67633152
                 mount命令为:mount -o loop,offset=67633152   20210717-Ipv6-Mini-x86-64-generic-squashfs-combined.img openwrt
3,经过以上两个步骤,我们就得到了openwrt的根目录,只要打包:cd openwrt && tar zcf /var/lib/vz/template/cache/openwrt.tar.gz *  (别忘了最后的星号)
4,创建lxc容器吧。。。。
本来排版就差的帖子被我改成这样。。。
以下更新与于2021/7/25

最近想更新一下op,看中了【2021-7-17更新】OpenWrt ipv6/docker/大全版/精简版/旁路由版 丰富插件免费使用这个固件,
可惜只有 20210717-Ipv6-Mini-x86-64-generic-squashfs-combined.img.gz这样的镜像文件,百度一下liunx 挂载img
找到一篇文章,根据上边挂载系统目录后,最后制作lxc模板成功,记录一下:
注意:以下操作都是在pve主机里执行的,因为lxc容器里我mount无法成功
(哎丢三落四的,这一句是后补的)首先要 gzip -d 20210717-Ipv6-Mini-x86-64-generic-squashfs-combined.img.gz 解压再接着执行如下步骤:
  1. root@pve:/home/olv/share/www/wwwroot/share/tmp# fdisk 20210717-Ipv6-Mini-x86-64-generic-squashfs-combined.img  -l
  2. Disk 20210717-Ipv6-Mini-x86-64-generic-squashfs-combined.img: 1.6 GiB, 1657274880 bytes, 3236865 sectors
  3. Units: sectors of 1 * 512 = 512 bytes
  4. Sector size (logical/physical): 512 bytes / 512 bytes
  5. I/O size (minimum/optimal): 512 bytes / 512 bytes
  6. Disklabel type: dos
  7. Disk identifier: 0x4532fdad

  8. Device                                                   Boot  Start     End Sectors  Size Id Type
  9. 20210717-Ipv6-Mini-x86-64-generic-squashfs-combined.img1 *       512  131583  131072   64M 83 Linu                    
  10. 20210717-Ipv6-Mini-x86-64-generic-squashfs-combined.img2      132096 3236863 3104768  1.5G 83 Linu            ###挂载这个大的试试   
  11. root@pve:/home/olv/share/www/wwwroot/share/tmp# echo $((132096*512))
  12. 67633152
  13. root@pve:/home/olv/share/www/wwwroot/share/tmp# mount 20210717-Ipv6-Mini-x86-64-generic-squashfs-combined.img op -o loop,offset=67633152
复制代码
         
  1. root@pve:/home/olv/share/www/wwwroot/share/tmp/op# cd ..
  2. root@pve:/home/olv/share/www/wwwroot/share/tmp# cd op
  3. root@pve:/home/olv/share/www/wwwroot/share/tmp/op# ls
  4. bin  dev  etc  lib  lib64  mnt  overlay  proc  rom  root  sbin  sys  tmp  usr  var  www
  5. root@pve:/home/olv/share/www/wwwroot/share/tmp/op# tar zcf /var/lib/vz/template/cache/sirpdboy.openwrt.rootfs.tar.gz *
复制代码


            6, 把sirpdboy.openwrt.rootfs.tar.gz放到pve模板目录 /var/lib/vz/template/cache 刷新下pve管理网页,应该就能看到这个模板了。
            7, 网页上新建容器无法成功, 在pve控制台新建容器:
  1. pct create 201 local:vztmpl/sirpdboy.openwrt.rootfs.tar.gz --rootfs local-lvm:0.5 --ostype unmanaged --hostname OpenWrt --arch amd64 --cores 2 --memory 256 --swap 0 -net0 bridge=vmbr0,name=eth0
复制代码

排版太差,请谅解,以前帖子内容有几个错误,已更正




这是更新前:



纯粹记录下省的下次忘了。    安装方法是用的:   [固件发布] PVE使用的LXC容器镜像openwrt-19.07.1-x86-64  ,但是没有用这里的openwrt。
    用的openwrt来自: [2020-11-4]Openwrt 在线IPK随心安装 专治强迫症 超全!
    我是在pve下lxc容器安装的debian里边操作的,直接在pve下应该一样,但是为了保持pve干净还是安装个容器用吧

    具体:

            1,新建目录:mkdir openwrt 进入cd openwrt 下载图片中选中的镜像:wget https://openwrt.download/R20.11. ... ashfs-rootfs.img.gz
            2,解压 gzip -d openwrt-x86-64-generic-squashfs-rootfs.img.gz
            3,下载 unsquashfs:  sudo apt install squashfs-tools
            4,   解包 unsquashfs openwrt-x86-64-generic-squashfs-rootfs.img  会解压到squashfs-root目录进入 cd squashfs-root
            5,   打包rootfs  : tar zcf ../openwrt.rootfs.tar.gz *   这样在openwrt目录就会得到openwrt.rootfs.tar.gz 就是所谓的lxc模板了(这样的打包参数我测试可以用,有啥不妥的请指教)。
            6, 放到pve模板目录sudo cp   openwrt.rootfs.tar.gz  /var/lib/vz/template/cache 刷新下pve管理网页,应该就能看到这个模板了。
            7, 网页上新建容器无法成功, 在pve控制台新建容器:
  1. pct create 201 local:vztmpl/openwrt.rootfs.tar.gz --rootfs local-lvm:0.5 --ostype unmanaged --hostname OpenWrt --arch amd64 --cores 2 --memory 256 --swap 0 -net0 bridge=vmbr0,name=eth0
复制代码
           8,“其它说明:关于UDP转发不可用的问题,需要PVE系统加载tproxy模块。在PVE系统下执行改命令后重启” :echo 'xt_TPROXY' > /etc/modules-load.d/tproxy.conf


     只要大神发布有rootfs镜像文件,我们就可以用1-6步骤制作自己的模板,当然如果是发布的*.rootfs.tar.gz我们就可以省下1-6的步骤了。
     我就安装了科学软件作为旁路由来用,其它的没测试,所以有啥bug没有也不清楚。
   再次声明:纯粹记录,有啥不妥的地方请大神指教。




屏幕截图(1).png

评分

参与人数 2恩山币 +3 收起 理由
micromaster + 2 感谢分享
Archeb + 1 强大的恩山!(以下重复1万次)

查看全部评分

我的恩山、我的无线 The best wifi forum is right here.
发表于 2022-7-7 14:02 | 显示全部楼层
本帖最后由 roderickbao 于 2022-7-7 14:06 编辑
olvolv 发表于 2021-8-14 21:43
pve7安装lxc版openwrt可以参考这篇文章:https://blog.csdn.net/kangzeru/article/details/115373587   
...

手动执行  lxc-device add -n 202  /dev/ppp出现报错
lxc-device: 202: ../src/lxc/lxccontainer.c: do_add_remove_node: 4621 Value too large for defined data type - Failed to create device node at "/dev/ppp"
lxc-device: 202: ../src/lxc/lxccontainer.c: do_add_remove_node: 4571 Failed to create device node
lxc-device: 202: ../src/lxc/tools/lxc_device.c: main: 151 Failed to add /dev/ppp to 202
我的恩山、我的无线 The best wifi forum is right here.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-14 21:43 | 显示全部楼层
pve7安装lxc版openwrt可以参考这篇文章:https://blog.csdn.net/kangzeru/article/details/115373587   
其中钩子脚本中这两条语句:
system("lxc-device add -n $vmid /dev/ppp");
system("lxc-device add -n $vmid /dev/net/tun");
是把主机的设备添加到容器里,例如/dev/ppp是pppoe拨号设备,这样就不用在容器里手动添加这个设备节点了,
容器启动后手动在pve主机shell里执行:lxc-device add -n $vmid /dev/ppp  是同样的效果,$vmid变量是容器的名字(如:100)。

点评

手动执行 lxc-device add 202 $vmid /dev/ppp出现报错 lxc-device: 202: ../src/lxc/lxccontainer.c: do_add_remove_node: 4621 Value too large for defined data type - Failed to create device node at "/dev/  详情 回复 发表于 2022-7-7 14:02
我的恩山、我的无线 The best wifi forum is right here.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-11 16:57 | 显示全部楼层
lhb035 发表于 2021-9-11 22:27
我pve7  lxc里的openwrt 21.02 拨号成功了  openwrt也能上网更新软件,但是lan口下面接的设备却不能上网 客 ...

iptables -S -tnat 看看防火墙启动成功没,不知道为什么lxc的op  fw3 reload容易失败,如果用的是那些固件带有pass功能的会在防火墙里配置一个include脚本这样的没问题,如果是官方包一类的需要自己include一个脚本,脚本里简单写上iptables -S ;iptables -S -tnat; ip6tables -S 就可以
我的恩山、我的无线 The best wifi forum is right here.
回复 支持 反对

使用道具 举报

发表于 2020-11-14 10:36 | 显示全部楼层
感谢分享,收藏了
我的恩山、我的无线 The best wifi forum is right here.
回复 支持 反对

使用道具 举报

发表于 2020-11-15 20:08 | 显示全部楼层
看我教程

点评

我就打倒美帝用用,暂时没啥需求就不跟你这样折腾了,人越老越懒的折腾  详情 回复 发表于 2020-11-16 13:11
我的恩山、我的无线 The best wifi forum is right here.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-16 13:11 | 显示全部楼层

我就打倒美帝用用,暂时没啥需求就不跟你这样折腾了,人越老越懒的折腾
我的恩山、我的无线 The best wifi forum is right here.
回复 支持 反对

使用道具 举报

发表于 2020-12-23 09:19 | 显示全部楼层
你是做旁路由还是主路由?
碰到一个奇怪的问题,lxc下面的openwrt做主路由拨号不成功,做为虚拟机的openwrt就可以拨号。

点评

容器如果不是工作在特权模式,是不能使用宿主机的内核来拨号的,这是容器的限制;而安装成虚拟机之后就没有这个限制了。  详情 回复 发表于 2020-12-26 14:23
我的恩山、我的无线 The best wifi forum is right here.
回复 支持 反对

使用道具 举报

发表于 2020-12-26 14:22 | 显示全部楼层
感谢大神,真的帮到我了。我用你的方法把 koolshare 也做成了 lxc ,好方便。
我的恩山、我的无线 The best wifi forum is right here.
回复 支持 反对

使用道具 举报

发表于 2020-12-26 14:23 | 显示全部楼层
xin_h 发表于 2020-12-23 09:19
你是做旁路由还是主路由?
碰到一个奇怪的问题,lxc下面的openwrt做主路由拨号不成功,做为虚拟机的openwr ...

容器如果不是工作在特权模式,是不能使用宿主机的内核来拨号的,这是容器的限制;而安装成虚拟机之后就没有这个限制了。
我的恩山、我的无线 The best wifi forum is right here.
回复 支持 反对

使用道具 举报

发表于 2021-1-17 06:55 | 显示全部楼层
感谢分享,节约空间,效率高
我的恩山、我的无线 The best wifi forum is right here.
回复 支持 反对

使用道具 举报

发表于 2021-1-17 21:01 | 显示全部楼层
更高效的部署方式,mk一下
我的恩山、我的无线 The best wifi forum is right here.
回复 支持 反对

使用道具 举报

发表于 2021-2-4 13:20 | 显示全部楼层
谢谢分享!!!!!!
我的恩山、我的无线 The best wifi forum is right here.
回复 支持 反对

使用道具 举报

发表于 2021-7-17 14:09 | 显示全部楼层
请问一下如果我要把容器内的openwrt当主路由来使用,应该多做哪些设置呢?希望楼主能出一个作为主路由的教程,给小白科普一下哈.

点评

嗯,今天把光猫桥接了,然后突发奇想用lxc中op拨号试试,懒得折腾内核,然后看到帖子说可以apt更新5.11内核图新鲜就更新了。接着下载pppoe的软件,然后一通设置,然后就能在op里拨号了,因为op一直当旁路用的,拨号  详情 回复 发表于 2021-7-30 22:43
我也是小白,没有当过主路由,不知道咋弄,建议你多用搜索功能  详情 回复 发表于 2021-7-20 13:57
我的恩山、我的无线 The best wifi forum is right here.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-20 13:57 | 显示全部楼层
zengzelin 发表于 2021-7-17 14:09
请问一下如果我要把容器内的openwrt当主路由来使用,应该多做哪些设置呢?希望楼主能出一个作为主路由的教程, ...

我也是小白,没有当过主路由,不知道咋弄,建议你多用搜索功能
我的恩山、我的无线 The best wifi forum is right here.
回复 支持 反对

使用道具 举报

发表于 2021-7-27 08:46 | 显示全部楼层
在pve 7.0下无法在LXC容器内运行OpenWrt

点评

这是默认是cgroup v2导致,在/etc/default/grub中 GRUB_CMDLINE_LINUX_DEFAULT 最后面加上 systemd.unified_cgroup_hierarchy=0 使其兼容cgroup v1 但是,实测pve 7.0下跑不满实际带宽,CPU很容易飙升。 另外pve 8  详情 回复 发表于 2021-7-30 15:55
我记得我在一个pve群里看见过一个大神说是某段perl代码有bug导致的,我没升7所以也没在意觉得官方应该会修复,还没修复吗?  详情 回复 发表于 2021-7-27 23:42
我的恩山、我的无线 The best wifi forum is right here.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-27 23:42 | 显示全部楼层
陌上花开醉丷 发表于 2021-7-27 08:46
在pve 7.0下无法在LXC容器内运行OpenWrt

我记得我在一个pve群里看见过一个大神说是某段perl代码有bug导致的,我没升7所以也没在意觉得官方应该会修复,还没修复吗?
我的恩山、我的无线 The best wifi forum is right here.
回复 支持 反对

使用道具 举报

发表于 2021-7-30 15:55 | 显示全部楼层
陌上花开醉丷 发表于 2021-7-27 08:46
在pve 7.0下无法在LXC容器内运行OpenWrt

这是默认是cgroup v2导致,在/etc/default/grub中 GRUB_CMDLINE_LINUX_DEFAULT 最后面加上 systemd.unified_cgroup_hierarchy=0 使其兼容cgroup v1
但是,实测pve 7.0下跑不满实际带宽,CPU很容易飙升。
另外pve 8.0官方说可能会取消这种兼容,有能力的研究研究cgroup v2吧

点评

PVE7 UEFI安装用systemd-boot启动 需要再/etc/kernel/cmdline 后面加上systemd.unified_cgroup_hierarchy=0 然后执行 proxmox-boot-tool refresh 重启  详情 回复 发表于 2021-8-13 15:44
我的恩山、我的无线 The best wifi forum is right here.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /1 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )|网站地图

GMT+8, 2023-11-29 06:06

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

快速回复 返回顶部 返回列表