Tag: kernel
-
编译 64bit Linux Kernel 时报 genksyms 找不到
可以使用 $ make mrproper $ make cloneconfig $ make prepare-all 来解决。 不过如果报错:“/bin/sh: scripts/genksyms/genksyms: No such file or directory”,可以将 “make prepare-all” 改为 “make prepare scripts”。如下: $ make mrproper $ make cloneconfig $ make prepare scripts
-
单独编译 kernel 中某些 ko 的方法
更改 Linux kernel 驱动每次重编 kernel 引导非常费力。为了便于调试,可以通过已经有的 Makefile 使用 gcc 来对特定 module 进行编译。这样只需要将 module 以模块方式加载。可以在 linux 环境下进行简单的调试。 命令: make -C $src_path M=$(pwd) modules 例如: make -C /home/edwin/rpmbuild/BUILD/kernel-2.6.40.fc15/ M=$(pwd) modules [root@localhost ata]# ls acard-ahci.c libahci.mod.c pata_artop.c pata_it821x.c pata_piccolo.c sata_inic162x.c ahci.c libahci.mod.o pata_at32.c pata_ixp4xx_cf.c pata_platform.c sata_mv.c ahci.h libahci.o pata_at91.c pata_jmicron.c pata_pxa.c sata_mv.ko ahci.ko libata-acpi.c pata_atiixp.c pata_legacy.c pata_qdi.c sata_mv.mod.c…
-
gcc: error: elf_i386/elf_x86_64: No such file or directory
最近碰到个 PM 连接的硬盘在 Fedora 15 (FC15)中无法识别的问题,但是在 Fedora 13 中却是可以侦测到的。对比 fc13 使用的是 2.6.34,fc15 则是 2.6.40(3.0.4)。决定逐一将 kernel 降级来判断到底是从那一版的 kernel 开始出现这个问题的。那在使用 fc15 的 gcc 编译 2.6.36.2 以下 kernel 时,一直报错。 错误提示: gcc: error: elf_x86_64: No such file or directory 解决方法: 这个问题是由于 gcc 4.6 不再支持 linker-style 架构。讲 arch/x86/vdso/Makefile 中, 将以 VDSO_LDFLAGS_vdso.lds 开头所在行的 "-m elf_x86_64" 替换为 "-m64"。 将以 VDSO_LDFLAGS_vdso32.lds 开头所在行的 "-m…
-
【转】Linux Kernel 内核编译安装
一、获取内核源码文件。 从http://www.kernel.org下载内核源码包(linux-2.6.26.tar.gz)。 # cp linux-2.6.26.tar.gz /usr/src # tar -xvzf linux-2.6.26.tar.gz # ln -s linux-2.6.26 linux-2.6 二、配置内核。 1. 进入内核文件所在目录。 # cd /usr/src/linux-2.6 2. 编辑 /usr/src/linux-2.6/Makefile 文件的EXTRAVERSION的值。 EXTRAVERSION = No_Power_Management_Support # 以此标识内核 3. 运行命令make mrproper,以确保源文件处于一致、干净的状态。这个命令会删除内核配置文件.config(如果有的话)。 4. 保存默认的配置文件(/usr/src/linux-2.6/arch/x86/i386_defconfig)到安全位置,比如软盘,以便必要时恢复默认配置。 5. 使用配置工具设置内核选项。 #make config(基于文本的最为传统的配置界面,由于有几百个问题要回答,一般使用其它的配置工具。) #make menuconfig(基于文本选单的配置界面) #make xconfig(基于图形窗口模式的配置界面) #make oldconfig(使用已有的内核配置文件,仅提示一些新的特性。) 选择相应的配置时,有三种选择: “Y”- 将该功能编译进内核 “N”- 不将该功能编译进内核…
-
Linux Kernel Loglevel 和 Linux Runlevel
Linux Kernel 有 8 个级别的 loglevel: #define KERN_EMERG "<0>" /* system is unusable,系统不可用 */ #define KERN_ALERT "<1>" /* action must be taken immediately,立即执行 */ #define KERN_CRIT "<2>" /* critical conditions,紧急情况 */ #define KERN_ERR "<3>" /* error conditions,错误情况 */ #define KERN_WARNING "<4>" /* warning conditions,警告情况 */ #define KERN_NOTICE "<5>" /* normal but significant condition,常规但重要的情况 */ #define…