Linux及FL2440使用过程遇到的各种问题和小技巧

原文链接:http://www.cnblogs.com/NickQ/p/8900474.html

## Linux及FL2440使用过程遇到的各种问题和小技巧

  • 关于移植linux根文件系统中的问题

  1. 在最小内核移植并使用文件系统时,记得配置保存好u-boot相关参数,否者会导致Linux内核找不到文件系统死掉。

    文件系统时 JFFS2 时,设置的bootcmd和bootargs参数:

    set bootcmd ‘nand read 30008000 100000 400000; bootm 30008000‘
    set bootargs ‘console=tty0 console=ttyS0,115200 root=/dev/mtdblock2 rootfstype=jffs2 init=/linuxrc mem=64M rw noinitrd loglevel=7‘
    
    save

    参数解释:

    bootargs的参数解析如下:

    console=tty0 指定内核控制终端为LCD,内核启动信息输出到LCD上;console=ttyS0,115200 指定内核控制终端也为第一个串口,使用波特率115200,这样内核启动信息也打印到第一个串口上;

    root=/dev/mtdblock2 指定根文件系统存放在mtdblock2上,该值应该与u-boot烧录位置、Linux内核分区保持一致;如果错误则Linux内核会因找不到根文件系统而启动失败;

    rootfstype=jffs2 指定根文件系统类型为jffs2,如果该参数错误则内核启动失败;

    init=/linuxrc 指定init进程执行/linuxrc这个程序,他会解析并执行/etc/inittab下的命令;

    mem=64M u-boot告诉Linux内核有64M的内存;

    rw 根文件系统以读写的形式挂载;

    noinitrd 没有使用initrd;

    loglevel=7 定义内核printk的打印级别为7,即所有信息都通过console打印出来;

    文件系统时 UBIFS 时,设置的bootcmd和bootargs参数:

    set bootcmd ‘nand read 30008000 100000 400000; bootm 30008000‘
    set bootargs ‘console=tty0 console=ttyS0,115200 ubi.mtd=2 root=ubi0:rootfs rootfstype=ubifs mem=64M noinitrd rw loglevel=7‘
    

    参数解释:

    bootargs的参数解析如下:

    console=tty0 指定内核控制终端为LCD,内核启动信息输出到LCD上;console=ttyS0,115200 指定内核控制终端也为第一个串口,使用波特率115200,这样内核启动信息也打印到第一个串口上;

    ubi.mtd=2 指定UBI卷建立在mtd2上,该值应该与u-boot烧录位置、Linux内核分区保

    持一致;如果错误则Linux内核会因找不到根文件系统而启动失败;

    root=ubi0:rootfs 指定根文件系统所在位置:在制作UBIFS的过程中,我们通过ubinize命令对文件系统镜像进行处理时,其配置文件中的vol_id指定为0,vol_name指定为rootfs;

    rootfstype=jffs2 指定根文件系统类型为jffs2,如果该参数错误则内核启动失败;

    init=/linuxrc 指定init进程执行/linuxrc这个程序,他会解析并执行/etc/inittab下的命令;

    mem=64M u-boot告诉Linux内核有64M的内存;

    rw 根文件系统以读写的形式挂载;

    noinitrd 没有使用initrd;

    loglevel=7 定义内核printk的打印级别为7,即所有信息都通过console打印出来;

  2. 使用make menuconfig时,一定要将环境配置为vt100的模式。(可只配置虚拟机,CRT可以不配置)。

    否者将导致部分输入框无法退格。

    切换到vt100:[[email protected] linux-3.0]$ export TERM=vt100

    切换到linux:[[email protected] linux-3.0]$ export TERM=linux


  • 补丁的制作和使用

  1. 生成补丁

    diff 命令

简单的说,diff的功能就是用来比较两个文件的不同,然后记录下来,也就是所谓的diff补丁。语法格式:diff 【选项】 源文件(夹) 目的文件(夹),就是要给源文件(夹)打个补丁,使之变成目的文件(夹),术语也就是“升级”。

diff -Nrua [fromdir] [todir] > file 制作补丁命令

