私はフォローしていますNANDファームウェアアップデートシステムをリフレッシュできるようにRAMでシステムを実行する方法のチュートリアル。以前はスクリプトを実行していましたが、何らかの理由でわかりませんが、次のような結果が出ました。
INIT: /etc/inittab[44]: missing id field
以前はうまくいきましたが、なぜinittabが最近再起動操作のためにidフィールドを要求し始めたのかわからないようです。
なぜこのエラーメッセージが表示されるのか知っていますか?どんな洞察力でも大変感謝します!
注:kill -HUP 1
実行すると、次の行にエラーが発生しますinittab
。
::restart:/reS
Flashの更新に使用したいスクリプトは次のとおりです。
NEWROOTDIR=/tmp/newroot
mkdir -p ${NEWROOTDIR}
mount -t tmpfs none ${NEWROOTDIR}
cd /
echo Copying existing file system ...
echo Copying bin ...
cp -a bin ${NEWROOTDIR}
echo Copying dev ...
cp -a dev ${NEWROOTDIR}
echo Copying etc ...
cp -a etc ${NEWROOTDIR}
echo Copying lib ...
cp -a lib ${NEWROOTDIR}
echo Copying sbin ...
cp -a sbin ${NEWROOTDIR}
echo Copying usr ...
cp -a usr ${NEWROOTDIR}
echo Copying home ...
cp -a home ${NEWROOTDIR}
echo Done copying existing file system
echo Creating folders
mkdir ${NEWROOTDIR}/root
mkdir ${NEWROOTDIR}/proc
mkdir ${NEWROOTDIR}/sys
mkdir ${NEWROOTDIR}/oldroot
echo Killing all system processes
killall5 -9
echo Rebinding /proc to the new root
mount --bind /proc ${NEWROOTDIR}/proc
echo Pivoting to new root
cd ${NEWROOTDIR}
/sbin/pivot_root . oldroot
cd /
echo Cleaning up inittab
grep -v restart /oldroot/etc/inittab > /etc/inittab
echo Inserting the restart command into inittab
echo "::restart:/reS" >> /etc/inittab
echo "umount /oldroot" >> /reS
echo "/usr/sbin/ubiformat ${mtd_fs} -f /oldroot/var/volatile/tmp/fs.img -O 2048" >> /reS
chmod 777 /reS
echo Killing HUP
kill -HUP 1
sleep 1
echo killing QUIT
echo Restarting
kill -QUIT 1
sleep 5
答え1
IDフィールドが欠落している行にIDフィールドが欠落しているというエラーが発生します。
~からinittab(5)
マンページ:
inittabファイルのエントリ形式は次のとおりです。
id:runlevels:action:process
「#」で始まる行は無視されます。
id is a unique sequence of 1-4 characters which identifies an entry in inittab […]
最近間違った行を追加した可能性があり、以前に気づかなかったバージョンのinitを実行した可能性があります。メッセージを確認できなかったか、メッセージが正しく記録されていない可能性があります。
とにかく解決策は簡単です。 IDを追加するだけです。
[注:回線に他の問題があります。ランレベルがありません。 「再起動」の操作が何であるかよくわかりません。 「再起動」する必要があるかもしれません。本当に「rcS」ではなく「reS」ですか? ]