• xsz.tw 不带广告的小说站
  • down.tw 资源、下载站
  • dushu.tw 读书网、小说免费阅读网站

分享: 适用于小内存鸡的Debian10.3 DD安装底包和裁剪内核

电脑 举个栗子 6个月前 (04-05) 640次浏览 0个评论 扫描二维码

Debian 版本越新对内存的要求越高:
Debian 9 无法在 64MB 内存机器安装和启动, 通过 backports 源升级到 4.19 版本内核无法在 128MB 内存机器启动.
Debian 10 无法在 128MB 内存机器安装和启动.
Debian 11 ….

官方即将在今年 6 月份停止维护 LTS 版本的Debian 8.

自己手里有一台 virmach 的 128MB 内存小鸡, DD 了 CentOS 8 无法启动, DD 了CentOS 7由于内存不够无**常使用 YUM 更新软件包, 因为 virmach 家的严格 TOS 中对磁盘 IOPS 限制变态所以也不敢加 SWAP, 万恶的 YUM 太吃内存了…

YUM 吃内存的问题无法解决, 只能换 Linux 发行版本了, 都说 Debian**好, apt 比 yum 省内存, 自己在 VBox 虚拟机中装了 10.3 体验了一下确实不错, 找回了多年前第一次用 ubuntu 的感觉, 嘎嘎嘎嘎,,,

想要在 128MB 内存的机器上用 Debian 10.3 首先要解决的就是由于内核太臃肿内核镜像太大导致系统无法启动的问题, Debian 毕竟是一个兼顾笔记本, 台式机, 工作站, 服务器, 虚拟化环境的发行版本, 内核中包含所有这些环境可能碰到的硬件驱动程序和各种各样的文件系统支持, 正是由于兼顾的平台和硬件环境太多导致了内核镜像太大, 系统引导时通过内存加载内核镜像需要的内存越来越多.

对于虚拟化环境来说, 其实只需要兼顾 XEN, KVM, Hyper-V, VMware, VBox 即可, 完全不需要各种低功耗 CPU, 声卡, 显卡, 蓝牙, 有线网卡, 无线网卡, USB, 光纤, 触摸板, 并口, 雷电, 火线, 各种传感器,,, 也就是说 Debian 官方内核对于虚拟化环境来说带有大量根本不可能用到的驱动和技术支撑内容, 把这些东东删除, 内核镜像体积自然就降低了, 也就可以在小内存机器上初始化内核镜像引导系统了, 以前我也研究过嵌入式系统内核裁剪移植这些, 虽说自己不会写硬件驱动, 内核裁剪多年不摸也手生了, 但内核裁剪的思路是不变的, 嵌入式开发拿到硬件开发板的第一步肯定是根据自己的硬件平台把内核中用不到的部分全部剔除掉, 然后才是编写硬件驱动程序添加到裁剪后的内核中…

经过两天的努力, 终于把最新的官方 5.6.2 版本 Kernel 裁剪到自己能接受的程度了, 内核 deb 安装包 9.7MB, 安装后的 initrd.img 镜像文件 8.9MB, vmlinuz 3.9MB, 实际测试最低可以在 61MB 内存环境下启动 Debian 10.3, 做了个 Debian 10.3 底包 DD 到我的 128MB 内存小鸡上, 完美运行, 跑了 1 个 Nginx, 2 个 kcptun, 2 个 shadowsocks-libev, 系统资源还有很大空余,,,,嘎嘎嘎嘎,,,

以下是相关文件分享链接, 包括 DD 底包, 内核编译配置文件和内核相关安装包等:

链接: https://pan.baidu.com/s/12kvqQD96DVxJmtnwi_N-GA
提取码: wptu

MD5:
16497aeb1b02f6f61d1646376f04e95e  debian-10.tar.bz2
aa77e7c1df63b0980e72d7d049a4563e  linux-image-5.6.2_5.6.2-1_amd64.deb
200afb3319ce88e171d460a383fdfdf4  linux-headers-5.6.2_5.6.2-1_amd64.deb
9a8cbc3de030a11a019beb65158a3329  linux-libc-dev_5.6.2-1_amd64.deb

文件说明:

