系统移植 搭建nfs服务器,启动盘,内核安装和加载

目录

1. nfs 服务器网络环境搭建

1.1. 查看是否安装了 nfs 服务器

1.2. 修改nfs配置文件

1.3. 创建nfs工作目录

1.4. 重启nfs服务

1.5. 开始测试是否成功

2. SD 卡启动盘

2.1. 方法1:从0扇区开始烧写

2.2. 方法2:直接部署

3. Linux 内核的安装与加载

3.1. 使用tftp和emmc加载内核和根文件系统

3.2. 通过tftp加载内核通过nfs挂载根文件系统

4. uboot安装到EMMC


1. nfs 服务器网络环境搭建

1.1. 查看是否安装了 nfs 服务器

dpkg -s nfs-kernel-server

系统移植 搭建nfs服务器,启动盘,内核安装和加载_第1张图片


出现ok代表安装成功

若是未出现,在联网的情况下使用

sudo apt-get install nfs-kernel-server

安装nfs服务器

1.2. 修改nfs配置文件

使用下面命令打开nfs配置文件

sudo vi /etc/exports

系统移植 搭建nfs服务器,启动盘,内核安装和加载_第2张图片


为了方便我把其放到下面
/opt/6818/rootfs *(rw,sync,no_subtree_check,no_root_squash)

1.3. 创建nfs工作目录

sudo mkdir -p /opt/6818/rootfs 创建工作目录

