• Linux 学习笔记(未整理)


    redhat 5.4中文显示乱码问题

    安装

    1、fonts-chinese-3.02-9.6.el5.noarch.rpm.  如果无法安装,则加个--force

    2、fonts-ISO8859-2-75dpi-1.0-17.1.noarch.rpm

    多数人到了这里就没有做其它操作了,导致仍然无法正确显示中文。

    3、cd /usr/share/fonts/

    4、fc-cache -fv  #   

    以上的两个步骤,才是成功完成的关键!所以这里要特别注意!重新启动系统即可

    建立交叉编译环境


    在Linux平台下,要为开发板编译内核,图形界面Qtopia/Qt4,bootloader,还有其他一些应用程序,均需要交叉编译工具链,我们使用的是arm-linux-gcc-4.5.1,它默认采用armv6指令集,支持硬浮点运算,下面是安装它的详细步骤。
    Step1:将光盘Linux目录中的arm-linux-gcc-4.5.1-v6-vfp-20101103.tgz复制到Fedora9某个目录下如tmp/,然后进入到该目录,执行解压命令:

    #cd /tmp

    #tar xvzf arm-linux-gcc-4.5.1-v6-vfp-20101103.tgz –C /
    注意:C后面有个空格,并且C是大写的,它是英文单词“Change”的第一个字母,在此是改变目录的意思。
    执行该命令,将把arm-linux-gcc安装到/opt/FriendlyARM/toolschain/4.5.1目录。

    Step2:把编译器路径加入系统环境变量,运行命令#gedit /root/.bashrc
    编辑/root/.bashrc 文件,注意“bashrc”前面有一个“.”,修改最后一行为 export PATH=$PATH: /opt/FriendlyARM/toolschain/4.5.1/bin,注意路径一定要写对,否则将不会有效。保存退出。如果/root/.bashrc里面输入有误,后面会出现超级管理员权限下的部分命令不能使用。

    重新登录系统(不必重启机器,开始->logout 即可),使以上设置生效,在命令行输入arm-linux-gcc –v,会出现GCC版本信息,这说明交叉编译环境已经成功安装。

    VMware共享文件夹,只能拷出,不能拷入

    [root@feiyinzilgd ~]# vi /etc/selinux/config

    # This file controls the state of SELinux on the system.
    # SELINUX= can take one of these three values:
    #       enforcing - SELinux security policy is enforced.
    #       permissive - SELinux prints warnings instead of enforcing.
    #       disabled - No SELinux policy is loaded.
    SELINUX=disabled
    # SELINUXTYPE= can take one of these two values:
    #       targeted - Targeted processes are protected,
    #       mls - Multi Level Security protection.
    SELINUXTYPE=targeted

    修改后重启就OK 

    REDHAT安装时出现:This system is not registered with RHN.

    红帽中出现This system is not registered with RHN这个的原因是因为红帽中没有注册RHN。解决办法:(假定你已安装yum,且网络畅通)更改yum的源,即更换/etc/yum.repos.d /rhel-debuginfo.repo 这个文件。进入/etc/yum.repos.d/目录,终端中输入wget http://docs.linuxtone.org/soft/lemp/CentOS-Base.repo即可在此目录下得到CentOS- Base.repo文件,这是centos的源文件,只需将其重命名为rhel-debuginfo.repo即可,以前的文件做个备份。

    最简单的驱动程序hello

    Mini6410_hello_module.c 
    #include <linux/kernel.h> 
    #include <linux/module.h> 
    static int __init mini6410_hello_module_init(void) 
    { 
      printk("Hello, Mini6410 module is installed !
    "); 
      return 0; 
    }
    
    static void __exit mini6410_hello_module_cleanup(void) 
    { 
      printk("Good-bye, Mini6410 module was removed!
    "); 
    } 
    
    module_init(mini6410_hello_module_init); 
    module_exit(mini6410_hello_module_cleanup); 
    MODULE_LICENSE("GPL");

    PC环境:win7+VMwave10+redhat5.1

    用mini6410开发板,厂家提供的原代码和编译器。

    (1)把Hello,Module 加入内核代码树,并编译

    一般编译2.6版本的驱动模块需要把驱动代码加入内核代码树,并做相应的配置,如下步骤( 注意:实际上以下步骤均已经做好,你只需要打开检查一下直接编译就可以了) :
    Step1:编辑配置文件Kconfig,加入驱动选项,使之在make menuconfig的时候出现 打开linux-2.6.38/drivers/char/Kconfig 文件,添加如图所示:

    保存退出,这时在linux-2.6.38 目录位置运行一下make menuconfig就可以在Device Drivers Æ Character devices 菜单中看到刚才所添加的选项了,按下空格键将会选择为<M>,此意为要把该选项编译为模块方式;再按下空格会变为<*> ,意为要把该选项编译到内核中,在此我们选择<M>,如图,如果没有出现,请检查你是否已经装载了缺省的内核配置文件。(M:就是做成模块,动态装入       *:就是直接编译到内核中,启动时装入)

    Step2:通过上一步,我们虽然可以在配置内核的时候进行选择,但实际上此时执行编译内核还是不能把mini6410_hello_module.c 编译进去的,还需要在Makefile中把内核配置
    选项和真正的源代码联系起来,打开 linux-2.6.38/drivers/char/Makefile ,如图添加并保存退出:

    Step3:这时回到 linux-2.6.38 源代码根目录位置,执行 make modules ,就可以生成我们所需要的内核模块文件mini6410_hello_module.ko了,注意:执行make modules之前,必须先执行make zImage,只需一次就可以了。
    至此,我们已经完成了模块驱动的编译。

     

    在此使用ftp 命令把编译出的mini6410_hello_module.ko下载到板子中,并把它移动到/lib/modules/2.6.38-FriendlyARM 目录然后在板子中现在执行
    #modprobe mini6410_hello_module
    可以看到该模块已经被装载了( 注意:使用 modprobe命令加载模块不需要加“ko”尾缀)

    注意:两种加载方式insmod和modprobe的区别

    1、insmod一次只能加载特定的一个设备驱动,且需要驱动的具体地址。写法为:
            insmod drv.ko
    2.  modprobe则可以一次将有依赖关系的驱动全部加载到内核。不加驱动的具体地址,但需要在安装文件系统时是按照make modues_install的方式安装驱动模块的。驱动被安装在/lib/modules/$(uname -r)/...下。写法为:
           modprob drv
    再执行以下命令,可以看到该模块被卸载
    #rmmod mini6410_hello_module
    注意:要能够正常卸载模块,必须把模块放入开发板的/lib/modules/2.6.38-FriendlyARM 目录
    另外需要注意的是:因为我们的内核有时会升级更新,如果内核版本已经改变,请依照具体的内核版本重新建立一个模块存放目录,在此为/lib/modules/2.6.38-FriendlyARM

  • 相关阅读:
    电感(29)之铁氧体磁珠工作原理透彻详解
    电阻(7)之零欧姆电阻
    高速数字逻辑电平(8)之LVDS差分信号深度详解
    每天进步一点点------Error: Can't place pins assigned to pin location Pin_K22 (IOPAD_X41_Y19_N14)
    每天进步一点点------入门视频采集与处理(视频分辨率介绍)
    每天进步一点点------入门视频采集与处理(显示YUV数据)
    每天进步一点点------YUV格式详细解释
    每天进步一点点------入门视频采集与处理(BT656简介)
    每天进步一点点------FPGA 静态时序分析模型——reg2reg
    每天进步一点点------SysTimer
  • 原文地址:https://www.cnblogs.com/xueyang/p/3998787.html
Copyright © 2020-2023  润新知