tftpサーバー環境の構成
1.tftpサーバープログラムをインストールします
sudo apt-get install tftp-hpa tftpd-hpa
2.tftpサービスを設定します
zh@zh-lpc:~$ sudo vi /etc/default/tftpd-hpa
3.次のように修正します。
# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/home/zh/tftpboot"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="-l -c -s"
4.tftpサービスを開始します
zh@zh-lpc:~$ sudo /etc/init.d/tftpd-hpa start
Starting tftpd-hpa (via systemctl): tftpd-hpa.service.
zh@zh-lpc:~$
5.テストファイルを作成します
zh@zh-lpc:~$ mkdir /home/zh/tftpboot
zh@zh-lpc:~$ touch /home/zh/tftpboot/test.txt
zh@zh-lpc:~$
6.Ubootコマンドラインインターフェイスに入ります
7.サーバーのIPアドレスとIPアドレスを構成します
Uboot;にあるときに、自分のボードのIPアドレスを設定します
所以这个ip是在自己局域网内必须是唯一的
。
setenv ipaddr 192.168.1.99
サーバーのIPを設定します。後でtftpはこのIPからファイルをダウンロードする必要があります;
所以这个ip是tftp服务器的ip
。
setenv serverip 192.168.1.100
設定後、保存することを忘れないでください。保存しないと、再起動後に削除されます
saveenv
技巧:
如果你回车就继续执行上一步的命令的花,你就按Ctrl+C即可。
8.ファイルをダウンロードできるかどうかをテストします
次のステータスが表示された場合、それは成功を意味します
=>
=> tftp test.txt
Using ethernet@020b4000 device
TFTP from server 192.168.1.100; our IP address is 192.168.1.99
Filename 'test.txt'.
Load address: 0x80800000
Loading: #
0 Bytes/s
done
ネットワーク経由でカーネルを起動します
imx6ullで直接実行しますrun netboot
。
失敗したことがわかり、そのようなファイルがないことを示しているので、最初にこれらのファイルを準備しましょう。合計2つ必要です。
- 1、
zImage
- 2、
100ask_imx6ull-14x14.dtb
=> run netboot
Booting from net ...
Using ethernet@020b4000 device
TFTP from server 192.168.1.100; our IP address is 192.168.1.99
Filename 'zImage'.
Load address: 0x80800000
Loading: *
TFTP error: 'File not found' (1)
Not retrying...
Using ethernet@020b4000 device
TFTP from server 192.168.1.100; our IP address is 192.168.1.99
Filename '100ask_imx6ull-14x14.dtb'.
Load address: 0x83000000
Loading: *
TFTP error: 'File not found' (1)
Not retrying...
Bad Linux ARM zImage magic!
=>
2つのファイルを準備します
zh@zh-lpc:~$ ls ~/tftpboot/ -lah
总用量 8.6M
drwxrwxr-x 2 zh zh 4.0K 9月 25 16:58 .
drwxr-xr-x 22 zh zh 4.0K 9月 25 16:55 ..
-rw-r--r-- 1 zh zh 38K 9月 25 16:58 100ask_imx6ull-14x14.dtb
-rw-rw-r-- 1 zh zh 11 9月 25 16:34 test.txt
-rwxrwxr-x 1 zh zh 8.5M 9月 25 16:55 zImage
zh@zh-lpc:~$
再度正常に実行されました!
=>
=> run netboot
Booting from net ...
Using ethernet@020b4000 device
TFTP from server 192.168.1.100; our IP address is 192.168.1.99
Filename 'zImage'.
Load address: 0x80800000
Loading: #############T ########T ############################################
#################################################################
#################################################################
######################################################T ######T #####
#####T ##T ###########################################################
#################################################################
#################################################################
#################################################################
###################################T ##############################
####################
112.3 KiB/s
done
Bytes transferred = 8873336 (876578 hex)
Using ethernet@020b4000 device
TFTP from server 192.168.1.100; our IP address is 192.168.1.99
Filename '100ask_imx6ull-14x14.dtb'.
Load address: 0x83000000
Loading: ###
385.7 KiB/s
done
Bytes transferred = 38370 (95e2 hex)
Kernel image @ 0x80800000 [ 0x000000 - 0x876578 ]
## Flattened Device Tree blob at 83000000
Booting using the fdt blob at 0x83000000
Using Device Tree in place at 83000000, end 8300c5e1
Modify /soc/aips-bus@02200000/epdc@0228c000:status disabled
ft_system_setup for mx6
Starting kernel ...
.....
....
...
省略
[ 64.533635] Bluetooth: hci0: Failed to load rtl_bt/rtl8723b_config.bin
[ 64.540244] Bluetooth: hci0: rtl: loading rtl_bt/rtl8723b_fw.bin
[ 64.546857] bluetooth hci0: Falling back to user helper
[ 110.083855] VFS: Unable to mount root fs via NFS, trying floppy.
[ 110.093753] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)
[ 110.102127] ---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)
[ 125.973127] Bluetooth: hci0: Failed to load rtl_bt/rtl8723b_fw.bin
[ 163.472993] random: crng init done
ここに行けば下がらないことがわかります。
エラーの理由は、ファイルシステムであるrootfsを作成しなかったためです。
私のルートファイルシステム:
ここでは取り上げません。作り方がわからない場合は、このシリーズの次の記事を参照してください。ルートファイルシステムの作成については、次の記事で説明します。
zh@zh-lpc:~/100ask_imx6ull-sdk/Buildroot_2019.02/output/target$ pwd
/home/zh/100ask_imx6ull-sdk/Buildroot_2019.02/output/target
zh@zh-lpc:~/100ask_imx6ull-sdk/Buildroot_2019.02/output/target$ ls
bin dev home lib32 linuxrc mnt proc run sys THIS_IS_NOT_YOUR_ROOT_FILESYSTEM usr
boot etc lib libexec media opt root sbin test.txt tmp var
zh@zh-lpc:~/100ask_imx6ull-sdk/Buildroot_2019.02/output/target$
ルートファイルシステムへのパス:
/home/zh/100ask_imx6ull-sdk/Buildroot_2019.02/output/target
また、nfsサービスを開始する必要があります。
zh@zh-lpc:~$ cat /etc/exports
/home/zh *(rw,sync)
zh@zh-lpc:~$
起動:
/etc/init.d/nfs-kernel-server restart
nfsを起動した後、showmountコマンドを使用して、ローカルマシンまたは他のホストによって共有されているファイルを表示できます。
zh@zh-lpc:~$ showmount -e
Export list for zh-lpc:
/home/zh *
zh@zh-lpc:~$
zh@zh-lpc:~$
zh@zh-lpc:~$
zh@zh-lpc:~$ showmount -e 192.168.1.100
Export list for 192.168.1.100:
/home/zh *
zh@zh-lpc:~$
開発ボードでnfsrootのアドレスを構成します。
1. priコマンドを使用して、既存の環境変数を表示できます。
2.重要なものは次のとおりです。
nfsroot=${serverip}:${nfsroot}
nfsrootの環境変数を構成せずにserverip=192.168.1.100を構成しました。
したがって、構成する必要があります。
netargs=setenv bootargs console=${console},${baudrate} root=/dev/nfs ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp
3.nfsroot環境変数を構成します
保存することを忘れないでください
setenv nfsroot /home/zh/100ask_imx6ull-sdk/Buildroot_2019.02/output/target
saveenv
4.次にrun netboot
、コマンドを入力してネットワークから再起動します
run netboot
5.成功したかどうかを確認します
成功すると、図に示すようなインターフェイスが表示されます
dfコマンドを入力して、ルートディレクトリがマウントされていることを確認します。
利便性とテスト
利点1:ファイルの内容がリアルタイムで同期されます。
PCまたは独自のLinux仮想マシンのmakeのルートディレクトリに単純なファイルを作成します
zh@zh-lpc:~$
zh@zh-lpc:~$ echo "zhenghui haha" > /home/zh/100ask_imx6ull-sdk/Buildroot_2019.02/output/target/root/zhenghui.txt
zh@zh-lpc:~$
開発ボードですぐに同期されることがわかります。
利点2:
システム内のコードファイルが変更され、再起動するだけで新しいコードプログラムを自動的にマウントして実行できます。