linux两个分区内核升级,在线升级uboot,内核和文件系统

本文详细介绍了一种在嵌入式设备上进行固件、内核及文件系统更新的方法,包括使用TFTP下载文件、执行升级脚本以及擦写分区等步骤。
部署运行你感兴趣的模型镜像

[lingyun@localhost busybox-1.20.2]$ sudo make install

/home/lingyun/fulinux/systools/busybox/../../rootfs/rootfs//bin/[ -> busybox

/home/lingyun/fulinux/systools/busybox/../../rootfs/rootfs//bin/[[ -> busybox

/home/lingyun/fulinux/systools/busybox/../../rootfs/rootfs//bin/addgroup -> busybox

/home/lingyun/fulinux/systools/busybox/../../rootfs/rootfs//bin/adduser -> busybox

/home/lingyun/fulinux/systools/busybox/../../rootfs/rootfs//bin/arping -> busybox

/home/lingyun/fulinux/systools/busybox/../../rootfs/rootfs//bin/ash -> busybox

。。。。

[lingyun@localhost busybox-1.20.2]$ cd ~/fulinux/rootfs/rootfs

将脚本文件拷贝到tftp/目录下:

[fulinux@CentOS6 tftp]$ ls

upgrade

下面将根目录以jffs2文件系统形式移植到开发板中去,如下:

Copyright (C) 2013 fulinux

root login: root

>: ls

apps data etc init linuxrc proc sbin tmp var

bin dev info lib mnt root sys usr

>:

将tftp目录下的upgrade文件下载到开发板中:

>: tftp -gr upgrade 192.168.1.3

upgrade 100% |*******************************| 5116 0:00:00 ETA

>: ls

apps data etc init linuxrc proc sbin tmp usr

bin dev info lib mnt root sys upgrade var

>: ll upgrade

-rw-r--r-- 1 root root 5116 Feb 17 02:57 upgrade

>: chmod +x upgrade

>: ll upgrade

-rwxr-xr-x 1 root root 5116 Feb 17 02:57 upgrade

>:

将要升级或更新的uboot下载到开发板上,然后执行脚本升级uboot,如下:

>: tftp -gr u-boot-s3c2440.bin 192.168.1.3

u-boot-s3c2440.bin 100% |*******************************| 277k 0:00:00 ETA

>: ./upgrade

Usage: upgrade -[f/k/u/h] [filename]

Example: upgrade linuxrom-s3c2440.bin

upgrade u-boot-s3c2440.bin

upgrade rootfs.jffs2

upgrade -u uboot.bin

upgrade -k lin.bin

upgrade -f fs.yaffs2

upgrade -h

>: ./upgrade -u u-boot-s3c2440.bin

Upgrade bootloader image 'u-boot-s3c2440.bin'

Erasing 128 Kibyte @ 100000 - 100% complete.

Writing at 0x00000000

Writing at 0x00020000

Writing at 0x00040000

>: reboot

重启后如下:

。。。

root login: root

>: ls

apps info proc u-boot-s3c2440.bin

bin init root upgrade

data lib sbin usr

dev linuxrc sys var

etc mnt tmp

>:

将要升级或更新的内核下载到开发板上,然后执行脚本升级内核,如下:

>: tftp -gr linuxrom-s3c2440.bin 192.168.1.3

linuxrom-s3c2440.bin 100% |*******************************| 2552k 0:00:00 ETA

>: sh upgrade

Usage: upgrade -[f/k/u/h] [filename]

Example: upgrade linuxrom-s3c2440.bin

upgrade u-boot-s3c2440.bin

upgrade rootfs.jffs2

upgrade -u uboot.bin

upgrade -k lin.bin

upgrade -f fs.yaffs2

upgrade -h

>: sh upgrade -k linuxrom-s3c2440.bin

Upgrade linux kernel image 'linuxrom-s3c2440.bin'

Erasing 128 Kibyte @ f00000 - 100% complete.

Writing at 0x00000000

Writing at 0x00020000

Writing at 0x00040000

Writing at 0x00060000

Writing at 0x00080000

Writing at 0x000a0000

