最近在构建一个基于 debian 的网络操作系统 vyos,由于这个项目很多地方不完善,只能一步步跟着编译,一步步修改源码,吃了不少苦头。在构建 iso 的时候,遇到一个新的东西,以前没见过,也不知道是什么作用。翻译过来叫做固件(firmware)。
live-build、live-boot 和 live-config
要构建一个 live system 主要使用到的有三个工具:live-build,live-boot 和 live-config。这三个工具分别具备不同的职责:
- live-build,是一组用于构建 live system 的脚本的集合。你可以在
/usr/lib/live/build
下找到它们,并在/usr/share/live/build
下找到这些脚本使用的 functions; - live-boot,是一组用于为initramfs-tools提供钩子的脚本的集合,用于生成一个能够引导 live system 的 initramfs;
- live-config,是一组用于在live-boot之后自动配置 live system 的脚本的集合,它能够处理类似于设置 hostname,locales 和 timezone,创建用户等。
live system
我之前做过类似的 Linux 操作系统打包工作,但是对 live system 并没有一个整体的概念,趁这次编译 vyos 的机会梳理一下相关的知识。本文绝大部分内容来自 Debian live manual中的第四节The basics。
常用的镜像类型有三种:
iso-hybrid
,最通用的镜像类型,可在虚拟机、光学媒介或者 USB 便携式存储设备使用;hdd
,在某些特殊情况下这个类型更加合适,后文有解释;netboot
,用于网络安装的镜像,常用于运维批量安装。
vyos 构建
概述
VyOS 是一个基于 Debian GNU/Linux 的开源网络操作系统。它提供基于软件的路由、防火墙以及 VPN 功能。
VyOS 提供了一个免费的路由平台,一个能够直接与知名的商用网络厂商竞争的解决方案。由于 VyOS 能够运行在标准的 amd64、i586 和 ARM 平台上,它能够作为路由或者防火墙平台部署到云上。
Tomcat 使用及原理
以前开发 java web 应用的时候简单地使用过 tomcat,但是对其理解并不深,很多配置项都不清楚。后来长时间不做 web 开发都快忘光了,现在补补课:)
Microservices-Not A Free Lunch!
最近入职了新的公司,新公司所使用的技术栈和我之前接触的东西有很多不同,现在开始要疯狂补课了:),本文是翻译自Benjamin Wootton在 2014 年发表的一篇文章,主要阐述了微服务的一些优势以及因此带来的劣势。
QEMU 运行流程分析
最近在面试,之前被问到一个问题,结果因为时间太久了忘记了,自己有没有复习,导致场面一度很尴尬。今天有时间就再来复习一下,顺便做个笔记方便以后翻看。
Mastering KVM Virtualization
Mastering KVM Virtualization读书笔记第二章——KVM 内部构件
概述
第二章主要包含以下 4 个内容:
- libvirt、QEMU 和 KVM 的内部实现;
- 重要的数据结构和代码位置;
- vCPUs 的运行流程;
- 这些东西是怎么协作的;
Mastering KVM Virtualization
Mastering KVM Virtualization读书笔记第一章——理解 Linux 虚拟化
概述
第一章主要包含以下 5 个内容:
- Linux 虚拟化及基本概念;
- 为什么选择 Linux 虚拟化;
- Hypervisor/VMM;
- Linux 虚拟化在云中向你提供什么;
- 公有云和私有云;
结构体内存分布差异
今天在对之前 Cygwin 下编译调用 Windows 动态链接库的项目 () 进行调试的时候发现有一个数据结构里的值总是出错,经过一番调试之后发现是不同环境对结构体内存布局解析不同导致的。