参数解释:
-r 是一个递归选项,设置了这个选项,diff会将两个不同版本源代码目录中的所有对应文件全部都进行一次比较,包括子目录文件。
-N 选项确保补丁文件将正确地处理已经创建或删除文件的情况。
-u 选项以统一格式创建补丁文件,这种格式比缺省格式更紧凑些。
-a 将所有文件当做文本文件来处理
-b 忽略空格造成的不同
-B 忽略空行造成的不同
-q 只报告什么地方不同,不报告具体的不同信息
-H 利用试探法加速对大文件的搜索
-i 忽略大小写的变化
-l 用pr 对输出进行分页
-s 两个文件相同时才报告
-v 在标准输出上输出版本信息并退出
  1. 使用补丁

    patch 命令

    简单的说,patch就是利用diff制作的补丁来实现源文件(夹)和目的文件(夹)的转换。这样说就意味着你可以有源文件(夹)――>目的文件(夹),也可以目的文件(夹)――>源文件(夹)。

    patch -p0 [fromdir] < file.patch 打补丁命令

    参数解释:

    -p0 选项要从当前目录查找目的文件(夹)

    -p1 选项要忽略掉第一层目录,从当前目录开始查找。

    (-pN选项表示取消N层目录数)

    如果使用参数-p0,那就表示从当前目录找一个叫做old的文件夹,在它下面寻找modules下的pcitable文件来执行patch操作。

    如果使用参数-p1,那就表示忽略第一层目录(即不管old),从当前目录寻找modules的文件夹,在它下面找pcitable。这样的前提是当前目录必须为modules所在的目录。而diff补丁文件则可以在任意位置,只要指明了diff补丁文件的路径就可以了。当然,可以用相对路径,也可以用绝对路径。不过我一般习惯用相对路径。

    -E 选项说明如果发现了空文件,那么就删除它.

    -R 选项说明在补丁文件中的“新”文件和“旧”文件现在要调换过来了(实际上就是给新版本打补丁,让它变成老版本)


  • Linux 常用方法

  1. 虚拟机中互传文件

    安装一个软件,叫lrzsz(SZ/RZ)。

    sudo yum install lrzsz

    使用sz/rz 与Secure CRT 互传文件

  2. linux sshd 开机自启动

    chkconfig命令

将sshd加入到系统服务中

chkconfig sshd on

可以查看sshd的运行级别状态:

[[email protected] ~]# chkconfig --list sshd sshd 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭

//chkconfig查看启动项使用命令:

chkconfig --list

//chkconfig关闭启动项命令:

chkconfig autostart.shoff

//chkconfig删除启动项命令:

