Войти

Показать полную графическую версию : Доступ WSL к томам, примонтированным к папке


booroondookZ
15-08-2021, 17:20
Ситуация такая. Раздел диска "прицеплен" (штатными средствами, конечно же) к папке C:\Home. Если кому интересно, то это сделано с целью минимизировать время и трудозатраты на возможное восстановление системы в будущем, дабы меньше пришлось файлов сохранять и копировать. Но сейчас не об этом.
Со стороны самой Windows проблем нет - папка как папка, туда можно войти, манипулировать файламии т.д.
Но WSL эту папку видит как "битый" симлинк - т.е., с недоступной целью. Соответственно, войти в эту папку невозможно.
Команда "dir /al" из-под Windows для этой папки возвращает следующее:
14.08.2021 11:02 <JUNCTION> Home [\??\Volume{2c58f283-0000-0000-0000-60f630000000}\]
Команда "ls -la" из под WSL - следующее:
lrwxrwxrwx 1 root root 0 авг 14 11:02 Home
(т.е., показывает, что это символическая ссылка, но при этом ничего не показывает в качестве "цели")
Что можно придумать, чтобы обеспечить WSL вход в эту папку?

P.S. И попутный вопрос: можно ли (и как) создавать подобные "Junction" на тома именно из командной строки, а не через "Диспетчер дисков"?
Поскольку команда (к примеру) ...
mklink /J c:\mytest \??\Volume{2c58f283-0000-0000-0000-60f630000000}\
...хоть и создает ссылку, но нерабочую. Команда "dir /al" для нее возвращает следующее:
15.08.2021 14:17 <JUNCTION> mytest [c:\??\Volume{2c58f283-0000-0000-0000-60f630000000}\]
...добавляя перед идентификатором раздела букву диска "c:". Из-за этого ссылка и не работает.

Iska
15-08-2021, 17:37
...хоть и создает ссылку, но нерабочую. »
У меня, под Windows 7 SP1 x64 — рабочую:
https://i.imgur.com/id98qVl.png

booroondookZ
15-08-2021, 17:40
У меня, под Windows 7 SP1 x64 — рабочую. »Ну, мы тут в этой ветке вообще-то про Windows 10 говорим.

Iska
15-08-2021, 17:47
…вообще-то про Windows 10 говорим. »
Держите Windows 10:
https://i.imgur.com/QfMqi7i.png

booroondookZ, а если именно symlink создавать, а не junction — что будет?

booroondookZ
15-08-2021, 18:08
Намекаете на необходимость кавычек вокруг имени тома? Хорошо - попробуем с кавычками:
C:\mytest>mklink /J "c:\mytest\test_volume" "\??\Volume{2c58f283-0000-0000-0000-60f630000000}\"
соединение создано для c:\mytest\test_volume <<===>> \??\Volume{2c58f283-0000-0000-0000-60f630000000}\

C:\mytest>dir /a:l
Том в устройстве C не имеет метки.
Серийный номер тома: 785D-D373

Содержимое папки C:\mytest

15.08.2021 17:55 <JUNCTION> test_volume [C:\??\Volume{2c58f283-0000-0000-0000-60f630000000}\]
0 файлов 0 байт
1 папок 165*694*832*640 байт свободно
а если именно symlink создавать, а не junction — что будет? »
Не вопрос:
C:\mytest>mklink /D "c:\mytest\test_volume" "\??\Volume{2c58f283-0000-0000-0000-60f630000000}\"
символическая ссылка создана для c:\mytest\test_volume <<===>> \??\Volume{2c58f283-0000-0000-0000-60f630000000}\

C:\mytest>dir /a:l
Том в устройстве C не имеет метки.
Серийный номер тома: 785D-D373

Содержимое папки C:\mytest

15.08.2021 18:04 <SYMLINKD> test_volume [\??\Volume{2c58f283-0000-0000-0000-60f630000000}\]
0 файлов 0 байт
1 папок 165*626*368*000 байт свободно

C:\mytest>cd test_volume
Синтаксическая ошибка в имени файла, имени папки или метке тома.
Как видим - хоть ссылка и создаётся с правильной целью, но доступа к ней нет.
Пробуем тогда уже и третий вариант - без параметров (хоть это и глупо, но всё же):
C:\mytest>mklink "c:\mytest\test_volume" "\??\Volume{2c58f283-0000-0000-0000-60f630000000}\"
символическая ссылка создана для c:\mytest\test_volume <<===>> \??\Volume{2c58f283-0000-0000-0000-60f630000000}\

C:\mytest>dir /a:l
Том в устройстве C не имеет метки.
Серийный номер тома: 785D-D373

Содержимое папки C:\mytest

15.08.2021 18:06 <SYMLINK> test_volume [\??\Volume{2c58f283-0000-0000-0000-60f630000000}\]
1 файлов 0 байт
0 папок 165*689*851*904 байт свободно

C:\mytest>cd test_volume
Неверно задано имя папки.

Iska
15-08-2021, 21:36
Намекаете на необходимость кавычек вокруг имени тома? »
Нет.

Как видим - хоть ссылка и создаётся с правильной целью, но доступа к ней нет. »
У меня и с symlink'ом работает.

Идей нет.

А к самому каталогу \??\Volume{2c58f283-0000-0000-0000-60f630000000}\ у Вас доступ есть?

booroondookZ
15-08-2021, 21:40
А к самому каталогу \??\Volume{2c58f283-0000-0000-0000-60f630000000}\ у Вас доступ есть? » А как это проверить?
C:\test>cd \??\Volume{2c58f283-0000-0000-0000-60f630000000}\
Системе не удается найти указанный путь.

Короче, вышел из проблемной ситуации методом воркэраунда, а именно:
1. Убрал привязку тома к папке.
2. Назначил тому букву диска.
3. Создал Junction с тем же именем папки, но теперь указывающий не на "системное" имя тома, а просто на букву диска из п.1

P.S. Ребята из Майкрософта знают толк в извращениях....

Iska
15-08-2021, 22:29
А как это проверить? »
Можно в Far Manager'е. Но раз так:
а именно:
1. Убрал привязку тома к папке.
2. Назначил тому букву диска.
3. Создал Junction с тем же именем папки, но теперь указывающий не на "системное" имя тома, а просто на букву диска из п.1 »
у Вас работает, то уже не нужно.

booroondookZ
15-08-2021, 22:32
у Вас работает, то уже не нужно. »Тут дело принципа. Не хочу иметь лишнюю букву диска в окружении

Iska
16-08-2021, 04:00
Понимаю. Ну, вот, хрен его знает — у меня-то работает и через junction, и через symlink.

booroondookZ
16-08-2021, 10:53
Ну это-то ладно. Собственно, вопрос создания ссылки из командной строи стоял на втором месте.
А на первом стоял вопрос доступа WSL к такой ссылке.

Iska
16-08-2021, 13:09
Подождите коллег, занимающихся Linux, они подскажут.




© OSzone.net 2001-2012