シングルユーザーシェルのプロセスIDがpidで、
do {
} while (wpid != pid && !requested_transition);
で、親プロセス(init)はシングルユーザーシェルの終了を待っている。
(シングルユーザーシェルはインタラクティブシェル)

> 子プロセスのシェルはどこからSIGSTOP受け取るんでしょうか?
親がシェルならsuspendして親シェルに戻るけど、親がシェルじゃないから、
シングルユーザーシェルからkill -STOP $$とかやったら固まるでしょ。
それを避けるためにリスタートする。