SanXian

简单.确定.稳定.三联生活

0%

参考图书

书名ISBN作者出版社出版日期备注
防火墙和VPN技术与实践9787115594723李学昭人民邮电出版社2022-11-01
交换机.路由器.防火墙(第3版)9787121252044刘晓辉电子工业出版社2015-01-01P,W
华为防火墙技术漫谈9787115390769徐慧洋/白杰/卢宏旺人民邮电出版社2021-01-01P,W
Linux防火墙 第4版9787115436337[美]史蒂夫.苏哈林人民邮电出版社2016-11-01P,W
Designing and Implementing Linux Firewalls

with Qos Using Netfilter, Iproute2, Nat and L7-Filter

9781904811657Lucian GheorghePackt Publishing2006-10-31P

ChromiumOS是谷歌的一款云操作系统,秉承了Chrome浏览器快速、简洁、安全的特性。相比Windows、Mac OS等传统的本地操作系统来说,一种新的、应用“云计算”来实现大部分功能、本地计算机只存储少量信息的新操作系统模式渐渐崭露头角。Chromium OS就是这样的一款轻量型、云计算为主的操作系统。目前Google与多家一线终端制造商合作开发出了基于ChromiumOS的ChromeBook系列产品,比如三星的Series 5系列。

本文目标 目标1:原生ChromiumOS的编译步骤、方法和注意事项 目标2:更换原生ChromiumOS的开机动画 目标3:简述ChromiumOS的编译原理

ChromiumOS的相关资源

网站链接
Chromium官方网站https://www.chromium.org
ChromiumOS官方网站https://www.chromium.org/chromium-os
ChromiumOS代码https://chromium.googlesource.com/chromiumos
ChromiumOS文档入口https://chromium.googlesource.com/chromiumos/docs/
ChromiumOS文档https://chromium.googlesource.com/chromiumos/docs/+/HEAD/README.md
ChromiumOS磁盘映像结构https://chromium.googlesource.com/chromiumos/docs/+/HEAD/disk_format.md
ChromiumOS启动https://www.chromium.org/chromium-os/chromiumos-design-docs/boot-design

龙芯中科技术股份有限公司

龙芯中科面向国家信息化建设需求,面向国际信息技术前沿,以创新发展为主题、以产业发展为主线、以体系建设为目标,坚持自主创新,全面掌握CPU指令系统、处理器IP核、操作系统等计算机核心技术,打造自主开放的软硬件生态和信息产业体系,为国家战略需求提供自主、安全、可靠的处理器,为信息产业的创新发展提供高性能、低成本的处理器和基础软硬件解决方案。

龙芯中科主营业务为处理器及配套芯片的研制、销售及服务,主要产品与服务包括处理器及配套芯片产品与基础软硬件解决方案业务。目前,龙芯中科基于信息系统和工控系统两条主线开展产业生态建设,面向网络安全、办公与业务信息化、工控及物联网等领域与合作伙伴保持全面的市场合作,系列产品在电子政务、能源、交通、金融、电信、教育等行业领域已获得广泛应用。

龙芯作为国产处理器的代表公司,在业务前景、技术深度以及生态建设方面,都走在其他公司之前,是咱们国产处理器的中流砥柱。我关注龙芯比较久了,为表示对龙芯的热爱和支持,这里开个博文,及时收集龙芯的相关动态。

GCC

书名ISBN作者出版社出版日期备注
编译系统透视:图解编译原理9787111498582新设计团队机械工业出版社2016-04-01P,W
深入分析GCC9787111556329王亚刚机械工业出版社2017-02-01P,W
GCC技术参考大全9787302088431[美]格里菲斯清华大学出版社2004-06-01P
GNU gcc嵌入式系统开发9787811248142董文军北京航空航天大学出版社2010-03-01P
高级C/C++编译技术(典藏版)9787111717300米兰·斯特瓦诺维奇机械工业出版社2022-12-01W

