LINUX.ORG.RU

[РЕШЕНО]Монтирование ISO образа для wine

 , , ,


0

1

Пытаюсь смонтировать образ программы(lightroom 6 ) для установки в wine.

Проблема заключается в следующем:

Когда я монтирую файл, он монтируется в RO. Так же права принадлежат nobody. Во время установки через wine, установщик думает, что диск не вставлен. Я думаю, что это может быть связано с двумя вышеперечисленными проблемами.

Вот вывод file, ls и mount

Файловая система образа UDF:

file Adobe.Photoshop.Lightroom.CC.v6.12.iso 
Adobe.Photoshop.Lightroom.CC.v6.12.iso: UDF filesystem data (version 1.5) 'Lightroom 6'

Монтирую так:

sudo mount bla-bla.iso ~/lightroom-mount

Права на файлы принадлежат никому:

ls -l lightroom-mount 
total 74532
-r--r--r-- 1 nobody nobody  2293760 Jun  9  2016  AUTORUN.exe
-r--r--r-- 1 nobody nobody       64 Feb 22  2015  autorun.inf
-r--r--r-- 1 nobody nobody   488477 Dec 15  2016  Helper.exe
dr-xr-xr-x 6 nobody nobody      284 Jan 16  2017  install
dr-xr-xr-x 3 nobody nobody      152 Jul 19  2017  patch
-r--r--r-- 1 nobody nobody 34102839 May  1  2016  PDApp.app

При попытке изменить права пишет следующее:

sudo chown username:username lightroom-mount
chown: changing ownership of 'lightroom-mount': Read-only file system

При попытке перемонтировать данный образ в режиме RW пишет следующее:

sudo mount -o rw,remount lightroom-mount
mount: /home/wh75er/lightroom-mount: cannot remount /dev/loop0 read-write, is write-protected.

С точки зрения wine проблемы вроде как не должно быть. В winecfg в разделе drive создал еще один диск для CDROM

Помогите решить данную проблему - изменить права на с RO на RW и изменить владельца смонтированного образа. Или объясните, пожалуйста, как можно по-другому примонтировать образ в wine, чтобы он воспринимал его как диск

UPD.

Вот что wine выдает про диск D когда установщик пишет, что не удалось найти диск:

wine: Read access denied for device L"\\??\\D:\\", FS volume label and serial are not available.



Последнее исправление: wh75per (всего исправлений: 3)

Запусти winecfg, добавь там новый диск, укажи, что это cd/dvd и укажи точку монтирования iso образа.

infomeh ★★
()
Ответ на: комментарий от infomeh
В winecfg в разделе drive создал еще один диск для CDROM

Это уже сделано. Путь до точки монтирования указан там верно, CD-ROM стоит. Мне кажется, что проблема в правах доступа и во владельце.

wh75per
() автор топика
Ответ на: комментарий от wh75per

Мне кажется,

Ясно же написано, что установщик хочет сер.номер и метку диска. Вот и укажите ее в winecfg.

i586 ★★★★★
()
Ответ на: комментарий от anonymous
fuseiso blabla.iso lightroom-mount
ls -l lightroom-mount 
total 18631
-r--r--r-- 1 root root  2293760 Jun  9  2016  autorun.exe
-r--r--r-- 1 root root       64 Feb 22  2015  autorun.inf
-r--r--r-- 1 root root   488477 Dec 15  2016  helper.exe
-r--r--r-- 1 root root 10064096 May 31  2016 'how to install.mp4'
dr-xr-xr-x 1 root root     2048 Jan 16  2017  install
-r--r--r-- 1 root root 29360900 Dec  8  2016 ''$'\312\340\352'' '$'\363\361\362\340\355\356\342\350\362\374''.mp4'
dr-xr-xr-x 1 root root     2048 Jul 19  2017  patch
-r--r--r-- 1 root root 34102839 May  1  2016  pdapp.app

Я попрежнему не могу сменить владельца и права доступа. Ошибка в wine осталась прежней

wh75per
() автор топика

mount -o uid=...
Хотя смысл непонятен, исошник всё равно будет ro (на то он исошник), права там 444, так что от владельца ничего не зависит.

TheAnonymous ★★★★★
()
Последнее исправление: TheAnonymous (всего исправлений: 1)
Ответ на: комментарий от wh75per

Назначить label and SN в wine всегда можно, создав в соответствующей директории файлы

.windows-label:<yourlabel>
.windows-serial:<yoursn>

Только я сомневаюсь, что проблема в этом. Это же не единственная ошибка в выхлопе wine?

ls -l lightroom-mount 
total 74532

ls -l lightroom-mount 
total 18631

Это как?

i586 ★★★★★
()
Последнее исправление: i586 (всего исправлений: 1)
Ответ на: комментарий от TheAnonymous

Да, проблема была в правах доступа у /dev/loop0

нашел на дебиан форуме https://debianforum.ru/index.php/topic,15925.0.html

Решение

sudo chown username /dev/loop0
sudo mount -o loop blabla.iso ~/lightroom-mount

После этих манипуляций wine увидел диск

wh75per
() автор топика
Ответ на: комментарий от i586

проблема решена, ошибка в правах доступа /dev/loop0 была. Размер папки менялся потому, что я удалял там ненужный видео файл с описанием установки по виндой

wh75per
() автор топика
Ответ на: комментарий от anonymous

Предложи другое решение, умник. После установки права спокойно можно поставить назад.

