原文链接: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打印出来;
  1. 使用make menuconfig时,一定要将环境配置为vt100的模式。(可只配置虚拟机,CRT可以不配置)。

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

    切换到vt100:[nick@XQLY linux-3.0]$ export TERM=vt100

    切换到linux:[nick@XQLY 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 在标准输出上输出版本信息并退出

  2. 使用补丁

    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的运行级别状态:

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

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

    chkconfig --list

    //chkconfig关闭启动项命令:

    chkconfig autostart.shoff

    //chkconfig删除启动项命令:

    chkconfig --del autostart.sh

  3. 环境变量

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

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

    2. /etc/profile–>是系统登录时执行的第二个文件,可以用于设定针对全系统所有用户的环境变量。(注意它的具有全局性,但是由于它执行性,他会容易被后面的配置文件给覆盖掉一些操作,最典型的就是我们在这个给PATH添加arm-linux-gcc的路径,会被后来的~/.profile覆盖掉)。

    3. /.profile–>是对应当前登录用户的profile文件,用于定制当前用户的个人工作环境。(个人用户及root用户)(但是有个前提是只有当/.bash_profile和/.bash_login不存在的时候才会读取/.profile,不过一般那两个文件都不存在)。

    4. ~/.bashrc–>是对应当前登录用户的bash初始化文件,当用户每次打开shell时,系统都会执行此文件一次。

    • PS1: 设置shell提示符

    export PS1='[\u@\A \w]\$ '

    可以参考:https://blog.csdn.net/dongdong230/article/details/50455361

    • PATH:决定了shell将到哪些目录中寻找命令或程序

    export PATH=$PATH:./

  4. 修改时区和与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

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

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

       我们常常会通过find命令进行批量操作.如:批量删除旧文件.批量改动.基于时间的文件统计.基于文件大小的文件统计等.在这些操作其中,因为rm删除操作会导致文件夹结构变化,假设要通过find结合r ...

  2. Python+selenium自动化脚本编辑过程中遇到的问题和小技巧

    应该也不算是问题和技巧,算是实践中学习到的Python,记录下,也不定时更新 1.通过截取url判断 实例: self.assertEqual(self.broswer.current_url[sel ...

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

    假设我们要kill掉tomcat: 那么我们首先需要tomcat的进程号pid: ps -aux | grep tomcat 记下tomcat的PID后,执行:kill PID(tomcat) 好了, ...

  4. 安装Oracle Grid的过程中用到的几个小技巧

    1.利用文件来模拟块设备 在grid的安装教程中有一步是 provision the disk devices for use with ASM Filter Driver.但是如果我们没有多个磁盘怎 ...

  5. 探索 Linux 系统的启动过程

    引言 之所以想到写这些东西,那是因为我确实想让大家也和我一样,把 Linux 桌面系统打造成真真正正日常使用的工具,而不是安装之后试用几把再删掉.我是真的在日常生活和工作中都使用 Linux,比如在 ...

  6. 在Linux下安装PHP过程中,编译时出现错误的解决办法

    在Linux下安装PHP过程中,编译时出现configure: error: libjpeg.(a|so) not found 错误的解决办法 configure: error: libjpeg.(a ...

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

    一.实验过程 使用实验楼虚拟机打开shell cd LinuxKernel/ qemu -kernel linux-/arch/x86/boot/bzImage -initrd rootfs.img ...

  8. Linux内核启动分析过程-《Linux内核分析》week3作业

    环境搭建 环境的搭建参考课件,主要就是编译内核源码和生成镜像 start_kernel 从start_kernel开始,才真正进入了Linux内核的启动过程.我们可以把start_kernel看做平时 ...

  9. linux PCI设备初始化过程

    linux PCI设备初始化过程 start_kernel->rest_init 这个函数会启动一个核心线程0, 核心线程然后调用init -> do_basic_setup. 然后我们开 ...

随机推荐

  1. Oracle案例01——ORA-09925: Unable to create audit trail file

    2018年春节后第一天上班就遇到一个审计日志无法写入的问题,具体解决思路如下. 一.错误日志 数据库错误日志内容: Fri Feb 23 11:16:30 2018OS Audit file coul ...

  2. Linux中redis的安装与配置

    redis官网地址:http://www.redis.io/ redis安装 在Linux下安装Redis非常简单,这里以2.8.3版本为例,具体步骤如下: 1.下载源码,解压缩后编译源码. $ mk ...

  3. spring初始化完成后执行初始化数据方法

    Spring提供的解决方案三种: 1.InitializingBean package com.foriseland.fsoa.fabricca; import com.foriseland.fsoa ...

  4. CentOS 7 Nginx+PHP环境搭建!

    1.Nginx 安装 rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx. ...

  5. 解决Unity3D操作界面字体模糊的问题

    新装的电脑安装了UNITY后,操作界面的字体异常模糊,搜了半天看看有没有换字体的功能,也没找到 后来快放弃的时候,偶然看到这篇文章http://eyehere.net/2014/unity3d-int ...

  6. java:transient是什么,有什么作用

    参考博客:Java transient关键字 “Java的serialization提供了一种持久化对象实例的机制.当持久化对象时,可能有一个特殊的对象数据成员,我们不想用serialization机 ...

  7. 一个关于JSON的异常,获取List对象失败的。。。

    重要的事情放在最前面,,以后不管遇到什么异常都一定要把异常读懂再想办法怎么解决,把异常读懂,异常读懂...... 这个异常我记得以前遇到过,而且好像已经做了笔记,,,,,今天翻了一下竟然没有,,,,, ...

  8. Swift编程语言学习1.1——常量与变量

    常量和变量把一个名字(比方maximumNumberOfLoginAttempts或者welcomeMessage)和一个指定类型的值(比方数字10或者字符串"Hello")关联起 ...

  9. BZOJ1614:[USACO]Telephone Lines架设电话线(二分,最短路)

    Description FarmerJohn打算将电话线引到自己的农场,但电信公司并不打算为他提供免费服务.于是,FJ必须为此向电信公司 支付一定的费用.FJ的农场周围分布着N(1<=N< ...

  10. C# Hadoop学习笔记(七)—C#的云计算框架借鉴(下)

    转自:http://blog.csdn.net/black0707/article/details/12853049 在上篇里,我们主要讨论了,这个系统怎样处理大数据的“读”操作,当然还有一些细节没有 ...