タイミングタスクを作成するためにLinuxプラットフォームを武装させるためにNTP時刻同期ツールを移植する

ソースコードをダウンロードする

wget -c http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2/ntp-4.2.8p14.tar.gz

解凍してコンパイルする

ここに画像の説明を挿入

./configure --prefix=$PWD/install --exec-prefix=$PWD/install --host=arm-none-linux-gnueabi CC=arm-none-linux-gnueabi-gcc --with-yielding-select=yes
make
make install

コンパイルするスクリプト

#!/bin/sh
HOST=arm-none-linux-gnueabi
BUILD_HOST=/home/aron566/opt/arm-2014.05/bin/arm-none-linux-gnueabi-
ARM_GCC=${BUILD_HOST}gcc
ARM_CPP=${BUILD_HOST}g++
BASE=`pwd`
OUTPUT_PATH=${BASE}/install

make_dirs () {
    
    
    #为了方便管理,创建有关的目录
    cd ${BASE} && mkdir compressed install source -p
}

download_package () {
    
    
    cd ${BASE}/compressed
    #下载包
	wget -c http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2/ntp-4.2.8p14.tar.gz
}

tar_package () {
    
    
    cd ${BASE}/compressed
    ls * > /tmp/list.txt
    for TAR in `cat /tmp/list.txt`
    do
        tar -xf $TAR -C ../source
    done
    rm -rf /tmp/list.txt
}

make_ntp () {
    
    
  cd ${BASE}/source/ntp-4.2.8p14
	./configure --prefix=$OUTPUT_PATH/ntp-4.2.8p14 --exec-prefix=$OUTPUT_PATH/ntp-4.2.8p14 --host=$HOST CC=$ARM_GCC --with-yielding-select=yes
	make
	make install
}

make_dirs
download_package
tar_package
make_ntp
exit $?

開発ボードにファイルをアップロードする

インストールディレクトリの下のbinディレクトリの下で実行可能

開発ボードの/usr/binディレクトリにコピーします

実行

時間の同期コマンド

ntpdate time.buptnet.edu.cn

日付を使用して時刻を表示する

日付コマンドを表示すると、北京時間(CST = UTC + 8)から8時間離れたUTC時間(協定世界時)が表示されるため、タイムゾーンを設定する必要があります。

タイムゾーンを設定する

ubuntuシステムディレクトリ/usr/share/zoneinfo/Asia内のファイルをShanghai開発ボードディレクトリにコピーし/etc名前を変更localtimeした後、コマンドを使用してreboot再起動します

このコマンドを使用してUTC時刻を表示できます

date -u

ネットワークから取得したシステム時刻は、ハードウェアクロックに書き込まれます。

hwclock -w

スタートアップアイテムを作成する

S92crontab追加する/etc/init.dディレクトリ、実行権限を追加

#!/bin/sh
#无需修改
DIRECTORY_NAME=/etc/crontabs
#无需修改
CONFIG_NAME=$DIRECTORY_NAME/root
#运行时配置,无需修改
RUN_DIRECTORY_NAME=/var/spool/cron/crontabs
RUN_CONFIG_NAME=$RUN_DIRECTORY_NAME/root

#定时任务
TASK_1="*/1 */1 */1 */1 */1 ntpdate time.buptnet.edu.cn"
TASK_2="*/1 */1 */1 */1 */1 hwclock -w"
start() {
    
    
	#是否存在定时任务配置目录
	if [ ! -d "${DIRECTORY_NAME}" ];then
		mkdir $DIRECTORY_NAME -p
		touch $CONFIG_NAME
		chmod 777 $CONFIG_NAME
		echo $TASK_1>>$CONFIG_NAME
		echo $TASK_2>>$CONFIG_NAME
	fi
	mkdir -p $RUN_DIRECTORY_NAME
	cp -p $CONFIG_NAME $RUN_CONFIG_NAME
	chmod 777 $RUN_CONFIG_NAME
	crond
	[ $? = 0 ] && echo "START Crontabs OK" || echo "START Crontabs FAIL"
}
stop() {
    
    
	echo "STOP Crontabs"
}
restart() {
    
    
	stop
	start
}

case "$1" in
  start)
	start
	;;
  stop)
	stop
	;;
  restart|reload)
	restart
	;;
  *)
	echo "Usage: $0 {start|stop|restart}"
	exit 1
esac

exit $?

Windowsに書き込まれたファイルは、次のコマンドを実行する必要がある場合があることに注意してください

dos2unix S92crontab #消除断元符

ntpサーバー

1.ntpサーバーの開発ボードとntpクライアントのシステム間のネットワーク接続が正常であることを確認します

2.サーバー/etc/ntp.conf
を実行する開発ボード上のファイルを編集し、次のコマンドを実行します。

vi  /etc/ntp.conf 
#restrict default nomodify notrap noquery 
restrict 127.0.0.1 
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap 
server  127.127.1.0        # local clock 
fudge   127.127.1.0  stratum 5 
driftfile /var/lib/ntp/drift 
broadcastdelay   0.008 
keys                     /etc/ntp/keys

3.次に、ntpサーバーを開きます

ntpd  -c /etc/ntp.conf

4. ntpサーバーの電源を入れた後、クライアントシステムで次のコマンドを5〜10分間実行できます。そうしないと、時刻の同期が失敗します。

ntpdate  192.168.1.48  #192.168.1.48修改成你的服务器的IP地址

おすすめ

転載: blog.csdn.net/weixin_42892101/article/details/106877000