Mounting root file system ... /init: line 221: arithmetic syntax error

Debianサーバ無限ポチポチのお作法 - NoiseFactoryを参考にDebian sidでVirtFSを用いた仮想環境を設定しようとしたところ、起動中に

Begin: Mounting root file system ... /init: line 221: arithmetic syntax error
以下略Kernel panic

となり停止してしまった。起動時のコマンドは

sudo kvm -virtfs local,path=./debian9p,mount_tag=debian9p,security_model=none \
-kernel ./debian9p/vmlinuz -initrd debian9p/boot/initrd.img-3.2.0-4-amd64 \
-append "rootfstype=9p rootflags=trans=virtio root=debian9p"

である。

initの中で停止しているのでinitrdを展開して追いかけてみる。/initの221行目は

parse_numeric ${ROOT}

であった。ROOTはカーネルコマンドラインオプションとして渡しているrootパラメータ、つまりdebian9pである。
さらに/scripts/functionsのparse_numericを見てみる。

# lilo compatibility
parse_numeric() {
	case $1 in
	"")
		return
		;;
	/*)
		return
		;;
	[0-9]*:[0-9]*)
		minor=$(( ${1#*:} ))
		major=$(( ${1%:*} ))
		;;
	[A-Fa-f0-9]*)
		value=$(( 0x${1} ))
		minor=$(( ${value} % 256 ))
		major=$(( ${value} / 256 ))
		;;
	*)
		return
		;;
	esac
	()
}

つまり、最初の文字が[A-Fa-f0-9]のどれかであればそれを16進数として認識しようとしてしまうわけだ。これはちょっと問題ではないだろうか。書いた人は正規表現の[A-Fa-f0-9]+のつもりで書いたのではないかと思いたくなる条件だ。
bashならともかくbusyboxではパターンマッチではそれを表現するのは無理だが、grepに投げて追加の判定をしたほうがいいのではなかろうか。

とりあえず最初の問題のアドホックな解決策としては、mount_tagを[A-Fa-f0-9]で始まらないような適当な名前に変えればよい。無事起動することが確認できた。