树莓派4打造旁路路由

相关仓库: iamNCJ/Openwrt-Pi4 最近尝试改造自己的路由器,无奈家里的路由器都比较老,而且没有USB插口,不是很好刷 OpenWrt ,于是想到直接将树莓派作为自己的旁路路由,在树莓派上运行 Openwrt 系统,来实现如全局代理等功能。 首先尝试官网的 snapshoot 版本,感觉效果一般,然后看网上有人说在 Docker 里运行 OpenWrt ,测试感觉能用,但是非常不稳定,于是索性自己编译一个。 使用的上游是 lede 大的固件,然后针对树莓派4,直接使用64位系统,榨干性能,开启了 Docker 支持,这样其他的功能基本还是不受影响(我已经将所有树莓派上自己用的的服务基本都容器化了),再加上现在的树莓派4已经有了千兆网口,整个体验效果是非常的好。 编译的时候本地编译,毕竟 9700K ,但是出于好玩尝试了网上的 GitHub Actions 编译脚本,感觉这个脚本马马虎虎,而且没有办法增量编译,所以只适合喜欢薅羊毛的人,有条件的话还是本地编译比较好。 现在家里的网络舒服多了,挂一张内网的测速,librespeed speedtest,千兆网还是很稳的。(librespeed 在树莓派上最好从源码 Dockerfile 自己build镜像,linuxserver 提供的 armv8 镜像非常不稳定) 本地互联网和境外代理也都很稳 最后本着开源精神,将树莓派4专用的 OpenWrt 固件的编译 .CONFIG 文件以及编译好的镜像开源,想使用可以点击这里查看配置或直接下载镜像安装,欢迎PR。

March 17, 2020 · 1 min · 39 words · NCJ

Running ROS on WSL

简短版 如果根本没有出现图形界面,请禁用OpenGL的外部转发,全部在WSL内进行渲染: export LIBGL_ALWAYS_INDIRECT=0 如果出现了图形界面,但是中间是黑屏,可以通过--verbose检查 如果是gazebo 7 (ROS Kinetic默认),大概率是第一次模型没有下下来,自己手动下载模型放到/.gazebo/models/目录下即可 如果是gazebo 9 (ROS Melodic),大概率是gazebo server的IP问题,在环境里设置一下gazebo server的IP即可: export GAZEBO_IP=127.0.0.1 闲来无事玩ROS,配环境。一杯茶,一把琴,一个环境配一宿。(不是 言归正传,感觉周围好多人都开始玩ROS,我也玩玩,然而拦在很多人面前的第一道坎竟是安装。事实上ROS官方对于正常的使用者已经提供了清晰明了的安装指南,只要前往官网进行操作即可。 但是我显然不是正常人并没有安装Ubuntu,原因很多,之前还专门写文喷过Ubuntu,但是招架不住这次很多老师指定安装ROS Kinetic,ROS的上一个LTS版本,而这个版本只能安装在Ubuntu 16.04下,于是,我就动了WSL的邪念。 WSL好处很多,你可以直接在Windows下“无缝”使用一个Linux发行版(虽然跟内核有关的东西都被砍掉了),而且WSL的主题安装之后,你可以同时安装很多个发行版,甚至还能通过Raft WSL等工具管理不同发行版的不同快照,这次我就索性直接在WSL里同时安装了两个不同的Ubuntu发行版,分别来安装ROS Kinetic和Melodic版本。 WSL的安装在此略过,网上教程一搜一大把,我就不过多赘述,但是在WSL下,跑通gazebo,麻烦事还是很多的,下面开始排坑。 首先,你得再安装一个Ubuntu的发行版,直接去商店下载就好。 然后安装一下ROS,视网络情况而定,大概10~30分钟的样子。 中间有一步sudo rosdep init可能会因为网络原因很慢,解决办法就是开proxy export https_proxy=xxx sudo -E rosdep init -E的意义就是将你现在设置好的proxy环境带入sudo中 然后你需要准备一个X Server,我使用的是Xming,其他的X Server不保证兼容性。 通过XLaunch启动X Server,注意要关闭Native opengl,不然WSL会试图讲渲染工作交给外部的X Server,但是我试验了一下似乎不太行,干脆就强制使用软OpenGL算了。(再次尝试发现不关也行,主要不在WSL里面指定外部OpenGL就行 划红线的这项要取消勾选 测试一下 roslaunch turtle_tf turtle_tf_demo.launch # on another terminal rosrun rviz rviz -d `rospack find turtle_tf`/rviz/turtle_rviz.rviz 发现可视化工具rviz是可以正常使用的 但是故事没有结束,事实上ROS里面还有一个重要的仿真环境gazebo 我们来测试一下 gazebo 然后发现 中间的仿真是黑的??? 很多人就会就此得出结论——WSL不能运行gazebo,我以前也这么以为,直到最近…… Gazebo 7 我们来试图寻找一下错误的原因...

February 20, 2020 · 2 min · 335 words · NCJ

[吐槽向] Ubuntu Server 安装指南

吃饱了撑的,非要在台式机上安装Ubuntu Server 好吧,主要是之后可能要玩ROS,ML的环境也是Ubuntu相对来说容易配置一些,所以还是Ubuntu方便一点。但是最近Ubuntu的一次内核更新引入了一个bug(具体参考https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1860306),导致我的Ubuntu在启动后图形界面会处于卡死状态,无法进行操作。虽然通过ssh将启动目标改为了terminal,勉强能够使用,但是显卡的驱动坏了,一时半会也没修好,一气之下索性想重装一个Ubuntu Server,告别Linux桌面环境。 然后就发现Ubuntu Server的安装脚本就是一坨屎,首先是18.04版本的live iso不支持nvme硬盘,Stack Overflow上查了一圈发现要么换上古的16.04,要么换mini.iso纯网络安装,要么用19.10,想了想20.04应该快出来了,索性直接用非LTS版本到时候滚过去吧。然后安装19.10的时候,发现脚本居然不支持自定义修改分区,要么全盘,要么在进脚本之前自己改好分区表,绝了。(快快投奔Arch 然后自己改好分区表,进入脚本,标记好EFI分区和根目录,开始安装,duang,ERROR,垃圾脚本,上网搜了一下错误信息发现又是一个bug…… 结论:Ubuntu Server的安装脚本设计的时候就没考虑作为第二个系统进行安装,各种异常处理做的也是极其不到位,如果你想Windows+Ubuntu Server,请先安装Ubuntu Server…… 于是开始曲线救国,先安装Desktop,然后转为Server(不愧是我 网上各种奇葩方法…… sudo apt purge xorg-* sudo apt remove gnome-* && sudo apt autoremove sudo apt remove ubuntu-desktop && sudo apt autoremove …… 看着就不优雅 自然想到tasksel 取消勾选Desktop,选上Basic Server,跑完进度条就好了 重启 然后你就发现你上不了网了(狗头 试了一下/etc/network/interfaces发现不行,ip link set eno2 up也不行,然后知道了Ubuntu的网络是由Network Manager管理的,tasksel可能在卸载Desktop的时候给你卸掉了,但Server安装的时候又没给你装回来…… 所以正确方法是:使用tasksel操作完之后,再安装Network Manager…… 踩坑结束……

January 27, 2020 · 1 min · 51 words · NCJ