sudo chmod -R 777 /opt/* 增加工作目录权限

说明创建成功

1.4. 重启nfs服务

每次重启 ubuntu都需要重启 nfs

sudo service nfs-kernel-server restart

1.5. 开始测试是否成功

》1.在/opt/6818/rootfs下创建文件

系统移植 搭建nfs服务器,启动盘,内核安装和加载_第3张图片

》2.创建挂载文件

sudo mount -t nfs localhost:/otp/6818/rootfs /mnt

系统移植 搭建nfs服务器,启动盘,内核安装和加载_第4张图片

》3.查看文件是否同步

比较mnt文件和rootfs文件里面内容是否一致

》4.若是想要取消挂载可以使用下面指令

sudo umount /mnt 取消挂载命令

2. SD 卡启动盘

本试验:需要ubootpak.bin文件

2.1. 方法1:从0扇区开始烧写

》1.将资料中“源文件”中的 ubootpak.bin 文件放到 Ubuntu 内的文件夹中

cd ~ 到家目录

mkdir Linux 创建Linux文件

cd Linux 进入文件

mkdir 6818 创建6818文件

cd 6818 进入文件

mkdir uboot 创建uboot文件

将ubootpak.bin文件放入

》2.输入下面命令制作zero.bin空镜像

sudo dd if=/dev/zero of=zero.bin count=1

》3.执行下面命令生成uboot.bin文件

cat zero.bin ubootpak.bin>uboot.bin

》4.生成1M的clear.bin空镜像

sudo dd if=/dev/zero of=clear.bin count=2048

》5.使用Win32Disklmager将镜像烧写到SD卡

将ubuntu下的uboot.binclear.bin放到windows下

注意烧写顺序:

先烧写clear.bin后烧写uboot.bin

系统移植 搭建nfs服务器,启动盘,内核安装和加载_第5张图片

2.2. 方法2:直接部署

》1.虚拟机--》可移动设备--》 realtek USB3.0-CRW---》连接
》2. 把资料包里的sdtool压缩包放到虚拟机里,并解压

sudo tar -xvf sdtool

在 ubuntu 中执行命令
sudo ./s5p6818-sdmmc.sh /dev/sdb ubootpak.bin
如果打印一下信息表示,部署成功:

688+1 records in
689+0 records out
352768 bytes (353 kB) copied, 0.00914641 s, 38.6 MB/s
^_^ The image is fused successfully

3. Linux 内核的安装与加载

实验3.1:需要uImage内核文件和ramdisk文件系统镜像

实验3.2:需要rootfs-A53-ok.tar

3.1. 使用tftp和emmc加载内核和根文件系统

将资料中uImage和ramdisk,拷贝到 ubuntu中tftp工作目录下

系统移植 搭建nfs服务器,启动盘,内核安装和加载_第6张图片

3.1.1. 重启 tftp 服务器

执行命令重启服务器

sudo service tftpd-hpa restart

3.1.2. 开发板操作

》1.在uboot交互模式下执行下面指令

tftp 0x41000000 uImage 传输uImage到开发板

》2.将内核镜像写入到 EMMC 中指定的扇区
mmc write 0x41000000 0x800 0x4000

上条代码分析

mmc 指定要执行的 MMC(多媒体卡)命令的标识符

write 指定要执行的操作的关键字,表示要进行写入操作

0x41000000 目标写入地址,十六进制地址,将数据写入到 eMMC 中的指定扇区

0x800 数据起始地址是0x800,内核镜像在内存中的起始位置

0x4000 写入的数据的大小,以字节为单位

》3.根文件系统镜像到内存中

tftp 0x41000000 ramdisk.img 传输ramdisk.img到开发板

》4.将根文件系统镜像写入到 EMMC 中指定的扇区

mmc write 0x41000000 0x20800 0x20800

》5.启动方式是从EMMC驱动,所以修改uboot启动方式

代码放下面,复制时得和上面格式相同

setenv bootcmd mmc read 0x48000000 0x800 0x4000\;mmc read 0x49000000 0x20800 0x20800\;bootm 0x48000000 0x49000000

setenv bootargs root=/dev/ram rw initrd=0x49000040,0x1000000 rootfstype=ext4 init=/linuxrc console=ttySAC0,115200

saveenv

》6.重启开发板,什么都不操作,出现下面界面成功

系统移植 搭建nfs服务器,启动盘,内核安装和加载_第7张图片

3.2. 通过tftp加载内核通过nfs挂载根文件系统

3.2.1. 文件操作

》1.将资料中“源文件”目录下的“rootfs-A53-ok.tar”拷贝到 ubuntu 中 nfs 工作目录下

放到/opt/6818/rootfs

》2.解压根文件系统到 nfs 工作目录

sudo tar -xvf rootfs-A53-ok.tar 解压命令

解压后删除安装包

rm rootfs-A53-ok.tar 删除命令

》3.修改uboot启动参数

注意代码分行

setenv bootcmd tftp 0x48000000 uImage\;bootm 0x48000000

setenv bootargs root=/dev/nfs nfsroot=192.168.1.125:/opt/6818/rootfs/rootfs rw console=ttySAC0,115200 init=/linuxrc ip=192.168.1.200

saveenv

》4.重启nfs服务器

sudo service nfs-kernel-server restart 重启服务器命令

》5.开发板重新上电

系统移植 搭建nfs服务器,启动盘,内核安装和加载_第8张图片

说明成功

4. uboot安装到EMMC

本试验:需要ubootpak.bin文件中

》1.将资料ubootpak.bin拷贝到ubuntu中tftp工作目录

系统移植 搭建nfs服务器,启动盘,内核安装和加载_第9张图片

》2.在uboot交互下安装uboot

tftp 0x41000000 ubootpak.bin

如下图:

》3.将内核镜像安装到EMMC中指定扇区

执行下面命令

update_mmc 2 2ndboot 0x41000000 0x200 0x28A

成功显示

下图是命令详解

系统移植 搭建nfs服务器,启动盘,内核安装和加载_第10张图片

》4.关闭开发板电源,调整拨码开关位置为 EMMC 启动

系统移植 搭建nfs服务器,启动盘,内核安装和加载_第11张图片

》5.给开发板重新上电,观察 uboot 是否能正常启动
 

你可能感兴趣的:(ARM,ubuntu,linux,arm开发,嵌入式硬件)