apt软件源的服务器端文件,包含了apt的元数据、软件可执行程序包和软件源代码包,是Ubuntu官方、社区组织以及第三方公司共同维护的软件仓库。Ubuntu制定了软件的组织、存放和更新的策略,然后将此策略反映到服务端目录结构上。本文用于探索apt软件源服务端的数据存放逻辑。

参考图书

书名ISBN作者出版社出版日期备注
Linux内核完全剖析 基于0.12内核9787111250470赵炯机械工业出版社2021-10-01P,Z
Linux内核完全剖析9787111180326赵炯机械工业出版社2006-01-01P,Z
Linux内核完全注释9787111149682赵炯机械工业出版社2005-08-01P,Z
Linux内核设计的艺术:图解Linux操作系统架构设计与实现原理(第2版)9787111421764新设计团队机械工业出版社2013-05-01P,W,E
x86汇编语言:从实模式到保护模式(第2版)9787121447556李忠电子工业出版社2023-01-01P,W,Z

操作系统实作

书名ISBN作者出版社出版日期备注
穿越操作系统迷雾:从零实现操作系统9787111732884王柏生/王晟寒机械工业出版社2023-09-01
一个64位操作系统的设计与实现9787115475251田宇人民邮电出版社2018-05-01
30天自制操作系统9787115287960[日]川合秀实人民邮电出版社2022-04-01
自己动手写操作系统9787121015779于渊电子工业出版社2005-08-01P
Orange S:一个操作系统的实现9787121084423于渊电子工业出版社2009-06-01P
Linux GNU C 程序观察9787302545491罗秋明清华大学出版社2020-05-01
深度探索嵌入式操作系统:从零开始设计、架构和开发9787111514879彭东机械工业出版社2015-10-01P

虚拟化技术主要包括:计算虚拟化、存储虚拟化、网络虚拟化、内存虚拟化、IO虚拟化。

  • 计算虚拟化四大主流路线:KVM、VMWARE、Hyper-V、Xen
  • 存储虚拟化两大主流路线:glustfs、ceph
  • 网络虚拟化一般采用自研的方式:主要技术有VxLAN、SDN等

0x01 参考图书

书名ISBN作者出版社出版日期备注
深度探索Linux系统虚拟化:原理与实现9787111666066王柏生机械工业出版社2020-10-01E,JB
深入浅出系统虚拟化:原理与实践9787302589419戚正伟清华大学出版社2021-10-01W
处理器虚拟化技术9787121230196邓志电子工业出版社2014-05-01P
Linux虚拟化—原理、方法和实战(KVM+Docker+OpenStack)9787302633419吴光科清华大学出版社2023-07-01
系统虚拟化—原理与实现9787302193722英特尔开源软件技术中心清华大学出版社2009-03-01P

IP地址根据地址范围分为A、B、C、D、E等五类,每类地址都是由“网络ID”+“主机ID”组成。IP地址的划分规范是由国际互联网代理成员管理局(IANA)规定的。IANA保留地址是国际互联网代理成员管理局(IANA)在IP地址范围内,将一部分地址保留作为私人IP地址空间或者专门用于内部局域网等特殊用途使用的地址。

Linux Bridge(Linux网桥)是 Linux 上用来做 TCP/IP 二层协议交换的网络设备,与现实世界中的交换机功能相似。Bridge 设备实例可以和 Linux 本机上其他网络设备实例连接,既 attach 一个从设备,类似于在现实世界中的交换机和一个用户终端之间连接一根网线。当有数据到达时,Bridge 会根据报文中的MAC地址进行广播、转发、丢弃等处理。bridge-utils提供的brctl命令用于设置、维护和检查Linux网桥。本文记录bridge-utils的相关网站信息、编译安装、软件包安装、命令解释等内容,后续文章将对网桥的使用和原理做源码级别的深度分析。

书接上文 《LwIP分析之在Linux上运行LwIP的第二种方法》 ,第二种运行LwIP协议栈的方法,我们借用Linux TAP/TUN虚拟网卡,来联通本机Linux TCP/IP协议栈和LwIP TCP/IP协议栈,然后通过设置路由转发规则,可以达到我们在本机使用curl作为客户端,向运行在LwIP协议栈上的应用层httpd服务端发起请求,而httpd处理完http请求之后,又可以通过LwIP协议栈和TAP/TUN虚拟网卡,将数据返回给我们Linux协议栈上的curl程序。 但它的弊端是只能在本机上进行连通性测试,我们无法在其他主机上,向这个LwIP上的httpd发送请求。我们借助 Linux Bridge 来解决这个问题,也就是在Linux上运行LwIP的第三种方法。

书接上文 《LwIP分析之在Linux上运行LwIP的第一种方法》 ,第一种运行LwIP协议栈的方法,因对源码有侵入性,所以我们不作推荐。本文介绍是第二种方法,该方法只需要修改相应的源码配置,即可在本地运行起来。然后在本地使用curl可以调试服务端的httpd服务(其他功能开启方法类似,请读者自行研究)。

我们知道LwIP是给嵌入式设备这种资源有限的设备设计的,我们将其移植到单片机上较为简单。但如果剖析源代码,需要断点或者打印调试信息,每次修改都要重新烧录,那就太麻烦了。所以学习阶段,最好的方法还是可以在Linux上运行,这样就方便多了。

如何让LwIP在Linux上运行,目前我所知有三种方法,对于这几种方法,后续博文一一道来。

简单介绍

lwIP is a small independent implementation of the TCP/IP protocol suite that has been initially developed by Adam Dunkels and is now continued here. The focus of the lwIP TCP/IP implementation is to reduce resource usage while still having a full scale TCP. This makes lwIP suitable for use in embedded systems with tens of kilobytes of free RAM and room for around 40kilobytes of code ROM.


LwIP是瑞典计算机科学院Adam Dunkels开发的一个独立的小型开源TCP/IP协议栈,项目目前仍然在维护中。它实现的重点是在保持TCP协议主要功能的基础上减少对RAM的占用,这使LwIP协议栈适合在低端的嵌入式系统中使用。


LwIP的主要特性:

  • 支持多网络接口下的IP转发;
  • 支持ICMP协议;
  • 包括实验性扩展的UDP(用户数据报协议);
  • 包括阻塞控制、RTT 估算、快速恢复和快速转发的TCP(传输控制协议);
  • 提供专门的内部回调接口(Raw API),用于提高应用程序性能;
  • 可选择的Berkeley接口API (在多线程情况下使用) ;
  • 支持ppp;
  • 支持IP fragment的;
  • 支持DHCP协议,动态分配ip地址;

Data Plane Development Kit,简称DPDK,意为数据平面开发套件,是由6WIND,Intel等多家公司开发,主要基于Linux系统运行,用于快速数据包处理的函数库与驱动集合,可以极大提高数据处理性能和吞吐量,提高数据平面应用程序的工作效率。

参考图书

书名ISBN作者出版社出版日期备注
DPDK应用基础9787115426048唐宏人民邮电出版社2016-08-01P,W
深入浅出DPDK9787111537830朱河清机械工业出版社2016-05-01P,W
Linux开源网络全栈详解:从DPDK到OpenFlow9787121367861英特尔亚太研发有限公司电子工业出版社2019-06-01P,W
Linux高性能网络详解:从DPDK、RDMA到XDP9787115609649刘伟人民邮电出版社2023-04-01

网络原理

书名ISBN作者出版社出版日期备注
TCP/IP详解 卷1:协议(原书第2版)9787111453833[美]W.理查德.史蒂文斯机械工业出版社2016-06-01P,Z
TCP/IP详解 卷2:实现9787111617938[美]W.理查德.史蒂文斯机械工业出版社2022-04-01P,Z
TCP/IP详解 卷3:TCP事务协议、HTTP、NNTP和UNIX域协议9787111617778[美]W.理查德.史蒂文斯机械工业出版社2019-02-01P
图解TCP/IP:第5版9787115318978[日]竹下隆史人民邮电出版社2013-07-01P
网络是怎样连接的9787115441249[日]户根勤人民邮电出版社2021-04-01P,W,Z
TCP是怎样工作的9787115610744[日]安永辽真人民邮电出版社2023-03-01
深入浅出TCP/IP9787522614946[日]宫田宽士水利水电出版社2023-07-01