chkconfig --del autostart.sh

  1. 环境变量

    对环境变量的解释:(参考链接:https://blog.csdn.net/a827415225/article/details/76757934)

  2. /etc/environment–>是系统在登录时读取的第一个文件,用于为所有进程设置环境变量。系统使用此文件时并不是执行此文件中的命令,而是根据KEY=VALUE模式的代码,对KEY赋值以VALUE,因此文件中如果要定义PATH环境变量,只需加入一行形如 PATH=$PATH:/xxx/bin的代码即可。(此文件中只针对PATH进行配置,确实如上文所说,它并不是执行此文件中的命令。上文中用的也是读取这个词,我对于单纯的赋值但是不执行不太理解,不过一般也不会去操作这个文件)。

  3. /etc/profile–>是系统登录时执行的第二个文件,可以用于设定针对全系统所有用户的环境变量。(注意它的具有全局性,但是由于它执行性,他会容易被后面的配置文件给覆盖掉一些操作,最典型的就是我们在这个给PATH添加arm-linux-gcc的路径,会被后来的~/.profile覆盖掉)。
  4. ~/.profile–>是对应当前登录用户的profile文件,用于定制当前用户的个人工作环境。(个人用户及root用户)(但是有个前提是只有当~/.bash_profile和~/.bash_login不存在的时候才会读取~/.profile,不过一般那两个文件都不存在)。
  5. ~/.bashrc–>是对应当前登录用户的bash初始化文件,当用户每次打开shell时,系统都会执行此文件一次。
  1. 修改时区和与Internet时间同步

    vi /etc/sysconfig/clock

    ```

    ZONE="Asia/Shanghai"

    UTC=false

    ARC=false

``日期设定:date -s 2018/04/13 时间设定:date -s 16:04:00 `

```

查看硬件时间(BIOS的): hwclock 命令

参数解释:

-r:查看现有BIOS时间,默认为-r参数.

-w:将现在的linux系统时间写入BIOS中.

``同步BIOS时钟,强制把系统时间写入CMOS: clock -w `

与Internet时间同步

```

vi /etc/rc.d/rc.local

/usr/sbin/ntpdate -u 192.168.0.2 192.168.0.3 192.168.0.4;

/sbin/hwclock -w

```


  • FL2440烧录

  1. 烧录过程命令

    //用 J_link 烧录bootstrap
    h
    speed 12000
    loadbin D:\Linux_share\bootstrap-s3c2440.bin 0
    setpc 0
    g
    //用 J_link 烧录u-boot
    h
    loadbin D:\Linux_share\u-boot-s3c2440.bin 0x33f80000
    setpc 0x33f80000
    g
    
    //擦除整块Flash并设置IP
    nand scrub
    y
    set ipaddr 192.168.110.2;set serverip 192.168.110.1;save
    
    //下载烧录U-boot
    tftp 30008000 u-boot-s3c2440.bin;nand erase 0 100000;nand write 30008000 0 60000
    
    //下载烧录linuxrom
    tftp 30008000 linuxrom-s3c2440.bin;nand erase 100000 1000000;nand write 30008000 100000 F00000
    
    //下载烧录rootfs-ubifs
    tftp 30800000 rootfs-ubifs.bin;nand erase 1000000 4000000;nand write 30800000 1000000 3000000

原文地址:https://www.cnblogs.com/NickQ/p/8900474.html

时间: 2024-08-06 18:59:52

Linux及FL2440使用过程遇到的各种问题和小技巧的相关文章

Linux下通过find命令进行rm文件删除的小技巧

   我们常常会通过find命令进行批量操作.如:批量删除旧文件.批量改动.基于时间的文件统计.基于文件大小的文件统计等.在这些操作其中,因为rm删除操作会导致文件夹结构变化,假设要通过find结合rm的操作写成脚本.就会遇到一些麻烦,本文通过一个样例为大家进行介绍. 系统环境: SUSE Linux Enterprise Server 11 或 Red Hat Enterprise Linux 问题症状: 客户现场有一个自己主动化的脚本,有下面的find语句,每天执行以删除某个文件夹下7天曾经

Linux下查询进程PS或者杀死进程kill的小技巧

假设我们要kill掉tomcat: 那么我们首先需要tomcat的进程号pid: ps -aux | grep tomcat 记下tomcat的PID后,执行:kill PID(tomcat) 好了,就到这里.... 路人甲:小的们,灭了这个欺骗人民情感的家伙! me:咳咳!大家冷静冷静,me这就给大家加菜... ------------------------------------------------- 学习不是为了变懒,那和咸鱼有什么区别! ps -aux | grep flume后的

FFmpeg在Linux下安装编译过程

转载请把头部出处链接和尾部二维码一起转载,本文出自:http://blog.csdn.net/hejjunlin/article/details/52402759 今天介绍下FFmpeg在Linux下安装编译过程,用的是CentOS, 总体过程比较顺利,就是在ffmpeg等的时间稍长点.没什么技术难点.仅当记录. 关于FFmpeg FFmpeg是一个开源免费跨平台的视频和音频流方案,属于自由软件,采用LGPL或GPL许可证(依据你选择的组件).它提供了录制.转换以及流化音视频的完整解决方案.它包

(作业3)Linux内核的启动过程(从start_kernel到init进程启动)

作业题目: 详细分析从start_kernel到init进程启动的过程并结合实验截图撰写一篇署名博客,并在博客文章中注明“真实姓名(与最后申请证书的姓名务必一致) + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ”,博客内容的具体要求如下: 题目自拟,内容围绕Linux内核的启动过程,即从start_kernel到init进程启动: 博客中需要使用实验截图 博客内容中需要仔细分析

Linux内核分析之跟踪分析Linux内核的启动过程

一.实验过程 使用实验楼虚拟机打开shell cd LinuxKernel/ qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img 内核启动进入 menu 程序.下面是用 gbd 来跟踪内核的启动过程: gdb (gdb)file linux-3.18.6/vmlinux # 在gdb界面中targe remote之前加载符号表 (gdb)target remote:1234 # 建立gdb和gdbserver之间的

mysql for linux 数据库的安装过程

mysql for linux 数据库的安装过程 l  安装版本:mysql-advanced-5.6.12-linux-glibc2.5-x86_64.tar.gz ,此版本是绿色版本,只需要将其解压到相关目录即可. PS:此安装方法为不针对特定平台的通用安装方法,使用的二进制文件是后缀为.tar.gz的压缩文件 PS:Mysql下载地址:http://pan.baidu.com/s/1eQJhoLO 1.创建mysql用户/账号 [[email protected] ~]#  groupad

linux手动安装sbt过程

ubuntu14 手动安装sbt 参见官网配置说明http://www.scala-sbt.org/release/tutorial/Manual-Installation.html 1.下载sbt通用平台压缩包:sbt-0.13.5.tgz http://www.scala-sbt.org/download.html 2.建立目录,解压文件到所建立目录 $ sudo mkdir /opt/scala/sbt $ sudo tar zxvf sbt-0.13.5.tgz -C /opt/scal

20135239 益西拉姆 linux内核分析 跟踪分析Linux内核的启动过程

回顾 1.中断上下文的切换——保存现场&恢复现场 本节主要课程内容 Linux内核源代码简介 1.打开内核源代码页面 arch/目录:支持不同CPU的源代码:其中的X86是重点 init/目录:内核启动相关的代码基本都在该目录中(比如main.c等) start_kernel函数就相当于普通C程序的main函数 kernel/目录:Linux内核核心代码在kernel目录中 README 介绍了什么是Linux,Linux能够在哪些硬件上运行,如何安装内核源代码等 构造一个简单的linux系统m

minicom在虚拟机(linux)安装配置过程

1. minicom需要ncurses库的支持,否则安装会有问题. A. 下载ncurses.我选择是ncurses-5.6.tar.gz 下载地址:http://directory.fsf.org/project/ncurses/ B. 解压缩到/opt/ncurses目录下.# tar zxvf ncurses-5.5.tar.gz –C /opt/ncurses C. 到ncurses目录下,配置编译ncurses. 源码安装的三个步骤(configure.make.make instal