Docker其实是一个开源的应用容器引擎,可以让开发者构建应用程序时,将它与其依赖环境一起打包到一个容器中,然后很容易地发布和应用到任意平台中
docker相比KVM之类非常的相似,但是最明显的特点就是启动快,资源占用小。
原生debian的64位系统内核缺少了很多对Docker特性的内核支持,所以这次我们重新编译内核,加入了对Dcoker全特性的各项支持,这可能是目前在 树莓派Aarch64位系统架构下对 Docker 特性支持最完善的版本
Docker的具体使用和讲解我们会在后续视频给大家带来!!!
5.AUFSAUFS主要功能是把多个文件夹的内容合并到一起,提供一个统一的视图,主要用于各个Linux发行版的livecd中,以及docker里面用来组织镜像
AUFS曾是Docker默认的首选存储驱动,它非常的稳定、有很多真实场景的部署、很强的社区支持,它有以下几个主要优点:
a极短的容器启动时间
b有效的存储利用率
c有效的内存利用率
d但由于它没有包含在Linux内核主线中,所有很多Linux发行版并不支持AUFS
对于树莓派这样存储空间较小的设备而言,使用AUFS文件系统能更好的利用我们有限的存储空间资源并降低I/O消耗
由于AUFS并不在原生的Linux内核支持中,所以我们通过AUFS的PATH,为主线4.14的内核加入了AUFS的内核模块代码并重新编译,现在系统启动会自动加载AUFS模块,无需人工干预,即可直接使用
6.SwapLinux中Swap,类似于Windows的虚拟内存,就是当内存不足的时候,把一部分硬盘空间虚拟成内存使用,从而解决内存容量不足的情况。
我们系统默认增加了对Swap交换缓存的支持,以缓解系统内存不足所造成的死机问题,大大提升了可执行大容量内存需求应用程序的支持和效率,我们的系统在安装完成后将自动完成并初始化Swap,
Swap文件或分区的位置可以通过查看系统挂载配置文件 /etc/fstab 来调整
7.zSWAP
我们的系统之所以能完美运行深度桌面,能运行xfce桌面系统比官方系统还要流畅,就得益于我们系统内核默认已加入了 zSWAP 虚拟内存压缩功能。要讲清楚zswap就需要先说一说计算机中的内存机制。
计算机的各种内存大致分为Ram ,Cache,Flash
Ram称为随机存取存储器,也叫主存或内存,是与CPU直接交换数据的内部存储器。它可以随时读写,而且速度很快, RAM在计算机和数字系统中用来暂时存储程序、数据和中间结果。
可以分为Sram和Dram。
Cache存储器:电脑中为高速缓冲存储器,规模较小,但速度很高的存储器,通常由SRAM组成。 CPU的速度远高于内存,当CPU直接从内存中存取数据时要等待一定时间周期,而Cache则可以保存CPU刚用过或循环使用的一部分数据,如果CPU需要再次使用该部分数据时可从Cache中直接调用,这样就避免了重复存取数据,减少了CPU的等待时间,因而提高了系统的效率。
FLASH闪存它属于内存器件的一种,是一种非易失性内存。目前各类 DDR 、 SDRAM 或者 RDRAM 都属于易失性内存,只要停止电流供应内存中的数据便无法保持,因此每次电脑开机都需要把数据重新载入内存;闪存在没有电流供应的条件下也能够长久地保持数据,其存储特性相当于硬盘,这项特性正是闪存得以成为各类便携型数字设备的存储介质的基础。
从软件层面看有些内存可以直接访问,但是有些内存需要经过中间的一些操作才可以访问例如anon page cache,这类不能直接访问的内存,我们也叫它transcendent memory.
transcendent memory也可以看做是一个内存池,通常以page单位来访问,后面要讲解的zswap的内存池就是这种类型!
Zswap本质就是一个压缩缓存池,当内存页要交换出去时,zSWAP不将其移动到交换设备,而是对其执行压缩,然后存储到系统RAM内动态分配的内存池中,如果内存池超过限制以后会先把旧的page写如swap,之后将新的page写入内存池,回写到实际交换设备的动作则会延迟,甚至能完全避免。(默认占用物理内存上限为系统总内存的 25%,这个25%也不是随意设置的,而是我们经过多轮测试后的最优结果!)
Zswap将要换出的页面压缩以后要存储到内存池,为了提高压缩率,优化内存的使用,提高内存的使用率,我们也要选择最适合树莓派的内存分配器。
目前常见的内存分配器有:zsmalloc、zbud、z3fold
Zsmalloc分配器尝试将多个相同大小的对象存放在组合页中,这个组合页不要求物理连续,从而提高内存的使用率, 现实表明,zsmalloc虽然压缩率高,但是算法复杂,还需要额外的线程负责内存整理,耗费更多的cpu时间
zbud是一个专门为存储压缩page而设计的内存分配器.用于将两个压缩的page存到一个单独的page中,zbud实现简单,以内存page为单位的存储又不会产生内存碎片,但是压缩率低,最高只有2倍,不满小内存系统的实际需求
z3fold内存分配器,和zbud的实现完全一致,只是每个page可以存储3个compressed page,最高压缩率有 3 倍,逼近zsmalloc的4倍,该技术在xperia xzp的中使用,使4GB的手机获得超过4GB内存的体验
结合树莓派的实际情况我们最终决定使用z3fold算法。
刚才讲到swap的内存池里面如果满了,如果还要往里面放新的压缩页面,那就需要把一些老的页面拿出来在经过再一次压缩放在swap交换分区,因为考虑到树莓派硬件的性能,所以选择一个好的压缩算法也是至关重要的!
通常压缩比和压缩速度是成反比,压缩比越高,压缩速度就越慢
Linux有很多压缩算法:lz,lzo,xz,gzip,lzma…
我们的压缩算法采用了拥有极高压缩速度和较高压缩率的lz4 ,lz4相对于其他压缩算法而言,压缩率不是最高的,但速度确是最快的,在已采用 z3fold 算法的情况下,结合树莓派本身的性能特点和实际的测试,在拥有不错的压缩率的情况下,速度对于树莓派来说才是最重要的
使用zswap可以有效的减少用于交换的i/o操作,可以提高系统性能。
在使用Swap文件/分区的场景下,由于减少了对Swap文件/分区的I/O操作,可以提升TF的使用寿命。
正是我们在系统中对zswap的使用以及不断的调整尝试,经过多次的测试才使得我们的系统能够完美运行深度桌面,用xfce桌面系统才能如此的流畅!
8.USB启动本系统支持直接从USB设备启动,不需要使用TF卡,直接将系统镜像烧录至USB设备即可(U盘、移动硬盘经测试均可)
目前仅3B+无需任何修改,可以直接使用,其他型号设备由于芯片固件的原因不支持直接启动,请参考官方设置后才可以支持直接使用USB启动
9.UEFI启动新系统抛弃了传统树莓派的启动方式,使用当下PC流行的EFI方式启动系统,拥有可配置的UEFI BIOS,启动时可进入BIOS进行设置,支持自定义启动选项,虚拟SMBIOS硬件支持,支持EFI专有的EL2启动模式以启用KVM硬件虚拟化的支持。
该BIOS功能异常强大,还有很多可配置选项,各位爱好者可以自行探索。
特性如下
具体的bios的设置会在后续视频讲解!!!
10.TCP加速内核默认已开启 TCP BBR 拥塞控制算法
TCP BBR 拥塞控制算法能够在一定程度上提升TCP传输速度和效率,优化网络传输
系统开机配置默认账户默认账户: pi
默认账户pi密码: raspberry
root账户密码需要自行设定
默认仓库源为清华源用户可自行配置为其他源
web控制地址全平台的web控制端登陆地址