偷税师大野艾希莉的博客

Boilerplate of Remilia Blog

编程之为什么要封装类型的一些感想

背景 以前一直没有理解到为什么这些框架都喜欢把用的类型再封装一次,尤其是类似于 template<typename T> using xxx::vector<T> = std::vector<T>; 今天遇到一个case忽然能理解了。 之前写了段代码,要求用户传一个回调函数进来,接口类似于 std::function<void(std...

Linux上基于虚拟网卡测试路由功能

背景 最近在做路由功能时发现有一些机器配置之后依然无法路由,因此寻找一个能够本地测试路由功能的方法来排查问题。 方案 在Linux系统上,你可以使用ip命令和虚拟网络接口,如虚拟以太网(veth)对或网络命名空间,来模拟一个虚拟网卡,并通过现有的eth0网卡转发数据给目标IP 192.168.1.1。以下是如何实现这一目的的步骤: 步骤1:创建一个虚拟网络命名空间 网络命名空间允许你...

git init与git fetch克隆仓库还原分支信息的方法

for branch in $(git branch -r | grep "^$remote_name" | sed 's/^$remote_name\///'); do # 检查本地分支是否已存在 if [ "$(git branch --list $branch)" ]; then echo "本地分支 $branch 已存在" else ...

Rust交叉编译

添加toolchain 下载目标机器的工具链,使用rustup target list命令查询 其中,带musl的是静态链接,我这里要编译到arm64版本的,因此添加 rustup target add aarch64-unknown-linux-musl BTW:添加如果很慢的话需要换国内的源,可以参考https://gist.githubusercontent.com/zh61...

使用QEMU运行一个最小的ARM64的Linux系统

步骤 大致步骤其实和上一篇差不多,主要一些区别在于编译时不同,这里就再记录一下 下载Linux源码 git clone https://github.com/torvalds/linux.git 编译 进入仓库后编译内核 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- defconfig 选择要开关的功能,然后save后编译...

利用QEMU运行Linux内核

步骤 下载Linux源码 git clone https://github.com/torvalds/linux.git 编译 进入仓库后编译内核 make menuconfig 或者创建一个默认的.config make defconfig 选择要开关的功能,然后save后编译 make -j$(nproc) 编译完后将编译好的内核取到工作目录下 cp arc...

在x86-64的Linux上使用QEMU运行arm64的程序

QEMU介绍 QEMU(Quick EMUlator)是一个开源的处理器模拟器和虚拟化工具。QEMU 的主要目标是实现快速、高效的模拟和虚拟化,以便在不同的硬件架构和平台之间运行软件。QEMU 可以模拟多种处理器架构(如 >x86、ARM、MIPS 等)以及多种设备。QEMU 的工作原理可以从两个方面来解释:用户模式模拟(User-mode emulation)和系统模式模拟(...

ubuntu上搭建obfs4代理

背景 机场的ip是有限的,如何利用有限的ip去撬动无限的ip,tor真的给了一个很好的方案 安装 release=$(lsb_release -a 2>&1 | awk '/Codename/{print $2}') cat << EOF | sudo tee /etc/apt/sources.list.d/tor.list deb https://deb.t...

利用udev在arm linux上实现自动挂载U盘到固定目录

背景 项目上要实现外接硬盘,插上后自动挂载到某个目录的功能。但是插上硬盘时因为颠簸设备随时会掉线,掉线时可能还会在写入数据。所以最终要求掉线又连上的时候还能继续挂载到该目录 方案:使用udev实现 /etc/udev/rules.d/99-uto-logger.rules ACTION=="add", KERNEL=="sd[a-zA-Z][0-9]", SUBSYSTEM=="bl...

openvpn的客户端路由方法

背景 用openvpn搭了一套内网调试的系统,现在有一个client处于一个内网环境,这个内网环境有许多设备需要调试,因此想通过这个client作为router来连接到具体的设备上。 client所处的内网环境ip为10.111.0.0/24,client的openvpn ip为192.168.136.38,用户所在的openvpn网段为192.168.133.0/24,需要进行以下的配...