The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Из ядра Linux 6.9 удалён старый драйвер NTFS, opennews (?), 13-Мрт-24, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


13. "Из ядра Linux 6.9 удалён старый драйвер NTFS"  +3 +/
Сообщение от Аноним (-), 14-Мрт-24, 00:54 
> А почему родной виндовый chkdsk нельзя запуститт под вайном?

Например потому, что он в NT native mode работает, до запуска ОС, например. А вот это вам немного не винапи вывешиваемое WinE. Представляете, у NT есть native api, оно отличается от WinAPI. А поверх него делается WinAPI уже. Так же как и из Linux вайном делается WinAPI.

С таким же успехом можете пытаться линуксный fsck в винде запустить без виртуалок типа WSL, удачи. Не то чтобы совсем невозможно, но долботни при желании это реализовать будет немеряно.

Ответить | Правка | Наверх | Cообщить модератору

65. "Из ядра Linux 6.9 удалён старый драйвер NTFS"  +1 +/
Сообщение от n00by (ok), 14-Мрт-24, 10:14 
> Представляете, у NT есть native api, оно отличается от WinAPI.

$ grep Nt wine/dlls/ntoskrnl.exe/tests/ntoskrnl.c
static BOOL (WINAPI *pRtlDosPathNameToNtPathName_U)(const WCHAR *, UNICODE_STRING *, WCHAR **, CURDIR *);
    test_input->teststr_offset = (SIZE_T)((BYTE *)&teststr - (BYTE *)NtCurrentTeb()->Peb->ImageBaseAddress);
        ok(GetLastError() == RtlNtStatusToDosError(expect_status), "got error %u\n", GetLastError());
    ret = NtDeviceIoControlFile(device, NULL, NULL, NULL, &io,
    ret = NtDeviceIoControlFile(file, event, NULL, (void *)456, &io,
    ret = NtRemoveIoCompletion(port, &key, &value, &io, &zero);
    ret = NtDeviceIoControlFile(file, event, NULL, NULL, &io,
    ret = NtDeviceIoControlFile(file, NULL, NULL, NULL, &io,
        ret = NtDeviceIoControlFile(file, event, NULL, (void *)456, &io,
        ret = NtRemoveIoCompletion(port, &key, &value, &io, &zero);
    ret = NtDeviceIoControlFile(file, NULL, return_status_apc, (void *)456, &io,
    status = NtQueryObject(device, ObjectNameInformation, buffer, sizeof(buffer), NULL);
    status = NtQueryObject(device, ObjectTypeInformation, buffer, sizeof(buffer), NULL);
    status = NtQueryInformationFile(device, &io, buffer, sizeof(buffer), FileNameInformation);
    status = NtQueryVolumeInformationFile(device, &io, buffer, sizeof(buffer), FileFsVolumeInformation);
    status = NtQueryObject(file, ObjectNameInformation, buffer, sizeof(buffer), &size);
    status = NtQueryObject(file, ObjectNameInformation, buffer, size - 2, &size);
    status = NtQueryObject(file, ObjectNameInformation, buffer, sizeof(*name_info), &size);
    status = NtQueryObject(file, ObjectTypeInformation, buffer, sizeof(buffer), NULL);
    status = NtQueryInformationFile(file, &io, buffer, sizeof(buffer), FileNameInformation);
    status = NtQueryVolumeInformationFile(file, &io, buffer, sizeof(buffer), FileFsVolumeInformation);
    status = NtQueryVolumeInformationFile(file, &io, buffer, sizeof(buffer), FileFsAttributeInformation);
    status = NtQueryObject(file, ObjectNameInformation, buffer, sizeof(buffer), NULL);
    status = NtQueryInformationFile(file, &io, buffer, sizeof(buffer), FileNameInformation);
    status = NtQueryObject(file, ObjectNameInformation, buffer, sizeof(buffer), NULL);
    status = NtQueryInformationFile(file, &io, buffer, sizeof(buffer), FileNameInformation);
    status = NtQueryObject(file, ObjectNameInformation, buffer, sizeof(buffer), NULL);
    status = NtQueryInformationFile(file, &io, buffer, sizeof(buffer), FileNameInformation);
    status = NtQueryObject(file, ObjectNameInformation, buffer, sizeof(buffer), NULL);
    status = NtQueryInformationFile(file, &io, buffer, sizeof(buffer), FileNameInformation);
    status = NtQueryVolumeInformationFile(file, &io, buffer, sizeof(buffer), FileFsSizeInformation);
    status = NtQueryVolumeInformationFile(file, &io, buffer, sizeof(buffer), FileFsFullSizeInformation);
    status = NtQueryVolumeInformationFile(file, &io, buffer, sizeof(buffer), FileFsSizeInformation);
    status = NtQueryVolumeInformationFile(file, &io, buffer, sizeof(buffer), FileFsFullSizeInformation);
    ret = NtOpenFile(&child, SYNCHRONIZE, &attr, &io, 0, FILE_SYNCHRONOUS_IO_NONALERT);
    ret = NtOpenFile(&child, SYNCHRONIZE, &attr, &io, 0, 0);
    ret = NtOpenFile(&tmp, SYNCHRONIZE, &attr, &io, 0, FILE_SYNCHRONOUS_IO_NONALERT);
    ret = NtOpenFile(&tmp, SYNCHRONIZE, &attr, &io, 0, FILE_SYNCHRONOUS_IO_NONALERT);
    pRtlDosPathNameToNtPathName_U = (void *)GetProcAddress(GetModuleHandleA("ntdll"), "RtlDosPathNameToNtPathName_U");

Ответить | Правка | Наверх | Cообщить модератору

158. "Из ядра Linux 6.9 удалён старый драйвер NTFS"  +/
Сообщение от Аноним (-), 14-Мрт-24, 22:08 
>> Представляете, у NT есть native api, оно отличается от WinAPI.
> $ grep Nt wine/dlls/ntoskrnl.exe/tests/ntoskrnl.c
> static BOOL (WINAPI *pRtlDosPathNameToNtPathName_U)(const WCHAR *, UNICODE_STRING *,
> WCHAR **, CURDIR *);

Мне почему-то кажется что в NT API нативных функций "немного" побольше чем это :)

Ответить | Правка | Наверх | Cообщить модератору

180. "Из ядра Linux 6.9 удалён старый драйвер NTFS"  +/
Сообщение от n00by (ok), 15-Мрт-24, 05:05 
Потому что "это" всего один из файлов.
Ответить | Правка | Наверх | Cообщить модератору

218. "Из ядра Linux 6.9 удалён старый драйвер NTFS"  +/
Сообщение от Аноним (-), 15-Мрт-24, 20:56 
> Потому что "это" всего один из файлов.

А что, сhkdisk деланый под "native subsystem" таки запускается?

Ответить | Правка | Наверх | Cообщить модератору

226. "Из ядра Linux 6.9 удалён старый драйвер NTFS"  +/
Сообщение от n00by (ok), 16-Мрт-24, 08:45 
>> Потому что "это" всего один из файлов.
> А что, сhkdisk деланый под "native subsystem" таки запускается?

Понятия не имею, он мне не нужен. Вот когда джойстик мне был нужен, но нужного API не было - взял и допилил немножко Wine.

Ответить | Правка | Наверх | Cообщить модератору

227. "Из ядра Linux 6.9 удалён старый драйвер NTFS"  +/
Сообщение от n00by (ok), 16-Мрт-24, 08:50 
Но если тыкать пальцем в небо - сhkdisk шлёт IOCTL драйверу NTFS. Стало быть его работоспособность к NativeAPI отношения не имеет: если и запустится, то ничего не проверит.
Ответить | Правка | К родителю #218 | Наверх | Cообщить модератору

110. "Из ядра Linux 6.9 удалён старый драйвер NTFS"  +/
Сообщение от kusb (?), 14-Мрт-24, 12:20 
Меня кстати интересует - сложно ли заставить ядро Linux отзываться на Nt Native API и другие интерфейсы. И чтобы загружалось PE EXE и работала вся верхняя часть от Windows без изменений.
(Windows на ядре Linux)
Ответить | Правка | К родителю #13 | Наверх | Cообщить модератору

139. "Из ядра Linux 6.9 удалён старый драйвер NTFS"  +/
Сообщение от n00by (ok), 14-Мрт-24, 15:43 
Если под "Nt Native API" понимать экспортируемые ntdll.dll функции, то это уже делает WinE.

Если же требуется загружать ntdll.dll, взятую из Windows, и что бы она вызывала ядро инструкцией syscall, то технически такое возможно (грубо говоря, часть WinE перенести в ядро), но не понятно, какой в этом толк. В Windows в ядре так же находится и часть графической подсистемы, значит потребуется засунуть в ядро Linux заодно Wayland композитор и другие странные штуки.

Ответить | Правка | Наверх | Cообщить модератору

171. "Из ядра Linux 6.9 удалён старый драйвер NTFS"  +/
Сообщение от Вендузятник пох. (?), 14-Мрт-24, 23:59 
> В Windows в ядре так же находится и часть графической подсистемы

с разморозочкой, у тебя kms в ведре уже десять лет, и последние пять от него избавиться в принципе невозможно.

Ответить | Правка | Наверх | Cообщить модератору

173. "Из ядра Linux 6.9 удалён старый драйвер NTFS"  +/
Сообщение от Аноним (-), 15-Мрт-24, 00:38 
> с разморозочкой, у тебя kms в ведре уже десять лет, и последние пять от него
> избавиться в принципе невозможно.

Да? А как же это кернелы роутеров собраны совсем без этого всего? Там даже видяхи нет - ну и kms им ни к чему. Так что избавиться - можно. А мистер эксперт опеннета как обычно прогнал.

Другое дело если графику захочется. То что те непотребства с xorg лазящим в железо зарубили - давно пора было. Rampant layering violation как он есть.

Ответить | Правка | Наверх | Cообщить модератору

179. "Из ядра Linux 6.9 удалён старый драйвер NTFS"  +/
Сообщение от n00by (ok), 15-Мрт-24, 05:03 
Это не то. Там GDI и DirectX в ядре.
Ответить | Правка | К родителю #171 | Наверх | Cообщить модератору

203. "Из ядра Linux 6.9 удалён старый драйвер NTFS"  +/
Сообщение от Аноним (-), 15-Мрт-24, 14:59 
> Это не то. Там GDI и DirectX в ядре.

Системный эксперт уровня бох^W пох видимо не в состоянии понять чем отличается неотрубаемая в принципе реализация GDI и кусков DX от опционального слоя менеджмента режимов GPU, GPU mem/VM и тому подобной лабуды. Ну, подумаешь, разница в уровне сложности в разы, со всеми вытекающими низкоуровневыми вулнами...

Я еще не забыл как большая картинка (ресайз HTML пропертями, что-то типа 999999 x 999999 пикселей) - винду вообще в BSOD бабахал. Прям в видеодровах. Справедливости ради, в 50% случаев трюк и линуксоидов выносил, Xorg шикарно дох при попыке аллокации такой штуки :). Но это все же не вынос кернелмода из веба :)

Ответить | Правка | Наверх | Cообщить модератору

209. "Из ядра Linux 6.9 удалён старый драйвер NTFS"  +/
Сообщение от n00by (ok), 15-Мрт-24, 15:26 
Советую тому эксперту почить Фень Юаня, он на 1000 страницах достаточно подробно описывает. И даже пример даёт, как создать много объектов GDI и порушить "Рабочий Стол" в Windows 2000 (позже ядерную таблицу разделили меж процессами и замели "фичу" под ковёр). Либо хотя бы картинки в DDK посмотреть.
Ответить | Правка | Наверх | Cообщить модератору

219. "Из ядра Linux 6.9 удалён старый драйвер NTFS"  +/
Сообщение от Аноним (-), 15-Мрт-24, 20:59 
> описывает. И даже пример даёт, как создать много объектов GDI и
> порушить "Рабочий Стол" в Windows 2000

Я где-то видел что-то сравнимое. Как и бсоды при попытке аллокации - вот - большой картинки.

> (позже ядерную таблицу разделили меж процессами и замели "фичу" под ковёр).
> Либо хотя бы картинки в DDK посмотреть.

Ну, мне оно не надо. Я линуксное существо уже лет 15. Пусть "виндузятник пох" читает, может хоть там ламерить не будет наконец? Хотя ламерство не очень хорошо лечится.

Ответить | Правка | Наверх | Cообщить модератору

225. "Из ядра Linux 6.9 удалён старый драйвер NTFS"  +/
Сообщение от n00by (ok), 16-Мрт-24, 08:27 
БСОД от большой картинки - это ошибка в реализации, забыли что-то проверить, как всегда. А когда одна таблица объектов на все процессы и кто угодно может её заполнить до отказа -  это просчёт в архитектуре. На время NT4 (когда графическую подсистему и перенесли в ядро) оно было быстро и правильно, но теперь гигагерцы выросли, требования к безопасности изменились, и такое решение повторять нет смысла.
Ответить | Правка | Наверх | Cообщить модератору

232. "Из ядра Linux 6.9 удалён старый драйвер NTFS"  +/
Сообщение от Аноним (-), 16-Мрт-24, 19:20 
> БСОД от большой картинки - это ошибка в реализации, забыли что-то проверить, как всегда.

Да и в иксах тоже. Так что сплойт вышел довольно кроссовый, вышибал 50/50 народ.

> кто угодно может её заполнить до отказа -  это просчёт в архитектуре.

Да, я что-то такое помню - в итоге 1 программа могла вызвать общесистемный нагибон графики вообше. Что для системы основанной на гуе достаточно фатально, потом даже таскменеджер фиг прорисуется. И чего тогда делать? Ресет жать? :)

> к безопасности изменились, и такое решение повторять нет смысла.

Абсолютно. И у иксов наверняка есть куча сравнимых дурацких проблем из лохматых годов.

Ответить | Правка | Наверх | Cообщить модератору

159. "Из ядра Linux 6.9 удалён старый драйвер NTFS"  +/
Сообщение от Аноним (-), 14-Мрт-24, 22:14 
> Меня кстати интересует - сложно ли заставить ядро Linux отзываться на Nt
> Native API и другие интерфейсы.

Чисто теоретически все ОС эквивалентны, а поверх одного апи можно сделать другое. WinE так и делает. А UML даже реализует Linux syscalls через... Linux syscalls! :)

Практически - вопрос кто будет столько счастья воротить - и зачем. Ради одного chkdisk столько кодить - желающих немного.

> И чтобы загружалось PE EXE и работала вся верхняя часть от Windows без изменений.
> (Windows на ядре Linux)

WinE поставить и нарулить его запускалкой PE EXE через binfmt_misc у вас уже не модно? Но вот именно chkdisk работающий до запуска оси так все же не запустится, врядли кто NT API там зачем-то кодил в тех объемах.

Ответить | Правка | К родителю #110 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру