- 博客(93)
- 资源 (7)
- 收藏
- 关注
转载 基于busybox的bootchart分析
一、Bootchart简介Bootchart官网http://www.bootchart.org,已经很久没有更新了。Bootchart的目的是将启动阶段的性能可视化(Boot Process Performance Visualization)。具体做法是在启动阶段通过采样/proc文件系统来搜集启动阶段的信息(如CPU负载,进程信息,磁盘访问等),然后通过另外的工具将搜集到的数据以可视化的方式进
2017-09-25 13:36:38
1939
原创 深入理解Linux内核-第五章笔记
内核同步内核同步内核如何为不同的请求提供服务内核抢占同步原语每CPU变量原子操作优化和内存屏障自旋锁顺序锁读-拷贝-更新RCU信号量完成量禁止本地中断对内核数据结构的同步访问避免竞争条件的实例内核如何为不同的请求提供服务内核抢占如果进程正执行内核函数时,即它在内核态运行时,允许发生内核切换,这个内核就是抢占的。同步原语各种同步技术: 技术 说明 适用范围
2017-07-26 20:28:58
827
原创 深入理解Linux内核-第四章笔记
第四章 中断和异常中断信号的作用中断与异常IRQ和中断高级可编程中断控制器异常中断描述符表中断和异常的硬件处理中断和异常处理程序的嵌套执行初始化中段描述符表中断门陷阱门及系统门IDT的初步初始化异常处理中断处理IO中断处理第四章 中断和异常中断interrupt通常被定义为一个事件,改事件改变处理器执行的指令顺序。这样的事件与CPU芯片内部外部硬件电路产生的电信号相对应
2017-07-26 20:28:13
962
原创 深入理解Linux内核 第三章笔记
深入理解Linux内核深入理解Linux内核第三章 进程进程轻量级进程和线程进程描述符进程切换创建进程撤销进程第三章 进程进程是任何多道程序设计的操作系统中的基本概念。通常把进程定义为程序执行的一个实例。在Linux中,常把进程称为任务task或线程thread。进程、轻量级进程和线程进程类似人类:它们被产生,有或多或少的生命,可以产生一个或多个子进程,最终都要死亡。一个微小的差异是进
2017-07-12 20:19:58
856
原创 深入理解Linux内核 第二章笔记
深入理解Linux内核深入理解Linux内核第二章 内存寻址内存地址硬件中的分段Linux中的分段硬件中的分页Linux中的分页第二章 内存寻址内存地址引用内存地址memory address是访问内存单元内容的一种方式。需要区分以下三种不同的地址: - 逻辑地址 logical address 包含在机器语言指令中用来指定一个操作数或一条指令的地址。每一个逻辑地址都由一个段seg
2017-07-11 11:06:01
653
原创 深入理解Linux内核 第一章笔记
第一章 绪论Linux与其他类Unix内核的比较硬件的依赖性Linux版本操作系统基本概念Unix文件系统概述Unix内核概述第一章 绪论Linux是Unix-like操作系统大家族中的一员。从20世纪90年代末开始,Linux突然变得非常流行,并且跻身于那些知名的商用Unix操作系统之列。这些Unix系统包括AT&T公司(现由SCO公司所有)开发的System V Release 4
2017-07-08 16:27:16
946
原创 Linux等待队列waitqueue
waitqueuewaitqueue创建一个等待队列让当前进程开始等待1 wait_event2 wait_event_timeout3 wait_event_interruptible4 wait_event_interruptible_timeout唤醒等待队列上的进程内核中提供了等待队列,作用是实现阻塞操作。等待队列用于使进程等待某一特定的事件发生而无需频繁的轮询,进程在等待
2017-06-15 11:25:31
1641
1
原创 shell command命令
近期遇到一个比较少见的命令command,详细如下:command 是一些shell的内建命令我本机使用的是dash,服务器使用的是bash,其他shell没有测试 - dashuser@PC:~/debug/bin/test$ ll /bin/shlrwxrwxrwx 1 root root 4 12月 8 2015 /bin/sh -> dash*user@PC:~/debug/bi
2017-06-08 10:55:09
17804
1
原创 uptime 简介
uptimeuptimeuptime 命令说明uptime 参数说明uptime 输出说明uptime - Tell how long the system has been running. uptime命令能够打印系统总共运行了多长时间和系统的平均负载。uptime命令可以显示的信息显示依次为:现在时间、系统已经运行了多长时间、目前有多少登陆用户、系统在过去的1分钟、5分钟和15分钟
2017-06-08 09:52:55
861
原创 Linux __stringify && __stringify_1
Linux中有个stringify的头文件,里面主要的内容如下:#ifndef __LINUX_STRINGIFY_H#define __LINUX_STRINGIFY_H/* Indirect stringification. Doing two levels allows the parameter to be a * macro itself. For example, co
2017-03-08 10:54:01
1013
原创 shell, subshell, pipes and exit
Shell中的管道以及exit,众所周知,shell中的exit是退出当前shell的意思,但是某日工作中遇到了下面这种情况,在管道中使用exit。GNU bash,版本 4.3.11user@PCxulu:~/debug/test$ cat test.sh#!/bin/bashcat test.txt | while read oldo echo $ol exitdone
2017-02-21 10:12:09
694
原创 Openwrt Package xxx is missing dependencies for the following libraries 问题分析
Openwrt编译时通常会遇到如下问题:Openwrt Package xxx is missing dependencies for the following libraries: libxxx.so.*首先检查package/xxx/Makefile中的DEPENDS是否加入了对应的依赖,如果加入了还出错,可能就是DEPENDS后面加入的库名字不正确-------
2016-10-12 10:23:38
15529
原创 openwrt环境下,编译kernel时,开启CONFIG_INPUT_MOUSE编译出错
编译kernel时,开启CONFIG_INPUT_MOUSE编译出错,提示psmouse.ko errorundefined reference to `lifebook_detect' undefined reference to `fsp_detect' 原因是gcc版本太高(gcc 5.x)导致修改文件 drivers/input/mous
2016-10-09 19:50:47
1085
原创 移植tiobench到openwrt
移植tiobench到openwrt出现各种编译问题,汇总如下: error: conflicting types for 'aligned_alloc'和stdlib.h中的定义冲突 —— 错误原因是tiotest.c中的aligned_alloc和stdlib.h中的函数重名了,对tiotest.c中的该函数aligned_alloc进行重命名,比如换成tiobench_align
2016-10-09 19:40:02
1122
原创 Linaro GCC不支持arm926ej-s
使用linaro gcc 4.6 2012-02交叉编译工具链编译的程序放到arm926ej-s上面,不能跑。经过一番google发现linaro gcc应该不支持ARMV5的架构。参考1:WikipediaLinaro focuses on the use of the ARM instruction set in its versions 7a (32-bit) and 8
2016-09-28 15:49:56
1547
原创 bash中的complete作用——TAB参数自动补全
阅读build/envsetup.sh文件时,发现了一句不太理解:complete -F _lunch lunch这里的意识是,当你在命令行输入lunch 然后按下见,会将_lunch函数的输出显示到终端上,友好的提示你lunch后可能的参数。参考:http://linux.about.com/library/cmd/blcmdl1_complete.h
2016-09-22 11:24:43
1965
原创 kernel 不能找到xz格式的initramfs
遇到一个问题,使用xz压缩的initramfs,启动kernel过程中失败,使用gzip压缩的initramfs,kernel正常启动。首先检查是否开启kernel选项CONFIG_INITRAMFS_SOURCE、CONFIG_RD_XZ、CONFIG_INITRAMFS_COMPRESSION_XZ等等,没有问题。后来google发现,在生成initramfs.cpio
2016-09-21 17:36:38
1742
翻译 git查看各个branch之间的关系图
提供两种方法:1. 使用git log命令git log --graph --decorate --oneline --simplify-by-decoration --all说明:--decorate 标记会让git log显示每个commit的引用(如:分支、tag等) --oneline 一行显示--simplify-by-decor
2016-09-19 11:27:09
68144
1
转载 shell中exec解析
exec和source都属于bash内部命令(builtins commands),在bash下输入man exec或man source可以查看所有的内部命令信息。bash shell的命令分为两类:外部命令和内部命令。外部命令是通过系统调用或独立的程序实现的,如sed、awk等等。内部命令是由特殊的文件格式(.def)所实现,如cd、history、exec等等。 在说明exe和so
2016-09-10 15:02:49
565
转载 shFlags Introduction
https://github.com/kward/shflags/wiki/Documentation12xIntroductionThis is the documentation for the shFlags 1.2.x release series.At its core, shFlags is simply a library that you include
2016-09-10 14:46:02
1198
翻译 Ostro™ Project 简介
Ostro操作系统是特别为物联网建造的操作系统,开发者可以马上用,节省了很多时间,功能也非常完善,包括覆盖全面的连接标准,支持包含蓝牙、WiFi和NFC等连接方式,并且支持多种如IoTivity的设备对设备互联互通标准;包含安全启动、强制访问控制、加密标准和软件安全更新协议等安全措施;先进的设备管理以及直观的开发工具。是一套基于Linux并且为物联网智能设备特别量身订做的开源操作系统,它可
2016-08-31 09:45:11
1457
转载 Yocto、Poky、OpenEmbedded 之间的关系
1. Why not just call this project Poky? What has changed between Poky and the Yocto Project?The Yocto Project is an umbrella project. Accordingly, it includes a number of projects and resources sp
2016-08-31 09:41:20
7064
1
翻译 buildroot VS yocto
翻译自Buildroot vs. OpenEmbedded or Yocto Project: A Four Hands Discussion - 2016.pdfBuildroot 和 yocto的对比对比内容:(1) 嵌入式构建系统 目标是构建一个完整的,客制化的嵌入式Linux系统 包括root filesystem, toolchain, k
2016-08-31 09:39:05
12170
2
原创 yocto 一些细节
参考Embedded_Linux_Projects_Using_Yocto_Project_Cookbook.pdf(1) source oe-init-build-env qemuarm 该命令设置整个project的环境。后面的qemuarm表示将构建一个qemuarm的目录,即“build”目录(2) Poky包含了一些默认的target,可通过如下
2016-08-31 09:35:57
12573
1
原创 Link-time optimization LTO分析
参考Link-time optimization for the kernel —— 2012 内核开发人员总是在寻找让系统运行更快的方法,在优化方面投入了大量的工作。所以当一个不需要重写关键性能相关的代码就可以让内核变得更快的机会出现时,很自然的,吸引了很多人的兴趣。新版本gcc支持的Link time optimizations LTO功能是不是这样的一个机会还有待验证,
2016-08-31 09:33:00
5221
原创 poky bitbake 报错
bitbake core-image-satoERROR: OE-core's config sanity checker detected a potential misconfiguration. Either fix the cause of this error or at your own risk disable the checker (see sanity.co
2016-08-24 15:01:52
9841
转载 Source命令
Source命令source命令用法:source FileName作用:在当前bash环境下读取并执行FileName中的命令。注:该命令通常用命令“.”来替代。如:source .bash_rc 与 . .bash_rc 是等效的。注意:source命令与shell scripts的区别是,source在当前bash环境下执行命令,而scripts是启动一个子shell来
2016-08-23 13:35:11
600
转载 kthreadd khelper 内核线程
kthreadd:这种内核线程只有一个,它的作用是管理调度其它的内核线程。它在内核初始化的时候被创建,会循环运行一个叫做kthreadd的函数,该函数的作用是运行kthread_create_list全局链表中维护的kthread。可以调用kthread_create创建一个kthread,它会被加入到kthread_create_list链表中,同时kthread_create会weak u
2016-08-05 10:01:26
1223
转载 Linux内核中的常用宏container_of其实很简单
http://blog.youkuaiyun.com/npy_lp/article/details/7010752 开发平台:Ubuntu11.04 编 译器:gcc version 4.5.2 (Ubuntu/Linaro4.5.2-8ubuntu4) Container_of在Linux内核中是一个常用的宏,用于从包含在某个结构中的指针获得结
2016-06-21 14:24:32
606
转载 CFS中的虚拟运行时间vruntime
一直对CFS(Completely Fair Scheduling,完全公平调度)中的虚拟运行时间(vruntime)不太理解,最近在看cgroup中的cpu子系统算是搞清楚了它是怎么回事。先 简单说一下CFS调度算法的思想:理想状态下每个进程都能获得相同的时间片,并且同时运行在CPU上,但实际上一个CPU同一时刻运行的进程只能有一个。 也就是说,当一个进程占用CPU时,其他进程就必须等待
2016-06-20 16:17:37
926
转载 构建gcc交叉编译工具链
如何构建一个GCC交叉编译工具链GCC不仅是一个编译器,它是一个开源工程,可以让你建立各种编译器。一些编译器支持多线程,一些支持共享库,一些支持Multilib(典型的应用是在64位机上运行32位应用程序),这些都取决于在编译 编译器 时的配置。本文档将说明怎么建立一个交叉编译器。你需要一个已经安装gcc的Unix-like环境。 一、需要的包Debian系统,首先需要安装
2016-06-14 13:36:17
9634
1
转载 Linux 打开/关闭CPU命令
怎么关闭CPU下面的语法表示关闭CPU core #4:echo 0 > /sys/devices/system/cpu/cpu3/online怎么开启CPU下面的语法表示打开CPU core #4:echo 1 > /sys/devices/system/cpu/cpu3/online怎么验证有没有开启或关闭呢?grep "processor" /proc/c
2016-06-14 13:31:20
9858
转载 busybox mdev
这篇文章说的很好http://blog.chinaunix.net/u1/38994/showart_2022040.html:如何使用busybox精简版本udev程序--mdev动态创建插入的u盘和鼠标等设备busybox的mdev是一个精简了的udev管理程序,它可以间接的以hotplug方式被内核调用,进而在arm平台上/dev目录下动态创建设备节点,因为hotplug会被内核发送
2016-06-07 16:50:21
1394
原创 删除libnss*库后,busybox login遭遇login incorrect
针对glibc删除了所有的libnss库,开机时在输入密码root后,出现login incorrect错误选项,而uclibc没有此问题。具体原因: GNU Libc (glibc) uses the Name Service Switch (NSS) to configure the behaviorof the C library for the local environm
2016-06-02 11:07:08
1346
翻译 如何构建Ext4格式镜像文件
翻译自:http://forum.xda-developers.com/showthread.php?t=1974014我们将制作一个新的ext4格式镜像文件,命名为system_new.img,其大小为240MB。 第一步 Linux环境(我使用Ubuntu) 准备两个目录: mkdir system #将mount旧的sys
2016-05-19 13:44:33
2101
1
转载 查看一个可执行文件或者库的依赖库
经常需要查看一个可执行文件或者库依赖那些库文件。通常情况下这很好办,使用ldd命令就可以了,比如:123456$ ldd /bin/bash linux-vdso.so.1 => (0x00007ffd8ffef000) libtinfo.so.5 => /lib/x86_64-linux-g
2016-05-09 20:15:30
29197
原创 ramdisk initrd ramfs initramfs区别与联系
问题:当Linux内核启动时,必须找到并执行第一个用户程序,通常是init。用户程序存放在文件系统,故Linux必须找到并挂载第一个文件系统。通常,可用的文件系统都列在/etc/fstab,所以mount可以找到它们。但是/etc/fstab本身存在与文件系统中。因此,这类似鸡生蛋蛋生鸡的问题。为解决该问题,内核开发者建立了内核命令列表选项root=,用来制定root文件系统存在于哪个
2016-05-06 15:19:27
5657
转载 Embedded Linux - File System
翻译 http://elinux.org/File_Systems文件系统目录1 简介1.1 MTD1.2 UBI1.3 分区1.4 eMMC and UFS2 嵌入式文件系统2.1 AXFS2.2 Btrfs2.3 CramFS2.4 F2FS2.5 InitRAMFS2.6 JFFS22.7 LogFS2.8 NFS2.9 PRAMFS2.1
2016-05-06 11:24:00
1539
原创 Linux根文件系统裁剪 论文阅读笔记
Linux裁剪方法研究 2006 2Linux裁剪原理: 2Linux嵌入式系统根文件系统的选择与制作 2006 3Linux嵌入式系统根文件系统的选择与制作 2006 3基于ARM的嵌入式Linux操作系统移植的研究 2006 5基于ARM的嵌入式文件系统研究与设计 2010 6基于嵌入式Linux的Ext2根文件系统制作分析 2015 6嵌入式Linux裁剪
2016-05-06 09:12:47
6750
selinux简明学习指南
2017-12-05
Configuring the SELinux Policy
2017-12-05
SELinux - an introduction
2017-12-05
openg读取3ds文件,含view3ds软件
2011-12-10
DICOMTOBMP
2010-10-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人