前言在系统管理和开发领域,轻量级的操作系统不仅可以提高效率,还能为各种场景提供极大的灵活性。受到 Arch Linux 安装镜像的启发,我基于 Debian 12 高度定制和构建了一个完全在内存中运行的操作系统,命名为 ramDebian。ramDebian 是一个运行于内存中的轻量级操作系统,预装了 debootstrap 和 arch-install-scripts,使得用户可以深入了解和手动构建自己的 Debian 或 Arch Linux 系统。无论你是 Linux 的老手还是新手,ramDebian 都能为你提供一个独特且有用的体验。
下载链接
ramDebian的四大特点1. 完全运行于内存中。 ramDebian的最大特色之一就是它完全运行于内存中。这意味着你可以在不影响硬盘数据的情况下进行各种操作,比如格式化硬盘。这种特性对于系统管理员或者需要临时环境进行测试的开发者尤为有用,因为它提供了一个无后顾之忧的实验环境。
2. 灵活的系统构建环境。 ramDebian 提供了一个灵活的环境,预装了关键工具如 debootstrap 和 arch-install-scripts ...
Arch Linux以其滚动更新和极简主义而闻名,它会持续接收软件包更新,始终保持最新状态,这非常符合我的口味。而且安装和配置Arch Linux的过程本身就是一个学习和巩固Linux系统的好机会,因为从分区、文件系统设置到系统配置,都需要用户亲自动手。此外还有强大的社区支持,Arch Linux强调用户参与和贡献,其社区活跃且乐于助人,同时保持了一种独立自由的精神,不受商业利益的过多影响。
平时主要还是使用VPS,所以我就开始研究怎么在VPS上安装Arch Linux。网上虽然有相关的教程,但不多,内容也不尽人意,于是我便开始自己研究和折腾。因为有一定的Linux基础,折腾起来也不是特别费劲,最后总结出3种实测可行的安装方式(踩了不少坑):
根据内存等因素划分:
内存1.5GB以上、商家提供VNC
云服务器/VPS 安装Arch Linux (一)
内存512MB以上、商家提供VNC
云服务器/VPS 安装Arch Linux (二)
内存300-512MB的机器、商家不提供VNC控制台、商家VNC坏了
云服务器/VPS 安装Arch Linux (三) ...
BBRv3 GitHub地址: https://github.com/google/bbr/tree/v3整个过程和之前那篇编译内核有点相似配置要求:2核2GB内存以上,硬盘空间大于20GB
本次用于编译的主机配置 Processor : AMD Ryzen 7 7700X 8-Core Processor CPU cores : 2 @ 4491.560 MHz AES-NI : ✔ Enabled VM-x/AMD-V : ✔ Enabled RAM : 1.9 GiB Swap : 1024.0 MiB Disk : 28.5 GiB Distro : Debian GNU/Linux 11 (bullseye)购买链接安装依赖
1apt install git build-essential libncurses-dev libssl-dev libelf-dev bison bc flex rsync debhelper screen vim -y
...
基本概念MSS(Maximum Segment Size,最大段大小)是TCP协议中的一个核心参数,用于指定TCP段中数据部分的最大长度。这个参数在TCP连接的三次握手过程中通过SYN报文段的MSS选项进行协商确定。
协商过程
连接建立时,双方通过SYN报文交换各自支持的MSS值
最终采用两者中较小的值作为连接的MSS
这种机制确保了数据传输的兼容性和效率
MSS的重要作用1. 优化数据传输
减少数据分片和重组的次数
提高整体传输效率
降低网络负载
2. 避免IP分片
防止TCP段超过IP层MTU限制
减少网络开销
降低数据包丢失风险
MSS与MTU的关系MTU(Maximum Transmission Unit)
定义:数据链路层帧中数据部分的最大长度
典型值:以太网通常为1500字节
重要性:决定了网络层的数据包大小上限
MSS和MTU的计算关系计算公式1MSS = MTU - IP头部长度 - TCP头部长度
标准以太网环境下的计算示例12345MSS = 1500 - 20 - 20 = 1460字节其中:- MTU: 1500字节- IP头部:20字节- TCP头部 ...
HTTP协议主要由请求(Request)和响应(Response)两部分组成,每部分都包含三个主要组成部分。下面是详细说明:
HTTP请求(Request)1. 请求行(Request Line)1GET /api/users HTTP/1.1
包含三个元素:
请求方法:GET、POST、PUT、DELETE等
请求路径:/api/users
HTTP协议版本:HTTP/1.1
2. 请求头(Request Headers)1234Host: www.example.comUser-Agent: Mozilla/5.0Content-Type: application/jsonAccept: application/json
包含请求的附加信息
采用键值对形式
常见请求头包括:
Host:指定服务器的域名
User-Agent:客户端信息
Content-Type:请求体的数据类型
Accept:客户端期望接收的数据类型
3. 请求体(Request Body)1234{ "username": " ...
在网络编程中,TCP 和 UDP 是最常用的传输层协议。它们之间的连接方式和使用场景存在明显差异。本文将详细解析 TCP 和 UDP 的原理,并通过 Python 代码示例加深理解。
1. TCP 和 UDP 的基本特性
特性
TCP(Transmission Control Protocol)
UDP(User Datagram Protocol)
连接方式
面向连接(三次握手)
无连接(直接传输)
可靠性
可靠传输,保证数据顺序和完整性
不可靠传输,可能丢包或乱序
传输状态
维护连接状态
无状态
传输场景
文件传输、网页加载、数据库连接等
音视频流、DNS 查询、在线游戏等
2. TCP 和 UDP 在 Python 中的连接方式2.1 TCP 连接:connect() 方法在TCP中,需要使用 s.connect()建立连接。此过程会经过三次握手 :
客户端 发送 SYN 包到服务器,表示建立连接的请求。
服务器 返回 SYN+ACK 包,确认请求。
客户端 返回 ACK 包,连接建立成功。
TCP 示例代码1234567891011121314 ...
alias vs root1. alias
定义:alias指令用于指定一个绝对路径或者相对于 root指令的路径,它会直接指向文件系统中的某个位置。
用途:当你需要精确地指向一个特定的目录或文件时使用。
示例:123location /images/ { alias /data/images/;}
2. root
定义:root指令设置了一个基准目录,之后所有通过URL访问的文件都相对于这个基准目录查找。
用途:通常用于设置站点的根目录。
示例:
12location / { # 以/var/www/html为基准目录,当请求 /index.html 时,Nginx 将会在 /var/www/html/index.html 下查找文件
区别alias后面跟的是文件或目录的实际存放路径;而root后面跟的是站点的根目录。使用alias时,如果URL路径中有其他字符(如斜杠),则可能需要额外处理这些字符。如果希望在URL中包含路径片段并直接映射到文件系统中的对应路径,则应使用alias;如果希望所有的请求都相对于一个固定的目录进行解析,则应 ...
关于ramDebian的介绍: ramDebian:一款轻量级、灵活的内存操作系统
我将带你一步步在VPS上使用ramDebian手动构建Debian 12。这个方法与之前在VPS上安装Arch Linux的步骤非常相似。
我们以传统BIOS启动的机器为例,完成从硬盘格式化到系统引导的全过程。
准备工作首先,确保你已经通过ramDebian启动了你的VPS,并且已经成功ssh登录。ramDebian默认root密码为sitao.org
接下来我们将开始格式化硬盘,并为新系统做准备。
使用我写好的脚本
1bash <(curl -sL https://sitao.org/myscripts/ramDebian)
格式化硬盘在命令行中,使用 fdisk 工具来管理硬盘分区:
1fdisk /dev/vda
注意:有些VPS可能使用 /dev/sda 作为硬盘设备名称,请根据实际情况调整。
在 fdisk 中依次输入以下命令:
• o:创建一个新的DOS分区表。
• n:创建一个新的分区。
• 一直回车使用默认设置,直到完成分区创建。
• w:保存并退出。
这 ...
执行 apt upgrade 命令时如果不小心关闭了终端,升级过程将无法完成,导致系统处于一种“挂起”状态。表现为重新尝试安装软件时,系统提示锁文件被占用,以下是解决方法。
1. 查找并终止挂起的APT进程首先,需要找到并终止占用锁文件的APT进程。可以通过以下命令查看具体的进程号(PID):
1ps -aux | grep apt
然后,使用 kill 命令终止apt进程(这里的7860就是apt upgrade对应进程的id)
1kill -9 7860
2. 删除锁文件12rm /var/lib/dpkg/lock-frontendrm /var/lib/dpkg/lock
3. 修复未完成配置的软件包由于APT进程的意外中断,可能会有一些软件包未被正确配置。这时可以使用以下命令来修复:
1dpkg --configure -a
当我们在安装或升级软件包时,如果中途进程被意外终止(比如关闭了终端),可能会导致某些软件包未被正确配置。此时,dpkg –configure -a 命令会重新配置所有已经解压但尚未配置的软件包,帮助系统恢复到一个正常的状态。
这个命令的具体 ...
OverlayFS 是一种联合文件系统,它允许将一个或多个文件系统(称为“层”)叠加在一起,以创建一个单一的、统一的文件系统视图。它特别适用于只读文件系统与可写层的组合,这使得在容器化环境、Live CD、和临时文件系统中非常有用。
OverlayFS 的主要概念1.下层(Lower Layer):这是一个只读文件系统,例如一个 squashfs 文件系统,它通常包含静态的操作系统和应用程序文件。2.上层(Upper Layer):这是一个可写的文件系统,例如一个 tmpfs 或者一个普通的文件系统分区,用于存储文件系统的变化。3.合并目录(Merge Directory):这是最终的挂载点,用户和应用程序在这里看到的是一个统一的文件系统视图。它将上层和下层的内容合并。4.工作目录(Work Directory):这是一个用于 OverlayFS 操作的临时存储区域,需要在上层的同一个文件系统中。
OverlayFS 工作原理1.读操作:当读取一个文件时,OverlayFS 会首先在上层查找该文件。如果在上层找到该文件,它将返回该文件内容。如果在上层找不到该文件,它将继续在下层查找 ...