НОВОЕ: OS/2 GURU - Вопросы и ответы ru · en · de · es · it · pt · cz · pl · fr

OS/2.GURU Library

Reviews / articles about OS/2 eComStation ArcaOS

Operating systems
ArcaOS, eComStation, IBM OS/2 Warp
eComStation myths 

Latest  
 
 
Blonde Guy

Reformat Утилита для форматирования USB флешек, USB винчестеров (для совместимости с OS/2)

 

(promo)

Unsorted

 

 

AD: ArcaOS 5.1 Russian LIP
Russian ARCAOS exists and it's available since the middle of 2017. All versions are supported: 5.1, 5.1.1.

eCo Software is able to maintain OS/2 LIP packages for any other language (German, Dutch, Brazilian Portuguese, Spanish, Sweden, etc)

It's time of JFS (second part)


TITLE: It's time of JFS (second part)

DATE: 2002-06-20 09:24:04

AUTHOR: Pavel Shtemenko
Please use online translator
go to http://translate.google.com
and request the translation of http://ru.ecomstation./projects/reviews/index.php?id=58
to your language

Детство было трудное и
клавиатуры были железными
(высказывание приписывается мне)

Прелюдия

Полгода назад на канале #netlabs в разговоре с |lou| я упомянул, что если будет время, то я сделаю загрузку с JFS. "it's impossible" - таков был ответ. Но ведь для exUSSR программистов преград нет? (зал встает и хором поет "Интернационал").

Действие 1. Воспоминание о прошлом

Я не буду рассказывать, как я всерьез занялся ей.. Было время, а желание подогрели. Я рассчитывал, что если IBM предусмотрела вариант "загрузки по минимуму", то мне это выльется в 2 недели. Но ... сразу скажу, что загрузку пришлось делать по варианту "масимум+". Первое, во что я уткнулся, это то, что за 5 лет активного простоя в написании программ на ассемблере, я успел его подзабыть и в очередной раз убедился, что надо знать не язык ASM86, а компилятор, которым пользуешься (возгласы в зале: "Да ты его и не знал никогда!"). В данном случае был применен ALP. В освоениях и воспоминаниях прошла неделя с написанием собственно того, что прописывается в бутблок и иже с ним. Все это было не так сложно и достаточно быстро написалось.

Действие 2. Изменения формы, длины и местоположения глаз

До того, как я взялся за загрузку, я считал систему OS/2 достаточно документированной. Не такой, как хотелось бы (кто работал в RSX11M меня поймет), но значительно лучше, чем все остальные PC-системы, с которыми я работал. Первое, во что я воткнулся - это с какого адреса что грузить? По документации я должен загрузить OS2LDR и передать ему заполненную таблицу - тут не было вопросов. Но главный вопрос, с какого адреса загружать OS2LDR так и остался открытым. Единственное, что следовало из интенсивного раздумья над докой - его нельзя грузить вплотную к видеопамяти, потому как он себя потом туда должен переписать (возгласы в зале: "Читать не умеешь!"). После некоторых раздумий было выбрано круглое число 1000h. Но тут сразу подкрался клинч - в этом случае я не смогу грузить свой загрузчик в нижние адреса. Так как OS2LDR потом себя переписывал вплотную к видеопамяти для расположения своего загрузчика, было выбрано не менее круглое число 8000h.

Практически сразу выяснилось, что одного загрузчика с бутблока - недостаточно, хотя в доке нигде явно не указано, что обязательно нужен максимальный вариант загрузки, посему был сделан пустой файл изображающий os2boot и началась битва за загрузку OS2KRNL. Первое ползновение глаз вверх было когда я увидел, что доавроровские ядра читаются блоками по 80к, второе - когда я увидел адрес выделяемого мне буфера для чтения с адресом на конец сегмента. Ладно, сказал я себе и написал процедуру LeftRightDress.

