Задача сводилась к выбору и установки какой-нибудь операционной системы, которая без проблем переживала бы нештатное завершение работы. Просмотрев список специализированных дистрибутивов линукса для принт-серверов, я пришёл к выводу, что ни один из них в полной мере не удовлетворяет имеющимся требованиям: либо слишком старое ядро, в котором не всё ладно с поддержкой USB, либо слишком много понтов, которые были явным излишеством для такой конфигурации. На тот момент жестокой потребности в USB не было, но хотелось бы найти универсальное решение этой задачи, которое можно было бы тиражировать в дальнейшем.
Я отыскал микродистрибутив, занимающий в минимальной конфигурации под 20 МБ, но при этом с полноценной поддержкой сети и возможностью прикрутить CUPS. Установленная система на диске держала только папку BOOT и два архива: в первом корневая файловая система, во втором опциональные модули и файлы настроек. Такая конфигурация позволяла монтировать жёсткий диск только на чтение, следовательно, при аварийном завершении работы ничего страшного не происходило.
На виртуальной машине всё отработало как по учебнику, но установка на реальную машину оказалась делом куда более интересным. Сначала я опробовал штатный способ установки. Созданный раздел оказался повреждён и не подлежал восстановлению, загрузчик не установился. Создал разделы вручную и подсунул их инсталлятору — результат был аналогичен предыдущей попытке. Оказалось, что на реальной древней машине инсталляционный скрипт криво создаёт разделы, а при установке загрузчика в MBR убивает даже те, что есть. На более современном компьютере с тем же винтом всё устанавливалось без единого косяка, из чего я сделал вывод: инсталляционный скрипт считает, что любая машина обязана понимать, что такое LBA32, а BIOS материнки искренне думает, что LBA28 (а может, и что подревнее) — до сих пор самый модный метод адресации.
Уменьшение размеров загрузочного раздела до 50 МБ ситуацию не облегчало. Возня с мануалами ни к чему не привела. Способ объяснить загрузчику метод адресации явно существовал, но за давностью лет упоминаний о нём было мало. В конце концов я нашёл другое решение: поставить на машину полноценный дистрибутив линукса, который точно работает на подобных материнках, подсадить к нему в конфигурацию загрузки файлы микродистрибутива, а потом удалить всё лишнее.
Инсталляционный скрипт полноценного дистрибутива подтвердил, что BIOS, несмотря на обновление до последней версии, дико крив, и для установки загрузчика будет использован какой то очень коварный метод. По завершении всех манипуляций я больше удивился не тому, что всё загрузилось, а тому, что двухгиговый винт начал определятся в BIOS (причём на любой машине) как 524-метровый, причём после загрузки системы оказывалось, что реальная ёмкость диска всё-таки 2 ГБ.
Обрадованный победой, закинул на место подготовленные конфиги и стал пытаться достучаться до CUPS по сети. Интерфейс оказался недоступен, в списке процессов соответствующего демона не наблюдалось, в логах ошибок ничего подозрительного не нашлось. Как только винт был переставлен обратно на более свежую машину, CUPS запустился. Оказалось, создатели этого чудо-дистрибутива затолкали в него самую распоследнюю версию CUPS, да ещё и откомпилированную под 686 архитектуру. Зачем в микродистрибутив пихать модуль, минимальные требования которого серьёзно круче всего остального хозяйства, для меня до сих пор загадка.
Разбираться, как собирать опциональные модули для этого микрочуда, было уже выше моих сил. В куче хлама отрыл AT-материнку под Pentium II и соответствующий процессор. Вся возня с загрузчиком оказалась напрасной: на эту мать всё встало без особых проблем.
Но это был не конец приключений. CUPS не имел встроенных драйверов на нужный принтер, а значит, нужно было искать подходящий PPD-файл. На сайте изготовителя принтера рекомендовалось взять его из виндовых драйверов PostScript. Файл быстро нашёлся, однако CUPS заявил о том, что не может его использовать по непонятным причинам. Правильным решением оказалось взять этот файл из драйверов под Mac OS.
Итогом всей этой возни стало вполне работающее решение, используемое уже несколько месяцев. Оплата моего потраченного рабочего времени обошлась куда дороже покупки готового принт-сервера, но начальству виднее.
#9672: Двенадцать? Так бы и сказали
12:15 03.08.2012, IT happens
Решил попробовать свежую Microsoft Visual Studio 2012 RC. Фраза во время установки слегка меня подвесила: