LINUX.ORG.RU
ФорумTalks

[ЖЖ][История успеха][Vendor lock-in]Fixed

 ,


1

0

Собственно началась эта история с покупки мной пары б/у тонких клиентов Compaq Evo T30. Т.к. до этого с фирменными тонкими клиентами дел не имел то не чуял никакого подвоха. Первым делом решил восстановить оригинальную прошивку от T30 т.к. терминалы были прошиты прежним хозяином прошивкой от одного умельца в которой содержался BIOS от T20 (почти идентичный тонкий клиент за исключением отсутствия PS/2 и различий в разводке некоторых GPIO выполняющих вспомогательные функции вроде отображения текущего режима). Была скачана оригинальная прошивка с hp.com, однако прошиваться железки отказались с руганью на «Invalid security key». Загуглив нашел описание формата этого образа и bundle-tools для упаковки/распаковки этих образов. Подменил оригинальный файлик с ключиком на файл из прошивки умельца, собрал, прошил нормально тем самым восстановив оригинальный биос. Теперь началось самое интересное. Изначально эта модификация поддерживает только WinCE и как следствие этого имеет на борту только NAND флеш на 32 метра и весьма оригинальный BIOS умеющий либо напрямую грузить из NAND файл nk.bin с ядром WinCE либо вешать на int 0x13 обработчик эмулирующий наличие жесткого диска и транслирующий все обращения к нему в файл filesys0.img в том же самом NAND. Первым делом попробовал подсунуть в фирмварь образ HDD с FreeDOS но все оказалось не так просто, железка просто зависала после сплэша биоса (как оказалось в последствии рабочие образы HDD содержали весьма специфичный MBR который кроме загрузки PBS дергал неизвестную функцию). Далее я переключил внимание на файл nk.bin. Загуглил формат, написал свой упаковщик/распаковщик секций и попытался найти универсальный загрузчик способный запускаться подобным образом но это не увенчалось успехом. Грузить ОС посредством цепочки nand_bios->filesys0.img_mbr->ntlrd->grub4dos->fd_image->other_loader->OS_or_gPXE мне жутко не хотелось и я переключил свое внимание на единственный адекватный способ заставить железо грузить то что я хочу. Дело в том что на системной плате присутствует 44 контактный IDE разъем но кастрированный BIOS заточенный под WinCE не умеет его использовать. На запрос о возможности загрузки T30 с IDE гугль выдавал только рекомендации по замене NAND флеша с дефолтного 2 мегабитного на 4 мегабитный с прошивкой от старших моделей а также упоминалось что диски этих моделей содержат некую служебную партицию (в версии для WinCE загрузка так же была многостадийной. Сперва запускался ROM BIOS который содержал функции ранней инициализации а так же утилиту netxfer для удаленной прошивки. Потом ROM BIOS считывал из NAND образ «нормального» BIOS'а и передавал ему управление, после чего уже этот BIOS загружал OS). Принялся искать товарищей имеющих программатор и нужное кол-во 4 мегабитных чипов попутно пытаясь отреверсить формат образа с Win NT Embedded и Win XP Embedded. Собственно сегодня днем до конца разобрался с форматом этого образа и написал утилиты для упаковки/распаковки. Внутри образа оказалось 2 интересующих меня файла, это ulc512.rom содержащий ROM BIOS и sst.raw содержащий образ диска с ОС. К сожалению найти человека способного одолжить на неопределенное время программатор и отсутствие 4 мегабитных чипов вынудило меня взглянуть что же содержится в этом образе и нельзя ли из него выкинуть ненужное. В итоге я обнаружил что в 512к на самом деле лежит 2 абсолютно идентичных образа BIOS. Так же выяснилось что в служебной партиции опять таки лежат образы с полным BIOS'ом, VGA BIOS'ом и PXE Option ROM (т.е. загрузка остается многостадийной но получаем возможность стандартными средствами загружаться с IDE или по PXE). Прошил железки выковырянным и порезанным пополам биосом, впаял в китайский CF2IDE 44 контактный разъем, залил на CF образ служебной партиции, установил CF2IDE с картой на системную плату и включил железку. Самое удивительное что это сразу же заработало и даже попыталось загрузить ОС. Вспомнив про грабли с нестандартным MBR в версии с WinCE залил на CF MBR от Plan9, включил, работает!

вот такой вот поток сознания вышел. вы уж не обессудьте. P.S. сейчас доставится Plan9 на CF и можно со спокойной душой идти спать ^_^

Собственно  началась  эта  история  с  покупки мной  пары  б/у  тонких
клиентов Compaq Evo T30. Т.к.  до этого с фирменными тонкими клиентами
дел  не  имел  то  не   чуял  никакого  подвоха.  Первым  делом  решил
восстановить оригинальную прошивку от  T30 т.к. терминалы были прошиты
прежним хозяином прошивкой от одного умельца в которой содержался BIOS
от T20 (почти идентичный  тонкий клиент за исключением отсутствия PS/2
и  различий  в  разводке  некоторых GPIO  выполняющих  вспомогательные
функции вроде отображения  текущего режима). Была скачана оригинальная
прошивка с hp.com, однако  прошиваться железки отказались с руганью на
"Invalid security key". Загуглив нашел описание формата этого образа и
bundle-tools   для    упаковки/распаковки   этих   образов.   Подменил
оригинальный файлик  с ключиком на  файл из прошивки  умельца, собрал,
прошил  нормально  тем  самым  восстановив оригинальный  биос.  Теперь
началось самое интересное.

Изначально эта  модификация поддерживает только WinCE  и как следствие
этого  имеет  на  борту  только   NAND  флеш  на  32  метра  и  весьма
оригинальный BIOS умеющий либо напрямую  грузить из NAND файл nk.bin с
ядром  WinCE либо вешать  на int  0x13 обработчик  эмулирующий наличие
жесткого  диска   и  транслирующий  все   обращения  к  нему   в  файл
filesys0.img в том же самом  NAND. Первым делом попробовал подсунуть в
фирмварь образ HDD  с FreeDOS но все оказалось  не так просто, железка
просто  зависала  после  сплэша  биоса (как  оказалось  в  последствии
рабочие  образы HDD  содержали  весьма специфичный  MBR который  кроме
загрузки PBS дергал неизвестную функцию).

Далее я  переключил внимание на файл nk.bin.  Загуглил формат, написал
свой  упаковщик/распаковщик  секций  и попытался  найти  универсальный
загрузчик способный запускаться подобным  образом но это не увенчалось
успехом.         Грузить         ОС        посредством         цепочки
nand_bios->filesys0.img_mbr->ntlrd->grub4dos->fd_image->other_loader->OS_or_gPXE
мне жутко  не хотелось  и я переключил  свое внимание  на единственный
адекватный способ заставить  железо грузить то что я  хочу. Дело в том
что  на  системной плате  присутствует  44  контактный  IDE разъем  но
кастрированный BIOS заточенный под WinCE не умеет его использовать. На
запрос  о  возможности  загрузки   T30  с  IDE  гугль  выдавал  только
рекомендации  по замене  NAND флеша  с дефолтного  2 мегабитного  на 4
мегабитный  с прошивкой  от старших  моделей а  также  упоминалось что
диски  этих моделей содержат  некую служебную  партицию (в  версии для
WinCE загрузка так же  была многостадийной. Сперва запускался ROM BIOS
который содержал функции ранней инициализации а так же утилиту netxfer
для  удаленной  прошивки.  Потом  ROM  BIOS  считывал  из  NAND  образ
"нормального" BIOS'а  и передавал ему управление, после  чего уже этот
BIOS загружал OS).

Принялся  искать  товарищей имеющих  программатор  и  нужное кол-во  4
мегабитных чипов  попутно пытаясь отреверсить  формат образа с  Win NT
Embedded  и  Win  XP   Embedded.  Собственно  сегодня  днем  до  конца
разобрался   с   форматом  этого   образа   и   написал  утилиты   для
упаковки/распаковки.  Внутри  образа  оказалось  2  интересующих  меня
файла, это  ulc512.rom содержащий ROM BIOS и  sst.raw содержащий образ
диска  с  ОС.  К  сожалению  найти  человека  способного  одолжить  на
неопределенное  время  программатор и  отсутствие  4 мегабитных  чипов
вынудило меня взглянуть что же содержится в этом образе и нельзя ли из
него выкинуть ненужное.  В итоге я обнаружил что в  512к на самом деле
лежит  2 абсолютно  идентичных образа  BIOS. Так  же выяснилось  что в
служебной  партиции опять  таки  лежат образы  с  полным BIOS'ом,  VGA
BIOS'ом  и PXE Option  ROM (т.е.  загрузка остается  многостадийной но
получаем возможность стандартными средствами  загружаться с IDE или по
PXE). Прошил железки выковырянным и порезанным пополам биосом, впаял в
китайский  CF2IDE 44 контактный  разъем, залил  на CF  образ служебной
партиции,  установил CF2IDE  с  картой на  системную  плату и  включил
железку.  Самое  удивительное  что  это  сразу же  заработало  и  даже
попыталось  загрузить ОС. Вспомнив  про грабли  с нестандартным  MBR в
версии с WinCE залил на CF MBR от Plan9, включил, работает!
power
()

вот это красноглазие.... уважаю :)

drakmail ★★★★
()

г-сп-ди, а можно было эту стену текста хотя б на абзацы разбить?

svr4
()

прочитал на одном дыхании

ну для полноты картины надо было к ним еще драйвер какой нить написать

Deleted
()

Нормальный рабочий процесс =)
Хорошо, что всё получилось.

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