나는 팔로우하고 있다낸드 펌웨어 업데이트시스템을 새로 고칠 수 있도록 RAM에서 시스템을 실행하는 방법에 대한 튜토리얼입니다. 이전에 스크립트를 실행했지만 어떤 이유에서인지는 모르겠지만 다음과 같은 결과가 나왔습니다.
INIT: /etc/inittab[44]: missing id field
이전에는 잘 작동했지만 왜 inittab이 최근에야 다시 시작 작업을 위해 id 필드를 요청하기 시작했는지 알 수 없는 것 같습니다.
왜 이 오류 메시지가 나타나는지 아시나요? 어떤 통찰력이라도 대단히 감사하겠습니다!
참고: kill -HUP 1
실행할 때 다음 줄에 오류가 발생합니다 inittab
.
::restart:/reS
플래시를 업데이트하는 데 사용하려는 스크립트는 다음과 같습니다.
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"인가요? ]