1. debian-10.tar.bz2, 此文件为 Debian 10.3 压缩后的 DD 底包, 解压后是一个 350MB 的 raw 格式硬盘镜像, 你需要上传到你另一台有 HTTP 服务的小鸡上, 然后通过网络直接写入到小鸡的硬盘即可, root 密码为 administrator, 以 virmach 为例的关键步骤如下:
a. 关机, 设置 CD-ROM 为第一引导项, 加载 AlpineLinux 镜像并启动, 然后通过 VNC 链接到 Alpine 的控制台.
b. 使你的 Alpine 连上网: ifconfig eth0 up && udhcpc eth0
c. 通过网络写入硬盘镜像: wget -O – http://a.b.c.d/debian-10.raw | dd of=/dev/vda
d. 使用 poweroff 命令关机, 设置硬盘为第一引导项目并卸载 CD-ROM 中的 AlpineLinux 镜像.
e. 启动系统, 连接 VNC, 不出意外的话应该能进入 Debian 10.3 系统了, 但根分区可用空间只有 10MB 左右, 需要立即进行分区扩容, 千万不要更新系统, 否则你的分区会被软件源索引数据填满, 悲剧了,,,
f. 分区表扩容, 以 parted 为例, fdisk 同理:
# parted /dev/vda
(parted) unit s
(parted) p free # 记录下硬盘结束的 selector 位置
(parted) resizepart 1
(parted) # 输入硬盘结束位置, 例如 12345555s
(parted) quit
# reboot
g. 文件系统扩容: resize2fs /dev/vda1
h. 建议再次 reboot

2. linux-*.deb, 这三个文件为内核相关安装包, 如果你不需要在小鸡上编译软件可以只安装 linux-image-*.deb 这一个文件就可以了.

3. config.txt, 此文件为裁剪后的内核编译配置文件, 如果你想自行编译内核把此文件重命名为.config 然后放到内核源码根目录然后直接 make menuconfig 进行调整然后编译就可以了, 内核编译步骤自行搜索, 我自己在 2012 款老古董 RMBP 上的 VBox 中使用 4 线程编译 9 分钟可以编译完.

4. 内核说明:
a. Kernel 4.13+的 TCP 协议栈内部已经实现了 pacing, BBR 不需要再强制搭配 fq 算法的 qdisc 了.
b. 裁剪后的内核默认 qdisc 为 fq_codel(自行搜索, ArchLinux 已默认使用此算法), tcp_congestion_control 为 bbr, 也就是说默认已经是 BBR不用在自行开启了.

5. DD 底包说明:
a. 默认开启了 zram, 自动初始化了一个内存一半大小的 zram 设备作为交换分区, 内存交换页压缩比如果为 1:2 的话相当于系统多出了 1/3 的物理内存, 如果不需要可以使用 systemctl disable zram 禁用此服务.
b. 默认使用了 iptables + ipset 的防火墙策略, 如果不需要可以使用 systemctl disable netfilter-persistent 和 systemctl disable ipset-persistent 禁用.
c. 系统通过内核参数禁用了 ipv6, 如果想开启去除/etc/default/grub 文件中的 ipv6.disable=1 然后重新生成 grub 引导文件然后重启即可.
d. 去除了从 DHCP 服务器获取 DNS 信息自动更新/etc/resolv.conf 文件的功能.
e. 系统默认使用了 CGroups v2, 如果想切换回 v1 去除/etc/default/grub 文件中的 cgroup_no_v1=all systemd.unified_cgroup_hierarchy=1 然后重新生成 grub 引导文件然后重启即可.
f. 系统默认加载了 nf_conntrack 模块并在/etc/sysctl.conf 文件中配置了全局 TCP 连接数限制, 可根据自己硬件情况对相关参数进行调整.
g. /etc/sysctl.conf 文件中还添加了几个常用内核参数配置, 在文件最下面, 例如 tcp_fastopen, ip_local_port_range 等, 可根据自己的情况进行调整.
h. Debian 10.3 的 systemd 强制/run 分区必须要有 16MB 的空闲空间才能执行 systemd 相关命令(a safety buffer of 16.0M is enforced), 如果你的系统启动后自行计算的/run 分区小于 20MB 可以去除/etc/fstab 文件中的/run 挂载点前的注释然后重启系统.
i. 制作底包时使用了 163 的软件源镜像忘记改了, 如果你的小鸡在国外推荐修改为国外的软件源, 例如 FB 镜像.
j. 系统默认使用 journald->rsyslog 的方式记录日志, 如果不满足你的需求可以卸载 rsyslog 并调整 journald 的配置.
k. 系统默认使用 haveged 进行随机数熵值生成, 如果你想使用硬件熵值收集器可以禁用 haveged 并开启 rngd 服务, 修改前建议你执行测试两者的随机数生成速度.

 

原帖地址;https://www.hostloc.com/thread-669559-1-1.html


举个栗子 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:分享: 适用于小内存鸡的 Debian10.3 DD 安装底包和裁剪内核
喜欢 (0)
举个栗子
关于作者:
建筑工地上施工员,闲暇时弄个博客打发时间,
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址