Здравствуйте. Я установил ARCH и очень им доволен. Но когда я настроил автоматический запуск X без входа через agetty, то в vt1 стало вываливаться сообщение об ошибке от xauth. Сообщение говорит, что xauth не может найти файл с длинным странным именем (позже оказалось, что это случайное число в hex, генерируемое mcookie).
Я нашёл место в файле /usr/bin/startx, где происходит некорректный вызов xauth, вот листинг этого участка:
for displayname in $authdisplay $hostname$authdisplay; do
authcookie=`xauth list "$displayname" \
| sed -n "s/.*$displayname[[:space:]*].*[[:space:]*]//p"` 2>/dev/null;
if [ "z${authcookie}" = "z" ] ; then
xauth -q << EOF
add $displayname . $mcookie
EOF
removelist="$displayname $removelist"
else
dummy=$(($dummy+1));
# метка 1
xauth -q -f "$xserverauthfile" << EOF
add :$dummy . $authcookie
EOF
# метка 2
fi
done
На этом участке вызывается xauth для 2-х значений $displayname - :0 и localhost.localdomain:0 . Ошибку выдаёт код между метками 1 и 2. Причём я обнаружил, что в случае $displayname=:0 xauth не ругается, а в случае $displayname=localhost.localdomain:0 xauth ругается потому, что $authcookie содержит два длинных числа в hex, разделённых пробелом, вместо одного числа в первом случае.
Оказалось, что xauth list localhost.localdomain:0 выводит следующее:
localhost.localdomain:0 MIT-MAGIC-COOKIE-1 d6e83a087d8f10ad756de8c41a06c9ed
localhost.localdomain:0 MIT-MAGIC-COOKIE-1 d6e83a087d8f10ad756de8c41a06c9ed
В то время как xauth list :0 выводит
localhost.localdomain:0 MIT-MAGIC-COOKIE-1 d6e83a087d8f10ad756de8c41a06c9ed
Вот содержимое файла /etc/hosts на моей машине:
127.0.0.1 localhost.localdomain localhost arch
То есть понятно, что startx ожидает одну строку, а получает две.
Вопрос к аудитории: это баг в startx или в xauth ?