Глаза начали приобретать сферическую форму когда я обнаружил, что в компорт могут писать или мой загрузчик или OS2LDR, а вместе не получается... Ладно, сказал я и воткнул еще одну плату с двумя ком-портами. Битва с загрузкой ядра шла около недели с переменным успехом, а как только раздобыл OS2LDR с выводом дебага в компорт, так через пару дней я все и закончил. Имея на руках лог загрузки с HPFS, оставалось привести свой загрузчик к нему. При этом выяснились весьма любопытные вещи. Например, документированное ограничение miniIFS в 62 килобайта.. оказалось, что miniIFS на этой стадии загрузки может располагаться только в одном месте (в документации об этом ни полслова) - сразу после векторов прерываний, соотвественно с адреса 1000h-62килобайта. Наконец, исправив свою ошибку при чтении, когда блок переходит с сектора на сектор, я получил тестовый вывод с загруженного кернеля при обращении к моей miniIFS. Я возрадовался с товарищем на пару бутылок коньяка, теперь мне доступны INT 3 и ядро с отладчиком, документированные вызовы и никакого хакерства. (в зале качания в такт распевамому псалму "нет фирмы, кроме IBM и OS/2 пророк ее").

Действие 3. Грабли - это орудие производства

Сделать miniIFS годную для отладки, имея на руках уже отлаженную загрузку с бута было не так сложно и я прошел этап функций MFS_* достаточно быстро. Ну где-то дня за два (проверка ведь делалась перезагрузкой). Добрался до стадии, когда miniIFS должна изображать из себя полноценную FS с небольшими ограничениями, преимущественно, что нельзя писать и искать. Вот тут и начались чудеса. Сразу оказалось, что описания 32битных FS нет... Этот этап знаменуется открытием файла country.sys. Cделав все как написано было для 16 битных FS я получил заявку от ядра, что я живу не в той стране... ну предположим я и сам это хорошо знаю и намного лучше этого ядра (в зале отдельные выкрики "не трожь Расею", коммунисты встают и молча уходят). Начались копания, раздумья и совещания. Сначала выяснилось, что в некоторые достаточно важные структуры были введены дополнительные поля... потом выяснилось что по дополнительным полям работает только часть функций, а для другой части функций надо использовать прежние поля. Хмыкнув и оставив это на неисповедимость путей IBM резвенько дошел до окончания работы своей miniIFS. И тут наступаю на главную граблю - ядро не перемонтирует FS и оставляет часть файлов открытой.... все попытки заставить ядро перемонтировать FS остались безрезультатными... Крах на окончании... (возгласы в зале - "Так тебе и надо!", "Прочь девелоперские руки от IBM!") Тут я вспоминаю, что у меня есть FreeJFS, в которой я могу делать правки. Задавшись целью минимизировать изменения в jfs.ifs пришел к варианту получения адресов нужных процедур, чтобы позвать их самому. Сказано - сделано. И о чудо! Загрузка произошла. Отпразновав как следует день радио и победу, с утра был тока в состоянии переписывать систему и проверять разные варианты загрузки.... Вот тут все и началось. Выяснилось, что работает только тот вариант, на котором я разрабатывал загрузку, перепробовав под пиво порядка 10 вариантов, понял что надо трассировать. (возгласы в зале "Мы знаем кто глючит!")

Действие 3. Враг неизвестен

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

Итак трассировка, потом опять трассировка, потом снова трассировка.... Опыты показали, что если только один раздел в системе и он JFS, то ядро на пару с os2lvm.dmd считают, что разделов вообще в системе нет (возмущенные возгласы в зале "JFS чморят!!!"). Если есть хоть один раздел с HPFS, то я по загрузке получаю запрос на монтирование этой FS n раз, где n = количеству партиций на этом диске. Если известных OS/2 разделов K, а вообще разделов N, то количество разных запросов на монтирование K и потом N-K раз повторяется последний. Уже ничему не удивляясь начинаю искать варианты при которых почти каждый сможет сделать себе загрузочную JFS. К моему вящему изумлению, это оказался вариант из 2х разделов JFS... Обнаружив при этом, что загрузка с primary controller + master disk + primary partition обязательно должна иметь букву назначенную LVM "C:", ессено при тех же условиях slave disk должен иметь букву "D:" и с радостью отметил - IBM таки логична. Начинаю делать вариант подходящий для рядового юзера... Тут обнаруживается, что UJFS.DLL при проверке диска всегда ставит драйв как 80h (первый диск на первом контроллере) и UJFS.DLL от релиза авроры почему-то затирает старшие биты в первых трех байтах... октябрькая UJFS.DLL ставит только драйв не затирая загрузку. Посчитав это происками шпиёнов MS внутри IBM, нелегкой рукой вписал ограничение - первый диск only. (волнения в зале, плавно переходящие в сражения на дискетах).

Действие 4. Ужас глубин