Writing at 0x000c0000

Writing at 0x000e0000

Writing at 0x00100000

Writing at 0x00120000

Writing at 0x00140000

Writing at 0x00160000

Writing at 0x00180000

Writing at 0x001a0000

Writing at 0x001c0000

Writing at 0x001e0000

Writing at 0x00200000

Writing at 0x00220000

Writing at 0x00240000

Writing at 0x00260000

>: reboot

重启后如下:

Copyright (C) 2013 fulinux

root login: root

>: ls

apps lib sys

bin linuxrc tmp

data linuxrom-s3c2440.bin u-boot-s3c2440.bin

dev mnt upgrade

etc proc usr

info root var

init sbin

>:

将要升级或更新的文件系统下载到开发板上,然后执行脚本升级文件系统,下面以jffs2文件系统为例:

话说,如果是initramfs文件系统的话就可以比较好的更新或是升级一个文件系统,但是我们这里是用的jffs2,不能再jffs2分区里把他擦了在跟新一个jffs2到这个分区中去,所以我们用另一种方式来达到这种更新文件系统效果。我们的根文件系统是出于mtdblock4分区中的,我们的mtdblock5分区原本是准备放yaffs2的,但是现在这个分区没有任何文件系统,我们就将jffs2文件系统更新到这个分区中去,然后通过修改uboot中的bootargs参数就可以从mtdblock5分区启动根文件系统了,具体操作如下:

~ >: tftp -gr rootfs.jffs2 192.168.1.3

rootfs.jffs2 100% |*******************************| 20480k 0:00:00 ETA

~ >: tftp -gr upgrade 192.168.1.3

upgrade 100% |*******************************| 5138 0:00:00 ETA

~ >: chmod +x upgrade

~ >: cat /proc/mtd

dev: size erasesize name

mtd0: 00100000 00020000 "mtdblock0 u-boot 1MB"

mtd1: 00f00000 00020000 "mtdblock1 kernel 15MB"

mtd2: 01400000 00020000 "mtdblock2 ramdisk 20MB"

mtd3: 01400000 00020000 "mtdblock3 cramfs 20MB"

mtd4: 01400000 00020000 "mtdblock4 jffs2 20MB"

mtd5: 02800000 00020000 "mtdblock5 yaffs2 40MB"

mtd6: 02800000 00020000 "mtdblock6 ubifs 40MB"

mtd7: 02800000 00020000 "mtdblock7 apps 40MB"

mtd8: 03c00000 00020000 "mtdblock8 data 40MB"

~ >: flash_eraseall /dev/mtd5

Erasing 128 Kibyte @ 2800000 - 100% complete.

~ >: nandwrite -p /dev/mtd5 rootfs.jffs2

Writing at 0x00000000

Writing at 0x00020000

Writing at 0x00040000

Writing at 0x00060000

Writing at 0x00080000

Writing at 0x000a0000

Writing at 0x000c0000

Writing at 0x000e0000

Writing at 0x00100000

Writing at 0x00120000

Writing at 0x00140000

Writing at 0x00160000

Writing at 0x00180000

Writing at 0x001a0000

Writing at 0x001c0000

Writing at 0x001e0000

Writing at 0x00200000

Writing at 0x00220000

Writing at 0x00240000

Writing at 0x00260000

Writing at 0x00280000

Writing at 0x002a0000

Writing at 0x002c0000

Writing at 0x002e0000

Writing at 0x00300000

Writing at 0x00320000

Writing at 0x00340000

Writing at 0x00360000

Writing at 0x00380000

Writing at 0x003a0000

Writing at 0x003c0000

Writing at 0x003e0000

Writing at 0x00400000

Writing at 0x00420000

Writing at 0x00440000

Writing at 0x00460000

Writing at 0x00480000

Writing at 0x004a0000

Writing at 0x004c0000

Writing at 0x004e0000

Writing at 0x00500000

Writing at 0x00520000

Writing at 0x00540000

Writing at 0x00560000

Writing at 0x00580000

Writing at 0x005a0000

Writing at 0x005c0000

Writing at 0x005e0000

