winger 发布的文章

ubuntu在内核的更新上,还是非常勤快的。如果每个更新都即时跟进的话,很快就是积累下很多旧内核。
旧内核不仅占用空间,而且看着难受……

使用sudo apt autoremove可以移除旧内核文件,但是在dpkg --get-selections中还会出现,并被标记为deinstall状态。同样看着难受……

并且如果是系统大版本更新,那旧内核也不能通过上面那个命令来移除。这时候就需要用别的方法来干净的删除内核。

首先列出已安装的内核包:

dpkg --get-selections | grep linux-

通过sudo apt-get purge来指定要删除的内核包。比如我要删除5.13的所有内核包:

sudo apt-get purge linux-image-5.13.* linux-modules-5.13.* linux-headers-5.13.* linux-oracle-5.13*

如果已经通过sudo apt autoremove移除,并留下deinstall状态的内核。那可以用下面的命令删除所有deinstall状态的包。

sudo dpkg --purge `dpkg --get-selections | grep deinstall | cut -f1`

如果按前面文章中描述的openwrt编译中,加添的feed源:

src-git kenzo https://github.com/kenzok8/openwrt-packages
src-git passwall https://github.com/xiaorouji/openwrt-passwall

那么默认集成的是普通的geodata文件。
而事实上有一份科学爱好者制作的加强版文件,可以更方便的制定各种策略。

我们可以通过修改Makefile来让编译出来的固件直接集成加强版文件。
对应的Makefile的路径为:

package/feeds/packages/v2ray-geodata/Makefile

编辑这个文件,找到Download/geoipDownload/geosite两个节点分别替换为以下内容:
geoip

GEOIP_VER:=202212042209
GEOIP_FILE:=geoip.dat.$(GEOIP_VER)
define Download/geoip
  URL:=https://github.com/Loyalsoldier/v2ray-rules-dat/releases/download/$(GEOIP_VER)/
  URL_FILE:=geoip.dat
  FILE:=$(GEOIP_FILE)
  HASH:=8c58d22cb94bf98a42b1b2dff8ac9c39f42f1e83f52dc1ab016c72e8a22c5fcb
endef

geosite

GEOSITE_VER:=202212042209
GEOSITE_FILE:=geosite.dat.$(GEOSITE_VER)
define Download/geosite
  URL:=https://github.com/Loyalsoldier/v2ray-rules-dat/releases/download/$(GEOSITE_VER)/
  URL_FILE:=geosite.dat
  FILE:=$(GEOSITE_FILE)
  HASH:=f9d475afa5f2f5bacef596a49fda433224fb8da30d9d7966a3bb1e8a7309472a
endef

然后开始正常编译就可以直接集成加强版的文件了。

因为加强版文件更新非常活跃,基本上每日更新。所以想自己集成最新的文件,只需要修改VER对应的版本号,和文件HASH的哈希值。至于哈希值从哪里来?那就要到他的发布页上去查看了。

一般情况下,直接在git个新建一个分支,那新分支会继承之前分支的所有历史节点。
但是,有时候需要创建一个干净的分支。比如当前项目要开始一个全新的大版本。

这时候在创建分支的时候,就可以加上--orphan参数,这将创建一个干净的,没有历史节点的分支。
比如:

git checkout --orphan dev_109

这个时候,之前分支下的文件都会被标记为删除。添加需要保留的文件,提交后就可以把这个新分支推送到服务端。

git commit -am "new branch for chromium 109"

前阵子,谷歌不知道抽什么风。对ipv6的归属地判断出现严重的问题。我明明是东京的vps上的ipv6给判定到了美国去了。导致我油管的会员直接失效。测试了同一台机器的ipv4就没有这个问题。

目前打算临时关闭ipv6,先用ipv4。等哪天谷歌修复了这个问题后,再启用ipv6。
最简单的方法就是直接运行以下命令。

sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.lo.disable_ipv6=1

想恢复的时候,重启一下网络服务就可以。

oracle云免费的x86主机,只是区区的1G内存,而且oracle的ubuntu镜像还默认禁用了swap分区。
因此进行一些需要消耗较大内存的操作时,就可能出问题。
比如尝试编译r2s专用的openwrt时,直接把系统给卡死了。在发现系统完全没有swap分区后,就着手加个swap分区。

此时使用free -h应该看到完全没有swap的情况。

Swap:            0B          0B          0B

因为实际有1G的物理内存,所以添加个2G的swap。
首先创建一个做为swap的空文件,并指定大小。

sudo fallocate -l 2G /swap

要做为swap使用,必须为0600权限。因此修改文件权限,并转为swap格式文件。

sudo chmod 600 /swap
sudo mkswap /swap

然后启用swap

sudo swapon /swap

这时候再用free -h查看就可以看到已经启用的swap了。

Swap:         2.0Gi        89Mi       1.9Gi

这个时候还只是临时启用,重启之后就会失效。需要把配置写入/etc/fstab中,才可以在系统重启后自动挂载。
将以下配置写入fstab中:

/swap swap swap defaults 0 0

添加了swap之后,就顺利的把r2s的openwrt编译完成了。效果还是很明显的。

最后,如果想停用swap。可以使用以下命令停用,再去掉fstab中的配置并删除文件。

sudo swapoff /swap