源码分析

书名ISBN作者出版社出版日期备注
深入理解Linux网络技术内幕9787508379647[美]ChristianBenvenuti中国电力出版社2009-09-01P
Linux内核源码剖析—TCP/IP实现 上下册9787111323730樊东东/莫澜机械工业出版社2011-01-01P
追踪Linux TCP/IP代码运行–基于2.6内核9787512400481秦健北京航空航天大学出版社2010-05-01P
精通Linux内核网络9787115392930[以]罗森人民邮电出版社2015-06-01P
Linux内核网络栈源代码情景分析9787115216267曹桂平人民邮电出版社2010-01-01P

深度学习Debian操作系统,所涉及的图书、官方资料以及其他网站。

0x01 官方资料#用户手册

用户手册: https://www.debian.org/doc/user-manuals

1 Debian常见问题(FAQ)

用户常问的问题。

名称网址备注
Debian软件包https://packages.debian.org/search?keywords=debian-faqdebian-faq
文档入口https://www.debian.org/doc/user-manuals#faq
英文版本https://www.debian.org/doc/manuals/debian-faq/index.en.htmlHTML版本
https://www.debian.org/doc/manuals/debian-faq/debian-faq.en.pdfPDF版本
中文版本https://www.debian.org/doc/manuals/debian-faq/index.zh-cn.html中文无PDF
Git地址https://salsa.debian.org/ddp-team/debian-faq

图书与内核版本

书名ISBN作者Linux内核版本备注
深入Linux内核架构9787115227430[德]莫尔勒linux-2.6.24
深入理解Linux内核(第三版)9787508353944[美]博韦/西斯特linux-2.6.11
Linux内核设计与实现(第三版)9787111338291[美]拉芙linux-2.6.34
Linux内核源代码情景分析9787308027038毛德操/胡希明linux-2.4.0
Linux技术内幕9787302451006罗秋明linux-3.13
 
Linux内核源码剖析—TCP/IP实现9787111323730樊东东/莫澜linux-2.6.20
追踪Linux TCP/IP代码运行–基于2.6内核9787512400481秦健linux-2.6.26
深入理解Linux网络技术内幕9787508379647[美]ChristianBenvenutilinux-2.6.xlinux-2.6.11
精通Linux内核网络9787115392930[以]罗森linux-3.9
Linux内核网络栈源代码情景分析9787115216267曹桂平linux-1.2.13
深入理解Linux网络:修炼底层内功,掌握高性能原理9787121434105张彦飞linux-3.10

0x01 操作系统原理

书名ISBN作者出版社出版日期备注
操作系统设计与实现 第三版 上册9787121261930[美]塔嫩鲍姆电子工业出版社2015-06-01P,Z
操作系统设计与实现 第三版 下册9787121026485[美]塔嫩鲍姆电子工业出版社2007-03-01P
现代操作系统:原理与实现9787111666073陈海波/夏虞斌机械工业出版社2020-10-01P
操作系统真象还原9787115414342郑钢人民邮电出版社2016-03-01P
操作系统概念 第十版9787111732853[美]亚伯拉罕.西尔伯沙茨机械工业出版社2019-09-01
操作系统—精髓与设计原理 第九版9787121388316[美]William Stallings电子工业出版社2020-07-01
Operating Systems: Three Easy Pieces(OSTEP)[D1], [D2]

上节 我们主要讲解了HAProxy的基本知识,以及事关HAProxy的重要资源。我们知道HAProxy是众多负载均衡器中非常重要的一个,而本系列文章就是围绕其使用、管理以及原理来展开。在深度学习之前,我们先安装HAProxy,运行起来,直观感受下它的魅力。

HAProxy是一款开源的、高性能的、基于TCP(四层)和HTTP(七层)应用的负载均衡软件,借助HAProxy可以免费、快速、可靠地部署基于TCP和HTTP应用的负载均衡解决方案。

