1. 网址 1.1. Debian 官网:https://www.debian.org 下载链接: https://www.debian.org/distrib https://www.debian.org/distrib/netinst 如果不使用图形界面,可以下载网络安装ISO。 1.2. ElementaryOS elementaryOS基于Ubuntu。 https://elementary.io/zh_CN https://elementary.io 2. Debian安装 仅做一些注意事项的备忘记录和速查,不做详细介绍。 升级过程会尝试自动更新,国内安装建议断开网络或在安装步骤中不去配置网络,在安装完成后更换apt源之...
1. Docker安装 参考docker-ce | 镜像站使用帮助 | 清华大学开源软件镜像站,可以使用https://gitee.com/kingdix10/envsetup下的工具脚本。 script function debian_install_docker.sh 安装docker,使用tsinghua apt源 docker_conf_mirrors.sh 修改docker镜像源 1.1. 添加用户到docker组 安装docker需要添加用户到docker组,否则需要以root运行。 1adduser $username sudo 2adduser $username docker 2. Docker换源 国内源已经不...
1. grep 1.1. 常用选项 1# 输出start到end 2grep -o 'start.*end' file 3# 文件作为文本处理 4grep -a 'xxx' file 5# 忽略二进制文件 6grep -rsnI 'xxx' ./ 7# 递归目录 8grep -r 'xxx' ./ 9 10# 忽略大小写(-i, --ignore-case) 11# 全词匹配(-w, --word-regexp) 12# 输出计数(-c, --count) 13# 显示行号(-n, --line-number) 14# 只列出匹配的文件名(-l, --files-with-matches) 1.2. 其他选项 1#...
官方资料:Git Community Book 中文版 1. 个人gitconfig 1# cat ~/.gitconfig 2 3[color] 4 ui = auto 5 6[safe] 7# directory = * 8 9[core] 10# 支持中文 11 quotepath = false 12 editor = vim 13# 14 pager = less -x1,5 15# 支持https下保存用户名密码 16[credential] 17 helper = store 参考git 显示中文和解决中文乱码 1git config --global core.quotepath false 3. 使用git...
1. IRQ domain注册 中断控制器初始化的过程中,要向中断子系统注册irq domain。核心函数__irq_domain_add。 gic-v2使用irq_domain_create_linear,gic-v3则使用irq_domain_add_tree。 __irq_domain_add的实现在kernel/irq/irqdomain.c,逻辑并不复杂,主要就是申请struct irq_domain结构体和对各个成员进行赋值,细节可以自己分析。 1/// kernel/irq/irqdomain.c 2/** 3 * __irq_domain_add() - Allocate a new irq_domain data...
1. 设备中断注册 gic-v3的中断号划分在《IHI0069H_gic_architecture_specification.pdf》有所罗列: 前边介绍,在gic初始化时,已经使用了0-7号SGI来作为IPI。 对于设备中断,使用的是PPI和SPI。设备probe时调用irq_of_parse_and_map等函数,如timer_of_irq_init。会调用函数来向系统注册中断,常用函数有如下几个: 1/// include/linux/of_irq.h 2extern int of_irq_get(struct device_node *dev, int index); 3extern int...
1. 申请中断 __setup_irq是用于设置和注册中断的核心函数,它是request_threaded_irq等函数的内部实现。 1.1. irqaction handler和thread_fn是struct irqaction的两个重要成员,由程序员指定或在__setup_irq中自动设置, 在中断发生后的处理函数被调用。 1/// include/linux/interrupt.h 2/** 3 * struct irqaction - per interrupt action descriptor 4 * @handler: interrupt handler function 5 * @name: name of...
1. 中断入口 要处理中断,必须为handle_arch_irq赋值。 ARM64自己定义handle_arch_irq的实现。 1/// arch/arm64/kernel/irq.c 2void (*handle_arch_irq)(struct pt_regs *) __ro_after_init = default_handle_irq; 3void (*handle_arch_fiq)(struct pt_regs *) __ro_after_init = default_handle_fiq; 4 5int __init set_handle_irq(void (*handle_irq)(struct pt_regs...
1. 简介 early_irq_init完成中断子系统软件部分初始化。 irqchip_init初始化中断控制器,向系统注册struct irq_domain。 2. 中断软件子系统初始化 early_irq_init初始化数组或树,用于保存virq到struct irq_desc的转换关系。 irq_to_desc用于将virq转换为struct irq_desc指针。 2.1. 线性映射 未定义CONFIG_SPARSE_IRQ时使用线性映射,使用数组实现,静态分配,支持的最大virq由NR_IRQS决定。 1struct irq_desc irq_desc[NR_IRQS]...
1. 示例一 先看下如下代码,思考一下,结果是输出a == b还是a != b? 1#include <stdio.h> 2#include <string.h> 3 4struct test_type { 5 char name[10]; 6 int i; 7 long l; 8}; 9 10int main(void) 11{ 12 struct test_type a = { 13 "test", 1, 2 14 }; 15 struct test_type b; 16 17 b.i = a.i; 18 b.l = a.l; 19 strcpy(b.name, a.name); 20 21 if (0 ==...