服务器开启 tftp 用来传输 dtb 和 kernel vmimage

配置 tftp 服务端

首先安装 tftp 服务, sudo apt install tftpd-hpa,然后检查服务是否启动,sudo systemctl status tftpd-hpa,这个需要等待一会才能返回信息。

然后配置 tftp 服务, sudo vim /etc/default/tftpd-hpa,username 这一项要和 tftp 目录的 owner 相对应,address 是对应的端口号, options 中的 secure 是自动更新目录,create 是可以创建和上传文件。 修改如下:

TFTP_DIRECTORY="/tftpboot"

然后是配置 tftp 目录:

sudo mkdir /tftp
sudo chown tftp:tftp /tftp

接着是重启并检查状态:

sudo systemctl restart tftpd-hpa
sudo systemctl status tftpd-hpa

在客户端安装 tftp 客户端,测试服务端有没有问题。

首先安装 tftp 客户端 sudo apt install tftp-hpa, 然后再服务器端使用 ifconfig 或者 ip -a 来获取服务器地址,然后再客户端使用 tftp 192.168.0.10 类似的命令来连接上服务器端的 tftp 服务。 在 tftp 的环境下,输入 verbose 开启 verbose 模式,然后可以通过 get xxx.txt 来下载文件,通过 put xxx.txt 来上传文件。 都是从当前目录进行上传和下载,最后使用 quit 来退出 tftp 模式。

可以使用 ? 或者 help 来查询命令。

参考:

https://linuxhint.com/install_tftp_server_ubuntu/ https://wangchujiang.com/linux-command/c/tftp.html

服务器开启 nfs 用来共享 rootfs

配置 nfs 服务器端

首先安装nfs,sudo apt install nfs-kernel-server.

然后创建 nfs 文件夹, sudo mkdir -p /nfs/rootfs/, 然后因为 nfs 传输 root 属性的文件时会改为 nobody:nogroup,所以需要修改文件夹的 owner,sudo chown nobody:nogroup /nfs/rootfs/

然后修改 exports,sudo vim /etc/exports,内容增加 /nfs/rootfs *(rw,sync,no_root_squash)

然后重启 nfs 服务,sudo systemctl restart nfs-kernel-server

然后检查 ufw 状况, sudo ufw status,如果启动,那么需要 sudo ufw allow from 203.0.113.24 to any port nfs 类似这样的来放行。

安装 nfs 客户端

首先安装 nfs, sudo apt install nfs-common. 然后新建测试文件夹,mkdir nfs_test 挂载nfs,sudo mount 192.168.0.10:/nfs/rootfs /home/xyz/nfs_test/ 使用 df -h 可以查看挂载的情况,使用 du -sh ./nfs_test/ 可以查看文件夹内部使用情况。

测试

在客户端上创建一个文件,在客户端上就能够查看到,使用 ll 命令可以查看 owner,如果在服务器端配置 exports 里面的 no_root_squash,那么就是 root,否则就是 nobody:nogroup

参考:

https://www.digitalocean.com/community/tutorials/how-to-set-up-an-nfs-mount-on-ubuntu-18-04 https://blog.csdn.net/flfihpv259/article/details/53926871?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-8.control&dist_request_id=1332042.22423.16193225079781727&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-8.control https://blog.csdn.net/qq_36357820/article/details/78488077

修改内核

修改内核中的选项

File systems  ---> 
   [*] Network File Systems  ---> 
       <*>   NFS client support 
       <*>     NFS client support for NFS version 2
       <*>     NFS client support for NFS version 3     
       [*]   Root file system on NFS

General setup  --->
   [N] Initial RAM filesystem and RAM disk (initramfs/initrd) support

准备文件

准备内核和设备树

复制 boot.img 和 dtb.img 到 tftp 目录

修改boot

修改 uboot 变量

setenv nfsfile boot.img
setenv rootpath /nfs/rootfs/
setenv ipaddr 10.15.5.3
setenv serverip 10.15.5.30
setenv nfsargs 'set bootargs root=/dev/nfs rw nfsroot=${serverip}:${rootpath} proto=tcp nfsvers=3 clkin_hz=(25000000) earlyprintk=serial,uart0,115200 console=ttySC0,115200 mem=224M'
setenv nfsboot 'tftp ${loadaddr} ${nfsfile};tftp ${dtbaddr} ${dtbfile};run nfsargs;run addip;bootm ${loadaddr} - ${dtbaddr}'
setenv bootcmd run nfsboot

测试网络

使用 ping 来测试和服务器之间通不通。

下载内核

tftp

参考:

https://docs.khadas.com/zh-cn/vim3/LoadImagesWithUBootViaTFTP.html https://blog.csdn.net/Slade99X/article/details/104774142

加载文件系统

标签: build, nfs

添加新评论