本站文章均备注出处或说明,因本人自用,概不接受删除要求!

小内存 VPS 使用 Linux Cloud Kernel 内核

Linux教程 xiechangan123 304℃ 0评论

手上有一台 128M 内存的 VPS,想要升级到最新版 Debian,现在也就是代号为 Buster 的 Debian 10。说是 128M,实际上当然达不到。能跑的基本上只有代号为 Stretch 的 Debian 9,内核版本为 4.9。一旦升级到 Debian 10,或者只是升级 Linux 内核到跟 Debian 10 相同的 4.19,就无法开机,具体原因是内存不足。

直到发现 cloud 内核,才成功升级到 Debian 10,正常开机。

cloud 内核的包名是 linux-image-cloud-amd64,也就是说,我们从官方源安装就行:

apt update
apt install linux-image-cloud-amd64

从 Debian 9 升级到 10,网上有很多教程,会经历改源、dist-upgrade 和重启。需要在 dist-upgrade 之后,重启之前安装 cloud 内核。一般情况下,包管理工具会自动执行指令,配置为首选启动内核,我们留意一下就行了。

如果需要更新的内核,则需要从 backports 源安装:

echo "deb http://deb.debian.org/debian buster-backports main" > /etc/apt/sources.list.d/buster-backports.list #添加 buster-backports 源
apt update
apt -t buster-backports install linux-image-cloud-amd64 linux-headers-cloud-amd64

安装成功后重启即可,可使用uname -r查看内核是否安装成功

卸载原来内核

dpkg -l | grep linux-image
apt-get purge 欲卸载的旧内核

以上代码是以 Debian 10 (Buster) 为例的。如果是 Debian 9,则将上面的 buster 换为 stretch。注意,cloud 内核是最近不久才引入的,如果想留在 Debian 9,必须从 stretch-backports 源安装,稳定版默认源(stretch)是没有的。

另一个要注意的点是,cloud 内核当前仅有 amd64 也即 64 位架构的包,32 位不适用

官方软件包页面可以看到目前支持的源、对应的版本:

内核 版本号 软件包大小* 安装后大小*
jessie linux-image-amd64 3.16 33MB 160MB
stretch linux-image-amd64 4.9 37MB 184MB
stretch-backports linux-image-amd64 4.19 45MB 253MB
stretch-backports linux-image-cloud-amd64 4.19 15MB 65MB
buster linux-image-amd64 4.19 46MB 256MB
buster linux-image-cloud-amd64 4.19 15MB 66MB
buster-backports** linux-image-amd64 5.3 47MB 263MB
buster-backports** linux-image-cloud-amd64 5.3 15MB 69MB

*取撰文时对应小版本内核包 kB 数值的近似。
**buster-backports 的包基本上跟随 bullseye 包的版本号,而 bullseye 即 Debian 11 并未冻结,未来包的版本号可能变更。

从上表可以看到,就大小来讲,cloud 内核可谓轻量极了。5.3 的 cloud 内核比 3.16 原版内核还要小,就算把安装后全部文件丢到内存都不怕,难怪可以在极小内存的 VPS 上启动。

那 cloud 内核是什么呢?凭什么这么小呢?包页面对 linux-image-cloud-amd64 说明是:

This package depends on the latest Linux kernel and modules for use on Amazon EC2, Google Compute Engine and Microsoft Azure cloud platforms.

即是为这些云平台而优化的。这样好似会增加一些模块,裁剪的部分在哪?可以从 News from the Debian Cloud Team 中一探究竟:

A cloud-specific Linux package (linux-image-cloud) allowed us to disable features that are not relevant in cloud environments and enable what is really important. For example, features related to bluetooth and sound support are disabled and some drivers needed by the cloud providers are enabled. To illustrate that, Amazon EC2 uses Elastic Network Adapter (ENA) support and Intel Corporation 82599 Ethernet Controller Virtual Function, and Microsoft Azure uses Mellanox Technologies MT27500/MT27520 Family [ConnectX-3/ConnectX-3 Pro Virtual Function], all of them are enabled by default in linux-image-cloud package (and are not needed at all by regular Debian users).

大意是说,有些特性是云环境不需要的,像蓝牙、声音支持。看来,cloud 内核剔除了这些无用模块(同时添加了几乎只有云平台会用到的驱动程序)。

这下可以放心用 cloud 内核了。在 KVM 虚拟化的机器中,cloud 内核表现良好,我甚至给 128MB 内存的 VPS 安装上了 5.3 内核。已测试不支持 VMware 虚拟化,会找不到根文件系统。

注意:可手动输入以下命令开启BBR,“搭配Shaowdsocks-libev食用,风味更佳”

echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p

详情::http://shansing.com/read/486/

转载请注明:复仇的撒旦 » 小内存 VPS 使用 Linux Cloud Kernel 内核

喜欢 (0)
发表我的评论
取消评论

表情

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

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