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

Join the conversation

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

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.