Jump to content
Калькуляторы

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

Есть хост на 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 убрать и оставить нормальный каталог, то таких глюков уже нет.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
48 минут назад, alibek сказал:

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

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

Share this post


Link to post
Share on other sites
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/

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this