学习笔记-内核编译

/usr/src,/usr/local/src : 放源码的位置。下源码后放在这些位置

 tar xf linux-3.13.5.tar.xz -C /usr/src   : 解压至 /usr/src下
 ln -sv /usr/src/linux-3.13.5 /usr/src/linux : 指定一个软连接

编译内核:

    第一步:配置内核,使用一种方法
        选择要编译的模块
        make config   一项一项选择
        make allyesconfig   所有的都编译
        make allnoconfig    可选的都不编译

        cp /boot/config-* /usr/src/linux/.config        
        make menuconfig 选择编译

        make kconfig  (KDE桌面环境,并且安装了qt开发环境)
        make gconfig  (GNome桌面环境,并且安装了gkt开发环境)
    第二步:编译
        make -j # (多核cpu -j可以最大化的发挥cpu性能,#表示个数)
    第三步:安装模块
        make modules_install
    第四步:安装内核
        make install
    第五步:检查,测试
        grub.conf中是否已经有新的内核项配置
        重启系统已尝试使用内核

    生成的内核和文件系统在/boot 目录下vimliunz-xxxx   initrf

    注意:
        screen命令
            screen:打开一个新的screen
            隐藏:ctrl+a,b
            重新打开:
                1 screen -ls 显示id
                2 screen -r id 重新连接screen
            exit:关闭

二次编译如何做清理操作:

#make clean:只清理编译生成的文件,但不删除配置文件 .config
#make mrproper: 删除编译生成的文件和.config
#make disclean: 重置源代码树

如何实现内核的部分编译:

   1.只编译某子目录下的相关代码:
      cd /usr/src/linux
      make 子目录文件 

      make SUBDIR=arch/
      make drivers/net/
   2.只编译部分模块
      make M=path/to/dir/

      make M=drivers/net/
   3.只编译某一个模块
      make path/to/dir/module_name.ko

      例:make drivers/net/e1000/e1000.ko
   4.将编译后的结果放置于别的目录中
      make O=/path/to/somewhere

如何实现交叉编译

make ARCH=架构

以arm为例:

make ARCH=arm 默认编译文件

查看硬件信息:

lspci
lscpu
lsblk
lshal = hal-device
dmidicode: 显示dmi的信息 显示BIOS

内核参数的查看与配置:

   /proc/sys/
      kernel net vm fs

配置参数:

echo "string" > /proc/sys/path/to/some_parameter
echo 1 > /proc/sys/net.ipv4/icmp_echo_ignore_all
sysctl -w 
上面也可写成
sysctl -w net.ipv4.icmp_echo_ignore_all=1

查看参数:

    sysctl -a 

配置文件:

     /etc/sysctl.conf

net.ipv4.ip_forward ip转发
kernel.hostname 主机名
net.ipv4.icmp_echo_ignore_all ping功能
vm.drop_caches 清除缓存
sysctl -p 重读配置文件

硬件设备:设备文件
2.4-:2W+

udev:用户空间程序

kenrel硬件探测过程在根文件系统挂载前就已经结束,启动udev daemon程序,要求内核重新探测硬件信息,并输出/sys目录,
由此udevadmin工具就可以根据/sys目录中硬件信息给每个硬件创建设备文件了

udev rules:udev规则文件,用于定义udev如何创建设备文件的
  /etc/udev/rules.d/

kernel+initramfs(根文件系统所在设备的设备驱动模块)–>devtmpfs(用于在内核初始化时为基本设备创建设备文件的临时文件系统)

如何手动创建设备文件

mknod
   mknod [option] ...NAME YTPE [MAJOR MINOR]
   MAJOR:主设备号,表示设备类型
   MINOR:同一设备的不同文件
   例:mknod /dev/mydev b 100 0
   选项:
     -m MODE:指定权限
   例子
     mknod -m 660 /dev/testdev b 100 0 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值