HAProxy作为一款专业的负载均衡软件,其主要特性如下:

  • 高可靠性和高稳定性。HAProxy同时数以万计的并发连接,对内存和CPU资源消耗较低,其性能可与硬件级F5相媲美。
  • 支持轮循、加权轮循、源地址保持、RI、rdp-cookie等多种负载均衡算法。
  • 支持url检测后端服务健康度。
  • 支持原生SSL。
  • 支持ACL。
  • 支持session保持。
  • 支持连接拒绝、全透明代理。
  • 拥有一个功能强大的服务器状态监控页面,通过此页面可以实时了解系统的运行状况。
  • 自身有完美的热备方案(与Keepalived配合部署)。

工欲善其事必先利其器,本文记录HAProxy的重要资源,通过学习这些资料深度掌握HAProxy的部署、管理和原理等方面的知识。

Nginx是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点开发的,其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而闻名。

负载均衡(Load Balance)就是将操作合理有效分解到多个操作单元执行,从而扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。负载均衡有硬件负载和软件负载之分。

在大多数互联网公司中,普遍使用软件形态的负载均衡器,并且基于所处理的协议区分为两种不同的系统:

  • 四层负载均衡,也被称为网络负载均衡。仅用于对TCP、UDP流量进行处理。四层负载均衡在转发中主要基于IP地址、端口等信息。 四层负载均衡的开源软件包括LVS、DPVS、Katran等,分别代表了三种方案:Linux内核,DPDK,eBPF。
  • 七层负载均衡,也被称为应用负载均衡。支持HTTP、HTTPS、SSL、TLS等协议的处理。 七层负载均衡在转发中可以利用应用层的信息,如HTTP的请求头部,而这些信息对四层负载均衡来说是不可见的。 七层负载均衡的开源软件包括Nginx、HAProxy、BFE、Traefik、Envoy等。

上文我们使用apt安装了Thrift开放框架,apt仓库中的Thrift是0.16.0版本,并不是官方最新版本。如果为了使用新的特性,我们需要自行编译最新版本。本文介绍采用从源代码编译的方式,来安装Thrift-0.19.0版本。

Thrift在Ubuntu/Debian系统上的安装一般有两种方式:

  • 一是APT仓库安装,简单方便,但这种方式安装的软件并非官方最新版本,版本更新有一定延迟;
  • 二是从源代码编译安装,可以编译使用最新特性版本,但过程略显复杂,需要有一定的技术功底;

Thrift是一个可扩展、跨语言的服务开发框架。它使用代码生成引擎,形成了一个可以高效和无缝连接Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml等语言的开发栈。

Thrift使用IDL描述语言来定义软件服务,并经过它的编译器将IDL服务翻译成骨架文件以及通信协议代码。它通常被当作一个远程过程调用(RPC)框架来使用,是由Facebook为“大规模跨语言服务开发”而开发的。

Google Test,简称gtest,是Google出品的C++单元测试框架。基于该框架,我们可以编写和运行单元测试、集成测试和功能测试。本系列博文,重点讲解gtest的使用方法和实现原理。

在Linux类系统上采用源码编译安装软件,一般就是 ./configure & make & make install 这三步。而configure文件的生成一般来自Autotolls工具,本系列文章探究Autotools的使用方法和实现原理。

书接上文,目前已知有两处源代码下载地址,代码稍微不同,我们分别使用不同的源代码包进行编译安装,方法如下所述。

ZooKeeper是一个分布式的,开源的分布式应用程序协调服务,是Google的Chubby一个开源实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。目标是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

ZooKeeper以Fast Paxos算法为基础,Paxos算法存在活锁的问题,即当有多个proposer交错提交时,有可能互相排斥导致没有一个proposer能提交成功,而Fast Paxos做了一些优化,通过选举产生一个leader ,只有leader才能提交proposer。因此,要想弄懂ZooKeeper首先得对Fast Paxos有所了解。

crun是一个快速轻量级、低内存、全功能、符合OCI规范、用于运行容器的Runtime,与runc一样可以用于创建、部署容器,它使用C语言开发。

本文记录手工编译crun以及使用crun创建容器的方法,供后续学习源代码做准备。