原文链接: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. js前台检测上传图片大小的总结

    最近一直在做上传图片的前端检测,不通过后台就完成这个动作.但实际是,实际效果差强人意. html5的fileApi出来后,对文件的处理才变得方便了些,对它的简单介绍可以看我的前面的博客.现在支持的浏览 ...

  2. UML面向对象建模基础

    一个比较好的UML教程PPT https://wenku.baidu.com/view/cf80902e26284b73f242336c1eb91a37f11132ac.html

  3. RMAN备份等级详解

    (2011-06-27 11:38:28) 转载▼ 标签: 杂谈 分类: oracle 在rman增量备份中,有差异增量和累积增量的概念 1.概念 差异增量:是备份上级及同级备份以来所有变化的数据块, ...

  4. 使用FMDB最新v2.3版本教程

    使用FMDB教程 本教程针对于第一次接触开源库FMDB的同胞,从如何下载源码如何导入工程如何创建数据库如何写增删改查开始.使用的时最新版本的FMDB v2.3. 此教程开始日期为 2014.5.5 P ...

  5. 【转】Linux中/etc/profile,/etc/bashrc,~/.profile,~/.bashrcd的区别

    //因为在原文章中博主说以下内容是网友说的,所以我就只加个转了,找不到原作者 /etc/profile,/etc/bashrc 是系统全局环境变量设定 ~/.profile,~/.bashrc用户家目 ...

  6. 用phpstudy搭建的lnmp环境下mysql授权远程连接

    1.使用phpstudy安装的mysql没有放置到可以直接调用的目录里,所以只能使用绝对路径来访问: /phpstudy/mysql/bin/mysql -uroot -proot 2.执行use m ...

  7. 【深入理解JAVA虚拟机】第二部分.内存自动管理机制.2.HotSpot虚拟机对象探秘

    对象的创建过程 1.加载类 虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载. 解析和初始化过. 如果没有,那必须 ...

  8. ZT 设计模式六大原则(6):开闭原则

    ZT 设计模式六大原则(6):开闭原则 分类: 设计模式 2012-02-27 08:48 24870人阅读 评论(72) 收藏 举报 设计模式扩展框架编程测试 定义:一个软件实体如类.模块和函数应该 ...

  9. ZT 苍天助曹不助汉哪

    诸葛亮能夜观星象,但为什么在上方谷一役中,孔明没有测出突如其来的大雨,却高呼“苍天助曹不助汉哪”断送了自己的性命,这是为什么 谋事在人,成事在天.   雁过留影 3级 2011-04-18 天命不可违 ...

  10. LSF作业管理系统使用方法

    查看LSF计算节点列表bhosts # bhosts HOST_NAME STATUS JL/U MAX NJOBS RUN SSUSP USUSP RSV fat01 ok - 16 0 0 0 0 ...