Перейти к содержимому
Калькуляторы

Странный глюк с симлинками

Есть хост на Windows 7 с VirtialBox 6.

На виртуальной машине установлен Debian 9 (в текстовом режиме, без иксов).

Хочу установить guest additions.

Установил пакеты build-essential и module-assistant, подготовил модули ядра (m-a prepare), запускаю установку (sh /media/cdrom/VBoxLinuxAdditions.run --nox11). В процессе установки ругается на отсутствие иксов, но это вроде бы нормально (баг инсталлятора).

Тем не менее гостевые модули ядра не собираются и не загружаются.

И вот что выяснилось.

 

/usr/src является симлинком на /data/src:

r# ls -l /usr/src
lrwxrwxrwx 1 root root 9 May 19 16:11 /usr/src -> /data/src

В процессе сборки модулей в /usr/src создаются симлинки linux-kbuild-4.9 (на ../lib/linux-kbuild-4.9) и linux (на linux-headers-4.9.0-9-amd64), а внутри linux еще один симлинк-подкаталог scripts (на ../../lib/linux-kbuild-4.9/scripts).

Так вот относительные симлинки почему-то не работают, mc их показывает красным цветом (как невалидные), при попытке перейти в этот каталог выдает ошибку (cd: ../../lib/linux-kbuild-4.9/scripts: No such file or directory).

А вот если симлинк отредактировать и относительные пути заменить на абсолютные (/usr/lib/linux-kbuild-4.9 и /usr/lib/linux-kbuild-4.9/scripts) — то симлинки тут же начинают работать.

Если их снова заменить на относительные — снова перестают работать.

 

Другими словами:

root@srv-test:/usr/src# pwd
/usr/src

root@srv-test:/usr/src# ls -l 
lrwxrwxrwx 1 root root   27 May 19 19:55 linux -> linux-headers-4.9.0-9-amd64
drwxr-xr-x 4 root root 4096 May 19 19:51 linux-headers-4.9.0-3-amd64
drwxr-xr-x 4 root root 4096 May 19 19:51 linux-headers-4.9.0-3-common
drwxr-xr-x 4 root root 4096 May 19 19:52 linux-headers-4.9.0-3-common-rt
drwxr-xr-x 4 root root 4096 May 19 19:52 linux-headers-4.9.0-3-rt-amd64
drwxr-xr-x 4 root root 4096 May 19 20:47 linux-headers-4.9.0-9-amd64
drwxr-xr-x 4 root root 4096 May 19 19:55 linux-headers-4.9.0-9-common
lrwxrwxrwx 1 root root   23 May 19 20:49 linux-kbuild-4.9 -> ../lib/linux-kbuild-4.9

root@srv-test:/usr/src# cd linux-kbuild-4.9 
bash: cd: linux-kbuild-4.9: No such file or directory

root@srv-test:/usr/src# cd ../lib/linux-kbuild-4.9
root@srv-test:/usr/lib/linux-kbuild-4.9#

Я прям даже не знаю, что думать.

/data — обычный подключенный раздел, файловая система ext4, стандартные опции монтирования.

Почему симлинки так странно работают?

 

Если же симлинк /usr/src->/data/src убрать и оставить нормальный каталог, то таких глюков уже нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Сообразил. Точнее смутно вспомнил, что у симлинка есть нюансы, если он ведёт на другой раздел. Видимо это один из таких нюансов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

48 минут назад, alibek сказал:

Сообразил. Точнее смутно вспомнил, что у симлинка есть нюансы, если он ведёт на другой раздел. Видимо это один из таких нюансов.

Нету таких нюансов. Хардлинк - да, не может вести на другор раздел.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

11 hours ago, alibek said:

lrwxrwxrwx 1 root root 23 May 19 20:49 linux-kbuild-4.9 -> ../lib/linux-kbuild-4.9

root@srv-test:/usr/src# cd linux-kbuild-4.9

bash: cd: linux-kbuild-4.9: No such file or directory

Ну да, оно пыталось перейти в /data/lib/

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Видимо придётся через nullfs тебе монтировать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.