U-boot的环境变量: bootcmd 和bootargs
u-bootcmd
bootcmd是uboot自动启动时默认执行的一些命令,因此你可以在当前环境中定义各种不同配置,不同环境的参数设置,然后设置bootcmd为你经常使用的那种参数。 现在我的bootcmd的参数设置为:bootcmd=nfs 0x30008000 192.168.1.149:/opt/FriendlyARM/uImage;bootm
表示uboot以nfs的方式加载位置在于192.168.1.149:/opt/FriendlyARM/这个目录下面的uImage文件,加载之后再执行bootm。
bootm 指令是专门用于启动在SDRAM中的用U-boot的mkimage工具处理过的内核映像。因此在执行bootm命令的时候必须确保image文件已经在内存中。 u-bootargs
bootargs是环境变量中的重中之重,甚至可以说整个环境变量都是围绕着bootargs来设置的。bootargs的种类非常非常的多,我们平常只 是使用了几种而已,感兴趣的可以看看这篇文章说的很全:http://blog.chinaunix.net/u2/79570 /showart_1675071.html。bootargs非常的灵活,内核和文件系统的不同搭配就会有不同的设置方法,甚至你也可以不设置 bootargs,而直接将其写到内核中去(在配置内核的选项中可以进行这样的设置),正是这些原因导致了bootargs使用上的困难。 下面介绍一下bootargs常用参数,bootargs的种类非常的多,而且随着kernel的发展会出现一些新的参数,使得设置会更加灵活多样。 A. root 用来指定rootfs的位置, 常见的情况有: root=/dev/ram rw root=/dev/ram0 rw 请 注意上面的这两种设置情况是通用的,我做过测试甚至root=/dev/ram1 rw和root=/dev/ram2 rw也是可以的,网上有人说在某些情况下是不通用的,即必须设置成ram或者ram0,但是目前还没有遇到,还需要进一步确认,遇到不行的时候可以逐一尝 试。 root=/dev/mtdx rw 上 面的这几个在一定情况下是通用的,当然这要看你当前的系统是否支持,不过mtd是字符设备,而mtdblock是块设备,有时候你的挨个的试到底当前的系 统支持上面那种情况下,不过root=/dev/mtdblockx rw比较通用。此外,如果直接指定设备名可以的话,那么使用此设备的设备号也是可以的。 Creating 5 MTD partitions on "NAND 128MiB 3,3V 8-bit":
0x000000000000-0x000000040000 : "supervivi" 0x000000040000-0x000000060000 : "param" 0x000000060000-0x000000560000 : "Kernel" 0x000000560000-0x000040560000 : "root" mtd: partition "root" extends beyond the end of device "NAND 128MiB 3,3V 8-bit" -- size truncated to 0x7aa0000 0x000000000000-0x000040000000 : "nand" mtd: partition "nand" extends beyond the end of device "NAND 128MiB 3,3V 8-bit" -- size truncated to 0x8000000 在上面的flash分区中第四个分区用来存放根文件系统,因此mtdblaockx中的x的值应该是3.(从0始编号)
rooot=/dev/nfs 在文件系统为基于nfs的文件系统的时候使用。当然指定root=/dev/nfs之后,还需要指定nfsroot=serverip:nfs_dir,即指明文件系统存在那个主机的那个目录下面。 我的bootargs参数设置为:
bootargs=noinitrd root=/dev/nfs proto=tcp,nolock,nfsvers=3, rw nfsroot=192.168.1.149:/mini2440/rootfs ip=192.168.1.146:192.168.1.149::255.255.255.0 console=ttySAC0,115200 init=/linuxrc mem=64M
就是以nfs文件系统的方式来加载linux文件系统的
B. rootfstype
这个选项需要跟root一起配合使用,一般如果根文件系统是ext2的话,有没有这个选项是无所谓的,但是如果是jffs2,squashfs等文件系统的话,就需要rootfstype指明文件系统的类型,不然会无法挂载根分区. C. console console=ttySAC0,115200 其参数中为什么要设置成ttySAC0,不知道是为什么? 在linux内核中 linux/drivers/serial/samsuing.c中定义了宏#define S3C24XX_SERIAL_NAME "ttySAC0" 我自己试图将它改为其他值
#define S3C24XX_SERIAL_NAME "ttySuiYuan0“,同时uboot的参数中也改为console=ttySuiYuan0,编译内核,下载,但是最后不行内核启动如下就没有了。
done Starting kernel ... Uncompressing Linux................................................................................................................................................... done, booting the kernel. 最后没办法,又该为了:#define S3C24XX_SERIAL_NAME "ttySAC0"
D. mem E. ramdisk_size F. initrd, noinitrd G. init 此参数在自己制作的文件系统中,可有可无,同时根文件系统目录中的/linuxrc文件也非必须。我试验过。
跟linuxrc相关的代码可有在uboot中找到。
if (execute_command) { panic("No init found. Try passing init= option to kernel."); H. mtdparts mtdparts的格式如下: I. ip 说完常见的几种bootargs,那么我们来讨论平常我经常使用的几种组合: 2). 假设文件系统是ramdisk,且在flash中,bootargs的设置应该如下: 3). 假设文件系统是jffs2类型的,且在flash中,bootargs的设置应该如下 4). 假设文件系统是基于nfs的,bootargs的设置应该如下 上面就是我们经常使用的几种bootargs的组合,老实说,bootargs非常非常的灵活,所以设置的方法有很多中形式,具体的还应该根据你的平台具体的情况来设置。 |
U-boot的环境变量: bootcmd 和bootargs的更多相关文章
- uboot环境变量(设置bootargs向linux内核传递正确的参数)
这是我uboot的环境变量设置,在该设置下可以运行initram内核(从内存下载到nandflash再运行),但是运行nfs根文件系统的时候一直出错,各种错误.查看了很多资料后猜想应该是uboot传递 ...
- uboot环境变量的设置(未完待续)
使用print打印当前系统环境变量. 1. SMDK2440 # print baudrate=115200 bootargs=noinitrd root=/dev/nfs nfsroot=192.1 ...
- (三)ubuntu学习前传—uboot常见环境变量
1.环境变量如何参与程序运行(1)环境变量有2份,一份在Flash中,另一份在DDR中.uboot开机时一次性从Flash中读取全部环境变量到DDR中作为环境变量的初始化值,然后使用过程中都是用DDR ...
- u-boot-1.1.6环境变量
学习目标: 1.分析u-boot-1.1.6环境变量,了解环境变量初始化.设置以及过程 2.为后面能够掌握u-boot-1.1.6如何启动内核过程打下基础 1.环境变量的概念 在分析uboot环境变量 ...
- U-Boot中的filesize环境变量
U-Boot中的环境命令可以使用$(filesize)来确定刚下载(传输)得到的文件大小. 因为使用类似tftp命令传输文件后,会自动更新filesize环境变量.如:setenv updateroo ...
- uboot环境变量
一. uboot运行时环境变量分布 1.1. 环境变量有2份,一份在Flash中,另一份在DDR中.uboot开机时一次性从Flash中读取全部环境变量到DDR中作为环境变量的初始化值,然后使用过程中 ...
- U-boot的环境变量值得注意的有两个: bootcmd 和bootargs
本文转载至:http://www.cnblogs.com/cornflower/archive/2010/03/27/1698279.html U-boot的环境变量值得注意的有两个: bootcmd ...
- 3、U-boot的环境变量: bootcmd 和bootargs
u-bootcmdbootcmd是uboot自动启动时默认执行的一些命令,因此你可以在当前环境中定义各种不同配置,不同环境的参数设置,然后设置bootcmd为你经常使用的那种参数. 现在我的boo ...
- Spring Boot 环境变量读取 和 属性对象的绑定
网上看到的一些方法,结合我看到的 和我们现在使用的.整理成此文: 第一种方法 参见catoop的博客之 Spring Boot 环境变量读取 和 属性对象的绑定(尊重原创) 第二种方法 class不用 ...
随机推荐
- js confirm用法
<script> $('.tzshanchu').click(function(){ if(confirm('是否确认删除')){ alert('删除了') } });</scrip ...
- Bootstrap部分---环境安装及一个可视化的布局;
一:环境安装*****顺序不可变***** <head> 如果需要可以设定,移动设备优先 <meta name="viewport" content=" ...
- Android——ListView相关作业(修改版)
给GridView提供点击按钮添加新数据,单击项目修改,长按删除功能 activity_practise7的layout文件: <?xml version="1.0" enc ...
- 多网卡 指定网卡到指定IP
route add -net 1.2.3.0/24 gw 网关 route add -host 目标IP dev eth1route add -host 目标IP gw 网关
- NOSQL Benchmarks
www.planetcassandra.org/nosql-performance-benchmarks/ http://www.planetcassandra.org/nosql-performan ...
- CUDA Thread Indexing
1D grid of 1D blocks __device__ int getGlobalIdx_1D_1D() { return blockIdx.x *blockDim.x + threadIdx ...
- ogg 、 Shareplex和DSG RealSync 对比
主流数据库容灾(复制)工具对比 Oracle Golden Gate Quest Shareplex DSG RealSync 公司概要 公司介绍 GoldenGate公司成立于200 ...
- ABBYY哪些工具和命令可以进行区域校正
ABBYY FineReader OCR文字识别软件在运行文档识别过程前,会对文档的逻辑结构进行分析,并检测包含文本.图片.表格.条码的区域.程序将通过该分析来确定区域和识别顺序.此信息有助于重建原始 ...
- JavaScript中类的实现机制
理解类的实现机制在前面已经讲过,在JavaScript中可以使用function关键字来定义一个“类”.现在介绍如何为类添加成员.其过程很简单,在函数内通过this指针引用的变量或者方法都会成为类的成 ...
- html初学(二)
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <table bor ...