darkfenix, ага, так и есть, но не хотелось в исходник лезть...
лол, нашёл таки решение через исходник -__-
Искал через mount, нашёл такие строки
Код: Выделить всё
UDisksDeviceInterface = 'org.freedesktop.UDisks.Device';
message := dbus_message_new_method_call(UDisksAddress,
PChar(ObjectPath),
UDisksDeviceInterface,
'FilesystemUnmount');
Но я не заметил что код про отмонтирование - 'FilesystemUnmount', хотя может это и не важно.
Полез искать
org.freedesktop.UDisks.Device
, в итоге нашёл такой пост
https://askubuntu.com/a/181854/743770
Из него попробовал
Код: Выделить всё
gdbus call --system --dest org.freedesktop.UDisks --object-path /org/freedesktop/UDisks/devices/sdc4 --method org.freedesktop.UDisks.Device.FilesystemMount "vfat" []
но он выдаёт ошибку.
В том же посте нашёл что есть уже
UDisks2
и с помощью него можно сделать вывод списка дисков
Код: Выделить всё
gdbus introspect --system --dest org.freedesktop.UDisks2 --object-path /org/freedesktop/UDisks2/drives --recurse --only-properties
Ну и в том же посте нашёл таки ту самую команду, которую юзает сам DC:
Код: Выделить всё
udisksctl mount --block-device /dev/sdc1
udisksctl unmount --block-device /dev/sdc1
И по ней уже в исходниках нашёл, что это действительно так:
Код: Выделить всё
{$IF DEFINED(LINUX)}
if not Result and HaveUDisksCtl then
begin
Result:= RunCommand('udisksctl', ['mount', '-b', Drive^.DeviceId], MountPath);
if Result then
begin
Write(MountPath);
Index:= Pos(' at ', MountPath);
if Index > 0 then
begin
Inc(Index, 4);
Drive^.Path:= Copy(MountPath, Index, Length(MountPath) - Index - 1);
end;
end
end;
if not Result and uUDisks.Initialize then
begin
try
Result := uUDisks.Mount(DeviceFileToUDisksObjectPath(Drive^.DeviceId), EmptyStr, nil, MountPath);
except
on E: Exception do
begin
Result := False;
WriteLn(E.Message);
end;
end;
if Result then
Drive^.Path := MountPath;
uUDisks.Finalize;
end;
if not Result and HavePMount and Drive^.IsMediaRemovable then
Result := fpSystemStatus('pmount ' + Drive^.DeviceId) = 0;
{$ELSE IF DEFINED(DARWIN)}
Так что можно не морочиться с фстаб и прочей лабудой, и если есть, то юзать
udisksctl