arch

u-boot之make <board_name>_config执行过程分析

此生再无相见时 提交于 2019-12-17 02:00:01
  从网上下载uboot源码之后需要对源码作相应修改来支持自己的开发板,更改完源码之后需要配置。uboot(make<board_name>_config)。这里以百问网的开发板jz2440为例子,配置命令为make 100ask24x0_config。这条命令的执行过程按以下几步分析: 1、u-boot-1.1.6/Makefile简单分析 2、u-boot-1.1.6/mkconfig详细分析 3、总结make 100ask24x0_config这条命令执行后会发生什么 1、u-boot-1.1.6/Makefile简单分析。Makefile的最简单的规则如下(摘超自博客 https://blog.csdn.net/haoel/article/details/2886 ) target ... : prerequisites ... command ... ... target 也就是一个目标文件,可以是Object File ,也可以是执行文件。还可以是一个标签 (Label),对于标签这种特性,在后续的“伪目标”章节中会有叙述。 prerequisites 就是,要生成那个target 所需要的文件或是目标。 command 也就是make 需要执行的命令。(任意的Shell 命令) u-boot-1.1.6/Makefile文件下增加了支持jz2440开发板的规则

zImage内核镜像解压过程详解

廉价感情. 提交于 2019-12-09 18:16:25
在华清远见教学过程中,发现很多学员对内核镜像解压过程比较感兴趣,但网上相关的文章往往不能把关键问题讲清楚,所以写了这篇文章。 本文以linux-2.6.14内核在S3C2410平台上运行为例,讲解内核的解压过程。 内核编译完成后会生成zImage内核镜像文件。关于bootloader加载zImage到内核,并且跳转到zImage开始地址运行zImage的过程,相信大家都很容易理解。但对于zImage是如何解压的过程,就不是那么好理解了。本文将结合部分关键代码,讲解zImage的解压过程。 先看看zImage的组成吧。在内核编译完成后会在arch/arm/boot/下生成zImage。 在arch/armboot/Makefile中: $(obj)/zImage: $(obj)/compressed/vmlinux FORCE $(call if_changed,objcopy) 由此可见,zImage的是elf格式的arch/arm/boot/compressed/vmlinux二进制化得到的 在arch/armboot/compressed/Makefile中: $(obj)/vmlinux: $(obj)/vmlinux.lds $(obj)/$(HEAD) $(obj)/piggy.o \ $(addprefix $(obj)/, $(OBJS)) FORCE $(call

linux从head.s到start_kernelstart_kernel之---内核解压到重定位分析

旧街凉风 提交于 2019-12-09 16:20:00
一: arm linux 内核生成过程 1. 依据arch/arm/kernel/vmlinux.lds 生成linux内核源码根目录下的vmlinux,这个vmlinux属于未压缩,带调试信息、符号表的最初的内核,大小约23MB; 命令:arm-linux-gnu-ld -o vmlinux -T arch/arm/kernel/vmlinux.lds arch/arm/kernel/head.o init/built-in.o --start-group arch/arm/mach-s3c2410/built-in.o kernel/built-in.o mm/built-in.o fs/built-in.o ipc/built-in.o drivers/built-in.o net/built-in.o --end-group .tmp_kallsyms2.o 2. 将上面的vmlinux去除调试信息、注释、符号表等内容,生成arch/arm/boot/Image,这是不带多余信息的linux内核,Image的大小约3.2MB;    命令:arm-linux-gnu-objcopy -O binary -S vmlinux arch/arm/boot/Image 3. 将 arch/arm/boot/Image 用gzip -9 压缩生成arch/arm/boot

u-boot之顶层Makefile解析

為{幸葍}努か 提交于 2019-12-09 15:43:21
本文分析的u-boot的版本为2010.03 正常编译u-boot的流程如下 make xxx_config make all 在 u-boot之mkconfig解析 中,我们已经了解了make xxx_config做了哪些事情,今天我们就要利用它做的事情来继续分析make all这个命令。 其实make all就等于make 其实分析这个命令,也就是等于分析顶层目录下面的Makefile。下面就开始我们的探索 # 和U-Boot版本相关的一些内容 VERSION = 2010 PATCHLEVEL = 03 SUBLEVEL = EXTRAVERSION = ifneq "$(SUBLEVEL)" "" U_BOOT_VERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION) else U_BOOT_VERSION = $(VERSION).$(PATCHLEVEL)$(EXTRAVERSION) endif TIMESTAMP_FILE = $(obj)include/timestamp_autogenerated.h VERSION_FILE = $(obj)include/version_autogenerated.h 上面是一些和u-boot版本相关的信息 # 确定主机CPU架构

构建多CPU架构支持的Docker镜像

ぃ、小莉子 提交于 2019-12-07 15:21:27
作者简介: 胡晓亮目前就职于IBM Platform Computing 系统科技部云计算部门,担任云计算开发部工程师。自2013年8月开始参与OpenStack,然后又转战Spark,目前工作在K8S相关领域。 责编: 钱曙光(qianshg@csdn.net) 声明: 本篇为原创内容,CSDN独家发布,禁止未经授权的任何形式转载。 Docker简介 由于基于Hypervisor虚拟化技术仍然存在一些性能和资源使用效率方面的问题,近3年来容器技术席卷了整个互联网应用乃至IT界的技术革新,成为一种被大家广泛认可的服务器资源共享技术。它从根本上变革了应用程序的开发和发布方式,经过爆炸式的成长,容积技术的翘楚Docker实际上已经成为了容器格式和运行时的标准,大量流行的开源应用程序都宣布支持容器化,并且一些企业级的应用程序也开始往容器上迁移, Docker容器世界欣欣向荣。 Multi architecture Docker镜像 Multi architecture Docker镜像的支持让Docker向自己宣称的口号 “Build, Ship, and Run Any App, Anywhere” 更近了一大步。 那什么是Multi architecture Docker镜像呢?我们可以通过一个例子来说明。我们知道JAVA语言编写的应用程序是 “Write once, run

开始使用 Manjaro(添加源+字体渲染去模糊+软件安装+优化配置+常见错误)(30)

社会主义新天地 提交于 2019-12-06 21:02:28
1. 添加 archlinux 镜像源 1. 步骤一 向 /etc/pacman.d/mirrorlist 中添加国内镜像地址 1.1 方法1:自动添加 1、 输入如下命令查看国内镜像源,并按质量排序: sudo pacman-mirrors -i -c China -m rank ,之后会弹出一个窗口,可以选择想要的镜像源,选择确定后会自动导入 /etc/pacman.d/mirrorlist 配置文件中。 1.2 方法2:手动添加 直接在 etc/pacman.d/mirrorlist 文件后边添加如下内容,这些是根据 pacman-mirrors 命令选出以及网友推荐的比较优质的,也可以添加其它的: ## Country : China(中科大) Server = https://mirrors.ustc.edu.cn/manjaro/stable/$repo/$arch ## Country : China(清华) Server = https://mirrors.tuna.tsinghua.edu.cn/manjaro/stable/$repo/$arch 步骤一是必须的,要不然运行 步骤三 会提示找不到仓库。 2. 步骤二 编辑 pacman 配置文件 1、打开 pacman 配置文件 sudo vim /etc/pacman.conf #打开 pacman 配置文件

Arch Linux 安装

一曲冷凌霜 提交于 2019-12-06 06:28:35
查看分区信息 lsblk 处理某一个盘的分区 fdisk /dev/sda 格式化某一个分区 mkfs.ext4 /dev/sda1 挂载分区安装系统 mount /dev/sda1 /mnt pacstrap /mnt base base-devel linux vi vim grub netctl dhcpcd net-tools 记录挂载的分区表信息到新系统 genfstab -U -p /mnt >> /mnt/etc/fstab 安装启动 arch-chroot /mnt grub-mkconfig -o /boot/grub/grub.cfg grub-install /dev/sda 来源: https://www.cnblogs.com/zhangshaojian/p/11965539.html

异机恢复测试

我怕爱的太早我们不能终老 提交于 2019-12-05 19:34:42
使用此方式:异机恢复,类似手工建库 :区别在于,数据之前是有的,使用的是备份代替脚本,控制文件也是使用之前的备份 异机恢复应用场景: A:几十个G的测试库,需要将测试数据完全复制,迁移到另一个库,使用RMAN与数据泵/exp相比,具有明显优势,使用此场景快速搭建 B:灾备演练:使用备份,通过异机恢复的方式,验证备份的可用性 备份区分 :A全备传输+归档日志传输+控制文件+参数文件+密码口令文件 B全库0级备份+增量备份---- 本次实验测试: A/B A-使用0级全备:类似全库备份方式,异机恢复 B-A实验成功 后,删除所有数据及备份信息,重新再来,使用全库备份 +1级增量备份测试 异机恢复流程: 源端: 实验环境: 10.2.0.4 全库备份:参数文件 -控制文件-数据文件-归档日志文件 传输 : 备份信息从源端- 拷贝至 - 目标端 目标端: 创建准备:创建相应目录:密码文件:参数文件修改名称 参数文件修改: 使用参数文件,启动到 Nomount状态 RMAN: 使用备份的控制文件,restore恢复至,参数文件指定的控制文件名称,路径 RMAN:注册备份片:数据文件、归档日志文件注册 RMAN:restore 应用备份,还原数据文件, set修改数据文件目录结构 RMAN: recover 应用日志恢复:open打开数据库 测试 :A #开启块跟踪,本次增量备份

os 获取目录下的所有目录 和 目录下所有文件方法

半城伤御伤魂 提交于 2019-12-05 18:17:39
获取目录下的所有目录( 包括各子目录中的目录 ) import os i=0 for root,dirs,files in os.walk('D:\Desktop'): for dir in dirs: print dir i+=1 print i 获取目录下所有文件方法( 包括 各 子目录中的文件 ) import os i=0 for root,dirs,files in os.walk('D:\Desktop'): for f in files: print file i+=1 print i for list_all in os.walk(" D:\Desktop "): print list_all for root,dirs,files in os.walk("D:\Desktop"): print root,dirs,files os.walk(" D:\Desktop ")返回的是生成器 list_all是元组,元组第一项是 字符串 ,为目录路径。元组第二项是 列表 ,是第一项目录中的所有目录(只是第一项次一层的而已)。第三项是一个 列表 ,为该目录中所有的文件。 import os.path path = '/home/vamei/doc/file.txt' print(os.path.basename(path)) # 查询路径中包含的文件名 print(os

移植 linux kernel 2.6.32 至 mini2440 板

橙三吉。 提交于 2019-12-04 09:54:19
1. 移植准备 1.1 获取Linux内核源代码(linux-2.6.32.tar.gz) $ wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.tar.gz 1.2 解压内核源代码 $ tar xvzf linux-2.6.32.tar.gz 得linux-2.6.32源代码目录 1.3 指定交叉编译变量 修改总目录下的 Makefile 原 export KBUILD_BUILDHOST := $(SUBARCH) ARCH ?= $(SUBARCH) CROSS_COMPILE ?= 改为: export KBUILD_BUILDHOST := $(SUBARCH) ARCH ?= arm CROSS_COMPILE ?= /usr/local/arm/4.3.2/bin/arm-linux- 其中,ARCH 是指定目标平台为 arm,CROSS_COMPILE 是指定交叉编译器 接下来,要测试一下 linux 的编译是否能正常通过。 执行: $ make s3c2410_defconfig 使用缺省内核配置文件,s3c2410_defconfig 是 SMDK2440 的 缺省配置文件 $ make 编译时间较长 编译通过,在此我们先不必烧写到开发板验证它的正确性。 2. 开始移植 2.1