Я осознаю, что это далеко не элегантный способ. Давай выкладывай, как бы сделал ты

wh75per
() автор топика

В 2006 году в SUSE 10.1 у меня были проблемы при монтировании образов дисков Worms Armageddon, Heroes of Might & Magic 3 и Morrowind.

Если настоящий диск был вставлен в настоящий CD-привод, то в winecfg в разделе «диски» можно было увидеть, что /media/MORROWIND это CD-ROM с такой-то там меткой тома и таким-то там серийным номером. Как он это определял - я не знаю. Я не знаю, чем отличается примонтированный CD-ROM от примонтированного жёсткого диска, например. Но Wine определял. Наверное через HAL.

А вот если подключать образ:

mkdir /mnt/iso
mount -t iso9660 /windows/C/ISO/Morrowind.iso -o loop /mnt/iso

Ничего не определяет. Пишет что это «Hard Drive». Меняю вручную на CD-ROM и вписываю метку тома. Запускаю winecfg снова, и там снова прописан «Hard Drive».

Если запустить Wine от root, то примонтированный образ видится как CD-ROM с меткой тома.

Как это вообще работает?

Всё решилось, когда вышла программа cdemu. Она эмулирует CD-ROM. Даже в Nero Linux можно увидеть этот виртуальный CD-ROM среди реального Optiarc и неровского Image Writer.

Программа CDemu состоит из драйвера vhba, библиотеки libmirage, демона cdemud, и оболочек для командной строки и графической оболочки. Драйвер vhba не привередлив к версии ядра, и компилируется наверное с любым ядром. Код драйвера имеет маленький размер. Библиотека libmirage поддерживает монтирование не только образов ISO, но и даже MDF/MDS! Поможет ли это в перспективе обойти защиту StarForce, вопрос открытый.

sudo modprobe vhba
cdemud -b session
(в другом терминале) cdemu load 0 /windows/C/ISO/Morrowind.iso

И всё: winecfg видит примонтированный образ, как CD-ROM.

ZenitharChampion ★★★★★
()
Последнее исправление: ZenitharChampion (всего исправлений: 3)
Ответ на: комментарий от AnDoR

Да, это десктоп. Возможно я что-то не так делаю, но после:

usermod -aG disk username
groups username
wheel disk username

Ничего не изменилось. Я думаю, что решение с cdemu рабочее

wh75per
() автор топика
Ответ на: комментарий от ZenitharChampion

Не знаю, для меня данный способ не сработал… Образ загрузился через cdemu, но wine по-прежнему не видит ничего

wh75per
() автор топика
Ответ на: комментарий от ZenitharChampion

Для автоматического вычитывания label и SN нужны права на устройство, которые есть у рута. Некоторым устройствам с тэгом uaccess вот тут вызовом acl_set_file() динамически устанавливается нужный ACL.

Так как

SUBSYSTEM=="block", ENV{ID_CDROM}=="1", TAG+="uaccess"

то scsi устройство, создаваемое cdemu, оказывается доступным для wine в текушей (пользовательской) сессии.

Как это могло работать в 2006 году – ума не приложу.

Из соображений безопасности я бы устанавливал label и SN для wine вручную, как я писал выше. Или setfacl.

i586 ★★★★★
()
Последнее исправление: i586 (всего исправлений: 3)
Ответ на: комментарий от wh75per

Перелогиниться надо. Но это тоже плохой вариант. Cdemu – самый опасный вариант, т.к. подгружает левый модуль.

i586 ★★★★★
()
Ответ на: комментарий от i586

Код модуля открыт - бери и читай код.

Я тут попробовал добавить юзера в группы cdrom и disk, а также сделать chown /dev/loop0. Ура - winecfg видит примонтированный образ!

ZenitharChampion ★★★★★
()
Ответ на: комментарий от AnDoR

Пардон, перелогиниться забыл. Этот метод тоже работает, спасибо

wh75per
() автор топика
Ответ на: комментарий от i586

Назначить label and SN в wine всегда можно, создав в соответствующей директории файлы

Я правильно понял, что мне нужно добавить эти файлы в мой образ? Т.е.

sudo mount blabla.iso lightroom-mount
touch lightroom-mount/.windows-label:MYDRIVE && touch lightroom/.windows-serial:123456

Но как я это сделаю, если FS read only? Получаю следующее:

touch: cannot touch 'lightroom-mount/.windows-label:MYDRIVE': Read-only file system

Получается с RO единственный рабочий способ пока что – изменение прав на /dev/loop0(либо добавление пользователя в группу disk), что, разумеется, не самое лучшее решение

UPD.

Почти везде, даже на форумах wine, пишут про добавление юзера в группу disk, либо изменение прав

wh75per
() автор топика
Последнее исправление: wh75per (всего исправлений: 2)
Ответ на: комментарий от wh75per

Я правильно понял

Выше доврольно подробно описано, как устроен контроль доступа к /dev/cdrom и другим устройствам. Еще ACL для дескрипоров некоторых устройств динамически устанавливает systemd-logind, но это тут не нужно.

как я это сделаю

Создать файлы в новой директории и создать линки? Скопировать, наконец.

Почти везде, даже на форумах wine, пишут про добавление юзера в группу disk, либо изменение прав

Мало ли, что пишут. Повышать привелегии без надобности – угроза безопасности. Повышать привелегии до root, когда задача этого не требует – вообще зашквар.

i586 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.