Прорываясь к возможности загрузки как таковой, ессесно в тылу оставались окруженные (но не сдающиеся) части регулярных модулей IBM. Первое, с чем начал воевать - это с хелперами мини IFS. Это было достаточно просто: поменяли один на другой, вместо съезжающего с дорожек хелпера чтения диска был написан свой, работающий через биос (повторяющиеся восклики в зале "Но мы-то знаем, кто глючит!"). Конечно, при этом пришлось самому следить за смещением от начала диска, но это в принципе не так сложно. Следующим в плане планомерной осады, стояла репликация журнала... К моему величайшему изумлению журнал таки реплицировался сам, по нормальному завершению (типа CAD или shutdown), оставались варианты внезапного нажатия Reset или выключения питания. Слегка поразысмыслив, понял, из-за не слишком вероятных случаев поднимать всю бучу репликации журнала и тормозить загрузку до предпоследнего безпредела не стоит (заметим, что ни HPFS ни FAT в таких же случаях гарантии не дает). Хотя замечу сразу, теперь для меня величайшая загадка IBM - это репликация пустого журнала по загрузке.... (возгласы в зале "Да ты гонишь..."). Радостно потирая руки, заглядываем в следующий пункт: необходимая правка JFS.IFS ! Сначала был использован легкий путь, когда пинаются все кто попадется под руку, дабы они отпинали IBMеров и заставили их добавить необходимый код (аж 10 строк на ASM). Как и ожидалось, IBM начала тормозить и отбрыкиваться всеми доступными ей методами. Надо заметить, методов за столетия своего существования, она накопила много... Ну в общем воз и поныне там, хотя на мой взгляд это практически единственный способ обеспечить 100% загрузку. Вспомнив Мичурина с его фразой "не надо ждать милости от ... , взять их самим - наша задача", полез рассматривать способы изъятия нужных мне адресов jfs.ifs у OS2KRNL. Мысль проста как 2 сероголубых свистка - просканировать таблицу GDT и найти нужный мне селектор. И сразу попадаю в первую засаду. В принципе загрузка происходит в кольце 0, но адрес таблицы селекторов выдается в линейном 32битном виде. А у меня загрузчик весь 16 битный с головы до пят... Ладно, сказал я и полез изучать наставления по девхелперному делу. Хелпер обнаружился, правда для употребления надо было использовать еще два хелпера (хорошо хоть для использования этих хелперов не понадобились следующие). Все хорошо и прекрасно, осталось добыть смещения до нужных мне процедур в JFS.IFS. Самый есстественный путь - это проглядеть LX заголовок JFS.IFS. И тут наступает вторая засада - сразу выясняется что она запакована... Прикинув "на глазок" сколько займет это кода и места, а у меня на все про все 62 килобайта из которых уже 32 использовано... Решил их вбить намертво. Решено - сделано. Начал проверять разные версии JFS.IFS и тут изумление мое достигло предела... IBM 16 битный код в JFS.IFS не менял до сегодняшнего дня.... (возгласы в зале "Пишут без глюков, не то что ты")

Эпилог

Выводы неутешительные:

  • для нормального процесса нужно менять jfs.ifs и убрать глюки с os2lvm.dmd
  • для того чтобы делать бут при формате диска, надо менять UJFS.DLL (ну ее и так править надо)

Выводы утешительные:

  • загрузка возможна и уже есть, как бы это не нравилось IBM.
  • LVM можно и снести, да и Даниэла там что-то на тему os2dasd писала...
  • есть исходники JFS и ее можно довести до нормального состояния в обозримое время


Рисунок: Операционная система загружена с JFS-тома, в чем можно убедиться с помощью программы LVM

Послесловие

Автор выносит поименную благодарность:

  • IBM - за передовые достижения в логике и развитии OS/2
  • gerash - за советы и празднования достигнутых результатов
  • sunlover - за советы, веру в документацию и терпение выслушать не всегда ясно излагаемые проблемы
  • froloff - за периодическое дерганье и подталкивание
  • Samm - за обещание напоить пивом, когда будет загрузка
  • os2bird - за совет ставить mov ax,seg DATA16 вместо mov ax,DATA16
  • [zuko] - за приведение цитаты из документации по процессору в нужное для меня время и темы для "возгласы из зала"
  • e-co - за убеждение меня заняться загрузкой

А также всему каналу #os2russian за моральную поддержку.

Использовано

1 раб.сила, два компьютера, internet, 4 бутылки коньяка, 15 литров пива, 204 листа бумаги, 10 блоков сигарет LM, 500гр чая, 307 квтч, китайский фонарик, 2 свечи и один карандаш. Все использованные материалы не нанесли вреда окружающей среде и некоторые уже рециклированы.


