之前使用WireGuard组网, 有时会遇到UDP被限制的情况
如果要udp2raw将UDP转为TCP发送, 那么多了一层势必要增加损耗, 并且会降低稳定性, 于是选了则EasyTier作为新的组网方案
如果你用的开心或有经济实力, 可以去 Emby官网 购买支持下, 119美元永久授权, 能激活30台设备. 并且能够很方便的使用官方的各平台的APP.
当然如果你的经济实力没有那么有实力, 又或者希望Emby运行在无外网的环境下(正版每隔一段时间都会联网验证激活码,如果长时间运行在无外网的环境会导致激活失效), 那么可以继续往下看
各类探针工具能采集的数据还是太少了, 保存时间也不够长. 所以用Prometheus搭建一个用于监控各个服务器状态的平台
为了方便兼容各个场景, pushgateway和alertmanager也一起搭建
- 文件:
boot.asm
- 完整项目代码在末尾
从上篇可知, 留给我们的代码部分只有420字节. 而boot代码需要完成的任务也很简单, 只需要从磁盘加载loader到内存中, 并跳转到loader执行
- 文件:
fat32.inc
幸运的是我们不用自己编写这个文件, 不幸的是我们需要编写生成这个文件的程序
我们需要先做些准备, 方便未来的开发
在后续中, 我会使用/dev/sda
代指磁盘或磁盘镜像, 如果你使用的是U盘, 那么我建议你修改可以临时修改磁盘的权限, 使得所有用户都可以读写磁盘 sudo chmod 666 /dev/sda
哦对的对的,哎呀不对不对,对…对吗?
并非全力
0x500 处的内存不要碰,否则可能导致程序跑飞
可能是由于BIOS占用了这个区间的一部分内存,随便改写导致异常。
但是实模式内存分布图上显示这一块确实是随便用。
- 文件:
def.inc
众所周知x86的cpu在启动之后处于实模式, 只能访问前1MiB的内存, 且很多位置是不能随便写的, 因此我们需要提前设计好每个在boot和loader阶段用到的变量存放的位置, 防止因为不小心将数据写入错误的位置而导致boot和loader跑崩
当我第一次接触操作系统后, 我就觉得我一定要开发一个属于自己的. 然而当时的我并没有意识到这是一个不见底的深渊
开发平台和环境
始于Debian10, 目前已经Debian12了(这闪电般的开发进度, 不愧是我), 各种工具可以直接使用apt
直接安装, 不必担心因为各种操作系统开发书籍和教程里的各种古早的系统版本和工具版本而发愁(我已经帮大家愁完了)
编辑 /etc/default/ufw
找到 18行左右的 DEFAULT_FORWARD_POLICY
,将值改为true
1vim /etc/default/ufw
编辑 /etc/sysctl.conf
将 net.ipv4.ip_forward=1
注释去掉,并确保值为1
1vim /etc/sysctl.conf
2sysctl -p
编辑 /etc/ufw/before.rules
在 *filter
上方,一般在最顶部,添加如下命令
docker默认情况下会使用整个172.16.0.0/12网段, 很明显对于个人用户, docker占用了太多的内网IP, 容易与其他内网网段冲突
1. 停用所有镜像
1# 停止
2docker stop $(docker ps -aq)
3# 删除
4docker rm $(docker ps -aq)
2. 清楚已经分配的网络
1docker network prune
3. 编辑配置文件
1# 创建文件
2vim /etc/docker/daemon.json
- 我将
172.18.0.1/16
分配给默认网段, 一般情况下/24
也够用 - 我将
172.19.0.0/16
分配给docker默认的ip段分配器,/26
限制每次分配的网段大小
1{
2 "bip": "172.18.0.1/16",
3 "default-address-pools": [
4 {"base": "172.19.0.0/16", "size": 26}
5 ]
6}
4. 应用配置
1systemctl daemon-reload
2systemctl restart docker
远程挂载目录
安装
1apt install sshfs
挂载
1sshfs root@10.0.0.4:/storage /mnt/storage -o _netdev,reconnect,ServerAliveInterval=15,ServerAliveCountMax=3,IdentityFile=/root/.ssh/id_ed25519
开机自动挂载
1# vim /etc/fstab
210.0.0.4:/storage /mnt/storage fuse.sshfs _netdev,reconnect,ServerAliveInterval=15,ServerAliveCountMax=3,IdentityFile=/root/.ssh/id_ed25519 0 0