原文链接: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. 十大创客与微软智能云Azure

    由微软举办的“2016年创客先锋—基于微软智能云Azure 的 SaaS 应用软件大赛”已于本周二在中关村圆满落幕.来自全国22家孵化园的创客,历时两个月,开发出百余项基于微软智能云Azure开发的创 ...

  2. 生成证书,用于签名Android应用

    1. keytool 命令 1)使用JDK中的一个命令keytool,都有哪些命令呢,使用 keytool -help 进行查看 2)本次使用 keytool -genkeypair 命令生成签名,查 ...

  3. laravel 使用EasyWechat 3分钟完成微信支付(以APP支付为例)

    上一篇写了支付宝支付,然后这段时间我又把微信支付给接上了,作为萌新的我还是很有成就感的,哈哈~~好了,该写正事了. 第一步:创建应用及配配置  首先到微信的官方平台注册应用https://pay.we ...

  4. [EffectiveC++]item36:绝不重新定义继承而来的non-virtual函数

  5. Android Studio 独立引入(非友盟)微博分享和回调时问题

    最近同事在做一个小项目时,由于产品的要求,Wap页面的分享规定不能使用友盟的社会化组件.他则不得不手动一个一个渠道的引入分享,好在渠道不多就三个,但是第一微博分享引入的时候问题就出现了. 问题一:li ...

  6. MSSQL注入常用SQL语句整理

    很多情况下使用工具对mssql注入并不完善,所以我们就需要手工注入,一下是本人收集的一些mssql的sql语句. 手工MSSQL注入常用SQL语句 and exists (select * from ...

  7. 027class_part1

    因为有基础,我直接简单写了##定义类,创建对象,调用对象方法,返回值 class person: def speak(self,x): print('love',x) return x + '**** ...

  8. OpenXml操作Excel

    要使用OpenXml首先要下载最新的Open XML Format SDK 2.0.具体的导入openxml的dll,去网上搜,很多 1.我个人写的XmlHelp类 using System; usi ...

  9. ecshop 中如何禁用右键和F12

    找到 网站根目录/themes/js/common.js,在最后加入如下代码: //禁用右键和F12 //方法一 document.oncontextmenu = function () { retu ...

  10. python 爬取猫眼下的榜单(一)--单个页面

    #!/usr/bin/env python # -*- coding: utf- -*- # @Author: Dang Kai # @Date: -- :: # @Last Modified tim ...