Редакторы: Eugene Gorbunoff, Deniska

Test the program:

eComStation.. is it secure or not? Read more..

Commenti:

Timur Kazimirov
2002-06-20 09:59:47

....!!! ...... ...... .... ...-.. ............. .... .... ......... ;-)

Sergey Posokhov
2002-06-20 12:03:45

............. ........ ...... ...... ... ..... ............ ...... ... OS/2, ....... ... ........... ...... !

Sergey Poziturin
2002-06-21 02:22:46

........

VAD)))
2002-06-21 17:57:13

.... [Pasha] . .... ... ...... . ...... ....... ......... .....! :)

vladest
2002-06-21 18:03:37

. ....... ...... Lou??

.. ... .... ....... :-\

Eleph
2002-06-21 18:21:48

".... ..!"- ......... .......

2[Pasha]: .....!!! (. .... ...... . ............... ............, ....... ........... . .........) ;))))

... .. ..........-.. .....? ......... ... ...-.... ...... ......... ;(((

taxman
2002-06-21 19:38:11

....!

....... JFS - ........ .. .........! :)

Stepan Kazakov
2002-06-22 08:57:31

.p..., .....p., ..... ....... .....p...!

.p. ......... - .. ...., .. ...... ;)

(.............. ........ .. ....)

kamuzon
2002-06-22 10:31:48

.......! ..........

RElf
2002-06-22 10:48:14

...., . .. ...... ........ ........ ... ........... ......, ....... .. ........., .... .......... ....... . ............?

EvgenSK
2002-06-24 21:59:38

.... . .. .......... ......... . ..... ......... ...... ?

porro
2002-06-25 05:43:11

I'm ready to translate this wonderful atricle into English if the author don't mind ;-) I'll try to save all peculiar moments in it, I swear ;-)

porro
2002-06-25 05:43:59

Sorry for misprints, I'm short of time in the I-net :(

GPV&KGB
2002-06-26 16:42:39

...... .. . ..... ... ............ ......... .. ....... ....... ........ . JFS . .......... ...... ...... (ACP3?)...

FonMax
2002-06-27 01:02:39

... ........ . ......, ... .... inpossible.. ..... . ...... . ......., .......... ...... ........... .............

Oxyd
2002-06-27 08:15:05

. ......... ... ........., ... . OS/2 ..... ....... .... .. ... ...... :)

MadInt
2002-06-27 11:36:36

. ... . .... ..... ..... - ...... .. ........ ...... ..... . jfs.ifs .. ..... .. .sym-.....?

......... ..... ........ .... ...... ... OS2KRNL ......... win32k.sys .. ........ ........

Andy Porro
2002-07-08 03:34:44

Hi guys!

I have this article translated and if somebody is interested in that fact I can as soon as I find the way to download translated file give it to public.

2Author.

1. Seems to me somewhen I saw a boot process description with all addresses and steps mentioned in the PC-hardware description. Try to find it.

2. I have some doubts that it is possible to remove LVM, does you program work with JFS volume splitted over two or more disks? I guess no. I don't know either you are aware or not, but LVM stores additional information about drive letters and so on in the boot sector, I suppose you have some trouble due insufficient information about LVM compatible software.

......
2003-09-04 15:56:11

. ... ..... ...... lvm ? . .. .., ......., .. ......... ..... ...., . ....... .. Fdisk . ............ . .......

......
2003-09-04 15:58:12

.. . VCU ... ........ ....... .. ...... .... .. ...... ........... - .......... ...... ....... ........ (ACP2) ....... danis506

How to increase the population of eComStation? Every eCS specialist can setup eCS for own friends and relatives, then print instructions how to use the system LiveBook brochure

 

Siberian OS/2

 


 

 

ArcaOS 5.1.1 - DOS works again

DOS virtual machine works again (it was working on Core 2 Duo, and didn't for i5). Install ArcaOS in UEFI mode to use DOS VM.

ACPI для OS/2

eCo Software have started the development of ACPI driver in 2005

// надо на ENG!!
Blonde Guy

Buy OS/2 application: DVD/CD Toys

 
Every conference is important.

Warpstock Europe 2017

Interview with Yuri Dario
What do we discuss? I don't remember.

What was happening at that conference?

 

(C) OS2.GURU 2001 -- 2025