Writing at 0x00600000

Writing at 0x00620000

Writing at 0x00640000

Writing at 0x00660000

Writing at 0x00680000

Writing at 0x006a0000

Writing at 0x006c0000

Writing at 0x006e0000

Writing at 0x00700000

Writing at 0x00720000

Writing at 0x00740000

Writing at 0x00760000

Writing at 0x00780000

Writing at 0x007a0000

Writing at 0x007c0000

Writing at 0x007e0000

Writing at 0x00800000

Writing at 0x00820000

Writing at 0x00840000

Writing at 0x00860000

Writing at 0x00880000

Writing at 0x008a0000

Writing at 0x008c0000

Writing at 0x008e0000

Writing at 0x00900000

Writing at 0x00920000

Writing at 0x00940000

Writing at 0x00960000

Writing at 0x00980000

Writing at 0x009a0000

Writing at 0x009c0000

Writing at 0x009e0000

Writing at 0x00a00000

Writing at 0x00a20000

Writing at 0x00a40000

Writing at 0x00a60000

Writing at 0x00a80000

Writing at 0x00aa0000

Writing at 0x00ac0000

Writing at 0x00ae0000

Writing at 0x00b00000

Writing at 0x00b20000

Writing at 0x00b40000

Writing at 0x00b60000

Writing at 0x00b80000

Writing at 0x00ba0000

Writing at 0x00bc0000

Writing at 0x00be0000

Writing at 0x00c00000

Writing at 0x00c20000

Writing at 0x00c40000

Writing at 0x00c60000

Writing at 0x00c80000

Writing at 0x00ca0000

Writing at 0x00cc0000

Writing at 0x00ce0000

Writing at 0x00d00000

Writing at 0x00d20000

Writing at 0x00d40000

Writing at 0x00d60000

Writing at 0x00d80000

Writing at 0x00da0000

Writing at 0x00dc0000

Writing at 0x00de0000

Writing at 0x00e00000

Writing at 0x00e20000

Writing at 0x00e40000

Writing at 0x00e60000

Writing at 0x00e80000

Writing at 0x00ea0000

Writing at 0x00ec0000

Writing at 0x00ee0000

Writing at 0x00f00000

Writing at 0x00f20000

Writing at 0x00f40000

Writing at 0x00f60000

Writing at 0x00f80000

Writing at 0x00fa0000

Writing at 0x00fc0000

Writing at 0x00fe0000

Writing at 0x01000000

Writing at 0x01020000

Writing at 0x01040000

Writing at 0x01060000

Writing at 0x01080000

Writing at 0x010a0000

Writing at 0x010c0000

Writing at 0x010e0000

Writing at 0x01100000

Writing at 0x01120000

Writing at 0x01140000

Writing at 0x01160000

Writing at 0x01180000

Writing at 0x011a0000

Writing at 0x011c0000

Writing at 0x011e0000

Writing at 0x01200000

Writing at 0x01220000

Writing at 0x01240000

Writing at 0x01260000

Writing at 0x01280000

Writing at 0x012a0000

Writing at 0x012c0000

Writing at 0x012e0000

Writing at 0x01300000

Writing at 0x01320000

Writing at 0x01340000

Writing at 0x01360000

Writing at 0x01380000

Writing at 0x013a0000

Writing at 0x013c0000

Writing at 0x013e0000

Writing at 0x01400000

~ >: reboot

重启后设置bootargs参数,如下:

[ s3c2440@guowenxue ]# set bootargs 'noinitrd root=/dev/mtdblock5 rootfstype=jffs2 init=/linuxrc console=ttyS0,115200'

[ s3c2440@guowenxue ]# boot

就可启动mtdblock5里的文件系统了。

结束。0b1331709591d260c1c78e86d0c51c18.png

您可能感兴趣的与本文相关的镜像

TensorFlow-v2.9

TensorFlow-v2.9

TensorFlow

TensorFlow 是由Google Brain 团队开发的开源机器学习框架,广泛应用于深度学习研究和生产环境。 它提供了一个灵活的平台,用于构建和训练各种机器学习模型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值