タイミングタスクを作成するために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地址