Linux Kernel
文章平均质量分 72
2022-07-17
这个作者很懒,什么都没留下…
展开
-
QEMU仿真aarch64处理器运行Linux kernel
编译ARM64仿真器QEMU编译Linux内核tar xvf linux-5.13.8.tar.xzmake ARCH=arm64 CROSS_COMPILE=aarch64-none-linux-gnu- defconfigmake ARCH=arm64 CROSS_COMPILE=aarch64-none-linux-gnu- Image -j8制作根文件系统基于busybox制作根文件系统tar jxvf busybox-1.33.1.tar.bz2make ARCH=arm64 CR原创 2021-08-07 19:52:31 · 2911 阅读 · 0 评论 -
qemu虚拟机与外部网络的通信
转载地址:http://blog.chinaunix.net/uid-26061689-id-2981914.html一、基本概念为了使虚拟机能够与外界通信,Qemu需要为虚拟机提供网络设备。Qemu支持的常用网卡包括NE2000、rtl8139、pcnet32等。命令行上用-net nic为虚拟机创建虚拟机网卡。例如,qemu的命令行选项转载 2014-03-16 15:56:54 · 3898 阅读 · 0 评论 -
Ubuntu下启动tftp服务器的方法
1、安装软件包sudo apt-get install tftpd tftp xinetd2、建立配置文件在/etc/xinetd.d/下建立一个配置文件tftpsudo vi /etc/xinetd.d/tftp内容如下service tftp { socket_type = dgram protocol转载 2014-03-21 21:24:12 · 4132 阅读 · 0 评论 -
Debian下Cannot set LC_CTYPE to default locale: No such file or directory解决方法
把语言环境变量改为英文将Ubuntu系统语言环境改为英文的en_US.UTF-8查看当前系统语言环境locale编辑配置文件,将zh_US.UTF-8改为en_US.UTF-8,zh改为ensudo nano /etc/default/localeLANG="en_US.UTF-8"LANGUAGE="en_US:en"继续查看更改后的系统语言变量,如果出现下列错误转载 2014-06-01 10:03:53 · 9177 阅读 · 0 评论 -
【转载】ubuntu下linux内核源码阅读工具和调试方法总结
http://blog.chinaunix.net/space.php?uid=20940095&do=blog&cuid=2377369一 linux内核源码阅读工具 windows下当然首选source insight, 但是linux下就没有source insight这么优秀的工具了,但是也有不少的替代品,但觉绝对部分人会选择vim+ctags+cscop转载 2014-06-13 22:52:53 · 4495 阅读 · 0 评论 -
linux源码Makefile的详细分析
转载自:http://www.cnblogs.com/amanlikethis/p/3675486.htmllinux源码Makefile的详细分析目录一、概述 1、本文的意义 2、Linux内核Makefile文件组成二、Linux内核Makefile的“make解析”过程 1 顶层Makefile阶段 1、从总目标uImage说起转载 2015-05-16 21:52:46 · 2788 阅读 · 0 评论 -
使用GNU工具链进行嵌入式编程(一)
使用GNU工具链进行嵌入式编程1. 简介2. 建立ARM实验环境3. Hello ARM4. 更多的ARM汇编原语5. 使用RAM6. 链接器7. 链接器脚本文件8. RAM中数据(举例)9. 异常处理10. C启动程序11. 使用C语言库12. 内联汇编13.....本翻译 2015-08-09 20:34:52 · 3400 阅读 · 0 评论 -
Linux内核中trace_xxxx()函数的定义
Linux中trace_xxxx()函数的定义以trace_netif_receive_skb(skb);为例该函数的定义:其中DEFINE_EVENT定义为(include/linux/tracepoint.h文件中): DECLARE_TRACE宏定义为:TP_PROTO和TP_ARGS宏定义为:原创 2015-09-03 15:50:20 · 5786 阅读 · 0 评论 -
Linux下静态库和动态库的创建和使用
在Linux下链接库分为两种静态库和动态库(又称共享库). Linux桌面系统中,常用的库放在了/lib, /user/lib等目录下.一 静态库和动态库的不同点在于代码被载入的时刻不同.静态库的代码:在编译过程中已经被载入可执行程序,因此生成的可执行文件的体积较大.共享库的代码:在可执行程序运行时才载入内存的,在编译过程中仅简单的引用,因此生成的执行行文件代码体积较小.转载 2015-10-02 09:27:25 · 1967 阅读 · 0 评论 -
利用quem+gdb调试Linux内核
1. 下载QUEM下载地址:http://wiki.qemu.org/Download;选的软件版本为:qemu-1.7.0.tar.bz2解压安装:2.下载Linux内核参考:http://blog.csdn.net/silangquan/article/details/9090915http://blog.csdn.net/gdt_a20原创 2013-12-07 16:36:11 · 3116 阅读 · 0 评论 -
Android模拟器源码Qemu Study for Android Emulator
这两天看了下android emulator的源代码,位置在android-src/external/qemu里面,编译和启动的方式很简单;[plain] view plaincopy$ ./android-configure.sh $ make $ export ANDROID_SDK_ROOT=/path/to/and转载 2014-03-14 21:49:30 · 2897 阅读 · 0 评论 -
Linux内核模块编程入门-4(Licensing和Module Documentation)
若运行在2.4内核或后面的版本,当加载所有权模块时,或注意到有如下的内容:在内核2.4或后面的版本,使用的机制是在GPL许可证下识别代码,以警告相关人员该代码是非开源的。这是通过MODULE_LICENSE()宏来完成的,通过设置许可证为GPL,这样可以防止打印警告信息,定义在linux/module.h。相似的,MODULE_DESCRIPTION()用于描述模块是干什么原创 2013-11-23 11:34:30 · 1209 阅读 · 0 评论 -
50 Most Frequently Used UNIX / Linux Commands (With Examples)
1. tar command examplesCreate a new tar archive.$ tar cvf archive_name.tar dirname/Extract from an existing tar archive.$ tar xvf archive_name.tarView an existing tar archive.$ tar tvf a转载 2012-11-24 16:03:44 · 819 阅读 · 0 评论 -
Some useful Linux Commands
Some Commands that useful in the Linux.1. command used to see the current Linux kernel version -uname -r or -uname -mrs or -uname -a(This command is used to print all info原创 2012-11-24 16:04:48 · 754 阅读 · 0 评论 -
系统引导与初始化(1)——概述
系统引导与初始化 操作系统(内核)的映像存储在某种不挥发的介质中,在开机加电时从一个不挥发的介质装入操作系统、并转入运行的映像过程,这个过程称为“引导”(bootstrap,或boot),也称为“自举”。此处的不挥发介质通常是:硬磁盘或软盘,也可以是EPROM或Flash存储器,还可以是网络中别的节点。 对于从EPROM或Flash存储器中装入映像是很简单的。因为其本身就是转载 2012-12-19 21:09:49 · 1514 阅读 · 0 评论 -
Ubuntu10.04编译安装Linux kernel 3.7.10
1. Download linux-3.7.10.bz2. You can download in the following website:http://www.kernel.org/2. Copy the linux-3.7.10.bz2 to the directory /usr/src. The command is:$ cp ~/linux-3.7.10原创 2013-02-28 22:51:02 · 1399 阅读 · 0 评论 -
Linux下pstack、strace和valgrind的使用
在Linux下进行程序开发时,需要对程序进行优化、减少程序响应时间。除了通用的对一段一段程序进行时间复杂度和空间复杂度进行分析以外,还可以将strace和pstack工具结合起来使用,直接用来找到影响程序运行时间的函数调用,再有针对地对相关函数进行代码分析和优化,对于几万行的代码的大型项目来说,该方法比漫无目的的看代码效率高很多。其中,strace跟踪程序使用的底层系统调用,可原创 2013-05-19 10:44:18 · 2856 阅读 · 0 评论 -
【驱动学习】Essential Linux Device Driver学习笔记(一)
由于Linux提供免费的源代码,因此可以Linux的源码,定制自己的内核,让设备在几秒钟之内启动。 一、Linux系统的演进1991年,Linux Torvalds开发了Linux操作系统。第一次发布只支持Intel 386处理器后来,内核复杂性逐步增加,支持众多体系架构、多处理器硬件和高性能集群(x86、IA64、ARM、PowerPC、Alpha、MIPS和SPARC等)原创 2013-07-20 17:23:26 · 1916 阅读 · 0 评论 -
Linux内核模块编程入门——Hello World
在学习C/C++语言,入门的程序都是输出hello world,那么学习内核模块编程,也从输出Hello World开始。首先,从最简单模块开始。1)编写程序hello-1.c#include #include int init_module(void){ printk(KERN_INFO "Hello World 1.\n"); return 0;}void原创 2013-10-07 15:13:57 · 2702 阅读 · 0 评论 -
Linux内核模块编程入门-2
宏:MODULE_LICENSE():设置许可证为GPLMODULE_DESCRIOTION():用于描述module的用途MODULE_AUTHOR():声明module的作者MODULE_SUPPORT_DEVICE():声明module支持的设备类型这些宏都定义在linux/module.h中,内核自身不能使用。原创 2013-11-23 10:42:07 · 1161 阅读 · 0 评论 -
Linux内核模块编程入门-3(__init和__exit宏)
在内核2.2及以后的版本中,注意到init和cleanup函数的定义的变化,一旦init函数完成了内置的驱动,__init宏让init函数丢弃,同时释放内存,对于可加载的模块不适用。__initdata的原理类似与__init,只是__initdata由于init变量而不是函数。当模块从kernel中卸载时,__exit宏让函数删除。类似于__exit,对于可加载模块没有效原创 2013-11-23 11:04:22 · 1795 阅读 · 0 评论 -
Linux内核中__init, __initdata, __initfunc(), asmlinkage, ENTRY(), FASTCALL()等作用
在阅读Linux内核是,常见到这些宏 __init, __initdata, __initfunc(), asmlinkage, ENTRY(), FASTCALL()等等。它们定义在 /include/linux/init.h 和 /include/linux/linkage.h 以及其他一些.h 文件中。 1. __init 位置:/include/linux/i转载 2012-11-18 08:54:42 · 2080 阅读 · 0 评论