为什么重新启动 inittab 操作要求我提供 ID?

为什么重新启动 inittab 操作要求我提供 ID?

我正在关注NAND固件更新尝试让我的系统从 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。

[注意:您的线路还存在其他问题。它缺少运行级别。我不确定“重新启动”动作是什么,也许应该是“重生”。它真的是“reS”而不是“rcS”吗? ]

相关内容