www.opennet.ru
www.wtware.ru
http://www.slug.org.au/etherboot/
http://www.han.de/~gero/netboot.html
www.oszone.net
/dev/my/brain
Как-то часика в 4 утра меня посетила мысль о том, что таскать с собою нетбук и переносной винтчестер как-то не спортивно. Почему бы не объеденить два этих гаджета в одно устройство с дополнительным функционалом? Например было бы очень круто всегда иметь под рукой нечто похожее на хороший универсальный инструмент. Что-то типа программно-аппаратного комплекса для решения компьютерных задач.
Начал размышлять и сразу вспомнил про то, что для apple - компьютеров уже есть что-то подобное. В MacOS он называется Target Disk Mode.

Описание и требованияРежим FireWire внешнего жесткого диска позволяет Macintosh-компьютеру, оснащенному портом FireWire, использоваться в качестве внешнего жесткого диска для другого компьютера. Как только компьютер будет включен в режиме FireWire внешнего жесткого диска и будет подключен к другому компьютеру, на его жесткий диск можно будет записывать или считывать информацию.
Как использовать режим FireWire внешнего жесткого диска1. Убедитесь, что компьютер, который вы хотите использовать как FireWire внешний жесткий диск выключен. Если это компьютер PowerBook или iBook желательно подключить его к электрической сети через сетевой адаптер.
2. Соедините компьютеры при помощи FireWire кабеля с 6 контактами с каждой стороны. Компьютер, к которому подключается другой компьютер в режиме FireWire внешнего жесткого диска, не обязательно выключать.
3. Включите компьютер, который вы хотите использовать как FireWire внешний жесткий диск, и сразу же нажмите и удерживайте на его клавиатуре клавишу “T”, пока на его экране не появится логотип FireWire. Жесткий диск этого компьютера должен появиться на рабочем столе другого компьютера. Теперь вы можете работать с ним как с обычным диском, то есть читать и записывать информацию. (Если присоединенный компьютер использует Mac OS X 10.4 Tiger, вы также можете открыть System Preferences и выбрать пункт Target Disk Mode в разделе Startup Disk. После перезагрузки компьютер запустится в режиме FireWire внешнего жесткого диска)
4. После того, как вы закончите работать с этим диском, перетащите его картинку в Trash (Корзину) или выберите Put Away в меню File (Mac OS 9) или Eject в меню File (Mac OS X).

После еще получаса размышлений я окончательно проснулся и полез в инет искать что-нибудь подобное для windows или linux. Часовой поиск в гугле ничего не дал, по этому пришлось включать мозг. После того как он включился стало понятно, что придется придумывать что-то самому. Чем я собственно и занялся.
Ход моих размышлений:- В большинстве нетбуков IEEE1394 отсутствует совсем
- USB не интересно из-за сложности сопряжения и невеликой скорости
Исходя из этого пришлось думаь над чем-то более универсальным, а поскольку в Acer Оne не так много коммуникационных портов, то я сразу подумал о LAN - соединении.
Плюсов, как оказалось придостаточно:
- Новые возможности (чуть позже расскажу)
- Универсальность
- Кроссплатформенность
- Легкость в настройке и подключении
- Кроме того, он есть во всех современных компьютерах
Итак, суть самой идеи.Нужно создать крохотный Linux дистрибутив, маленьким он должен быть, что б грузился быстро-быстро, но при всем этом он должен содержать необходимые компоненты.
Работать все это должно следующим образом:
Включаем нетбук. В меню загрузки есть, по крайней мере, два режима. Первый это рабочий, при выборе которого грузится обычная операционка в которой мы работаем. Второй ражим -- режим флешки. При выборе этого режима происходит загрузка мини - OS. Стандартным патчкордом (кроссовером, но савременные сетевые нормально понимают и patchcord) соеденяем нетбук с машиной. Адрес машина получает автоматически, а дальше заходим на ноутбук по ftp или по SAMBA и используем его как обычную флешку.
Необходимые компоненты этой мини-системы:- DHCP (это для раздачи ip-адреса "большому брату")
- DNS (это что б к флешке можно было обратится по имени)
- FTP (по нему будем заходить в хранилище)
- SAMBA (если кому ftp не хватает)
На этом моя гениальная идея не заканчивается.
Если у нас есть DHCP и FTP, то почему бы из "простофлешки" не получить програмно-аппаратный диагностически-лечебный комплекс? Круто звучит!?
Суть его в следующем: если у нас на больщом компьютере не загружается система, но нам нужно эту систему восстановить или хотя бы просто скопировать с нее данные, мы можем загрузить этот компьютер без использования операционной системы, которая стояла на его винтчестере. Сделать это можно по сети, превратив его в бездисковый терминал. А сервером загрузки для него будет наш нетбук (в моем случае Acer one, но это не принципиально. Можно любой). Кроме спасательных операций таким образом можно заниматься диагностикой загружая образы с тетовыми программами (memtest, mhdd и т.д.)
Что такое загрузка по сети? Ключевая идея в том, что компьютер содержит некоторый код начальной загрузки в энергонезависимой памяти, такой как микросхема ПЗУ, что позволяет соединиться с сервером и получить системные файлы по сети.
Как это работает?Для загрузки по сети, компьютер должен получить
идентификацию
образ операционной системы и
обычно, рабочую файловую систему.
Рассмотрим бездисковый компьютер (DC) у которого есть загрузочная сетевая ПЗУ(большинство современных материнских плат со встроенными сетевыми).

Возможно наличие нескольких идентичных бездисковых компьютеров. Как же их различать? У этих компьютеров (фактически у их сетевых карт) есть некоторая уникальная информация, это - сетевой Ethernet адрес. Каждая Ethernet карта в мире имеет уникальный 48 битный Ethernet адрес, так как каждый производитель Ethernet аппаратуры зарезервировал для себя блок адресов. По соглашению эти адреса записываются в виде шестнадцатеричных чисел разделенных двоеточием по группам, в каждой группе по две цифры, например - 00:60:08:C7:A3:D8 .
Используемые для получения IP адреса по данному Ethernet адресу протоколы называются Boot Protocol (BOOTP) и Dynamic Host Configuration Protocol (DHCP). DHCP - развитие BOOTP. В наших рассуждениях, если не указано иное, все что применимо к BOOTP также применимо к DHCP. (Фактически немного неправильно говорить, что BOOTP и DHCP всего лишь транслируют Ethernet адреса, в них предусмотрено обеспечение работы BOOTP и DHCP с любым типом аппаратных адресов, но большинство использует Ethernet.)
Пример обмена информацией BOOTP выглядит подобным образом:
DC: Привет, мой аппаратный адрес 00:60:08:C7:A3:D8, дай мне мой IP адрес.
BOOTP сервер: (Смотрит в базу данных адресов.) Твое имя thinkit, твой IP адрес 192.168.1.100, твой сервер 192.168.1.1, твой предполагаемый загрузочный файл /tftpboot/vmlinux.nb (и еще несколько частей информации).
После получения IP адреса, DC должен загрузить образ операционной системы и выполнить его.
Другой используемый тут Интернет протокол называется Trivial File Transfer Protocol (TFTP). TFTP подобен обрезанной версии FTP --- тут нет идентификации, и он работает поверх User Datagram Protocol (UDP), а не поверх Transmission Control Protocol (TCP). UDP был выбран вместо TCP для упрощения. Реализация UDP на DC может быть маленькой, посему код легко помещается в ПЗУ. Так как UDP блочно-ориентированный протокол, в отличие от потоково-ориентированных протоколов, передача следует блок за блоком, как например:
DC: Дай мне 1 блок файла /tftpboot/vmlinux.nb. TFTP сервер: Лови. DC: Дай мне блок 2.
и так далее, пока не будет передан весь файл. Переговариваясь, он подтверждает передачу каждого блока, и потеря пакета будет обнаружена и пакет будет передан через таймаут. Когда все блоки получены, сетевой boot ROM передает управление в точку входа образа операционной системы.
В конце, в случае запуска операционной системы, должна быть предоставлена корневая файловая система. Linux и другими Unix-ами обычно используется Network File System (NFS), однако возможны другие варианты. В этом случае код не должен находиться в ROM, а должен быть частью загружаемой операционной системы. Однако операционная система вместо реального диска должна запустить корневую файловую систему - NFS. Linux содержит требуемые для этого настройки.
Существует несколько режимов TFTP:
Простой tftp: обозначает, что клиент получает доступ ко всем файлам вашей системы. Это просто, но образуется большая дыра в безопасности (любой может получить по tftp ваш файл с паролями), но волновать это нас не должно, поскольку за обоими копутерами только мы :)
Безопасный tftp: tftp сервер использует систему chroot.2 для смены собственного корневого каталога. Все, что находится вне нового корневого каталога полностью недоступно. Так как chroot каталог становится новым корневым каталогом, поле hd в файле bootptab должно отражать эту ситуацию. Например: при использовании небезопасного tftp, поле hd содержит полный путь к загрузочному каталогу: /export/root/machine1. При использовании безопасного tftp с каталогом /export в качестве корневого каталога, каталог /export станет / , и поле hd должно быть /root/machine1.
В качестве загрузочных файлов мы должны использовать образы, которые необходимы нам. Это могут быть простенькие DOS-приложения или даже полноценные операционные системы, такие как WinPE или linux-аналоги, которые известны как liveCD.
Вот собственно и вся суть идеи.
P.S. для тех, кто очень боится LINUX:
Представляю статью об альтернативном варианте загрузке по сети, которую написал участник конференции OSZone
Power User.
Начнем с плюсов моего метода
- Не надо иметь выделенный RIS сервер (вообще не надо сервер) - не всегда он есть под рукой, а иногда за него надо платить...
- Грузить можно любой 1.44, 2.88 и 5.76 (ага, и такие бывают!) образ дискеты как он есть, без изменений (единственное если прога на 2-х дискетах 1.44, то ее надо слить в один образ 2.88), плюс образ любого размера, который поместится в память клиента (речь уже об образе диска, а не дискеты)
- Можно грузить различные линуксы, которые работают с RAM диска (например, thinstation - это RDP клиент, или те же утилиты от Paragon)
- Можно грузить различные линуксовые бинарники (например memtest86+)
- Легко модифицировать любую сеть для такой работы. Надо всего лишь на DHCP сервере сети указать IP нашего PXE сервера и имя загрузчика. Это в моей статье не описывается, так как уже было описано в первой статье (два параметра для DHCP - 066, 067), и админам думаю проблем не составит сделать нужные изменения)
- Можно все нужные файлы таскать с собой на Flash диске - и тогда любой комп быстро превращается в PXE сервер (только надо перенастроить в tftpd32 - путь к файлам и IP адреса, и перезапустить его)
Есть и минусы
- У tftpd32 есть баг - при одновременном обращении к нему больше одного клиента - жуткие тормоза на этапе загрузки pxelinux'а и образов. Если кому-то надо грузить, скажем, сразу много клиентов, то tftpd32 придется оставить только как DHCP, убрав в настройках галочку про TFTP Server (если, конечно, нет другого DHCP), а сам TFTP сервер взять другой (к сожалению, те серверы что я видел - коммерческие). Однако, при последовательном обращении клиентов - все летает. Так что как вариант просто грузить компы по очереди.
Что понадобится?Совсем немного времени и трафика на скачивание нескольких небольших программ, а так же немного времени на настройку (при наличии знаний по сетям). Помимо этого:
- Компьютер с Windows и сетевой картой (линейку 9х не проверял, но и с ней не должно быть проблем, а под NT семейством и подавно). Как соединять два компа и настраивать сетку описывать не буду - и так много написано. Априори считается, что вы можете соединить между собой два и более компа по сетке.
- Компьютер, который будет загружаться по сети с наличием сетевой карты с поддержкой загрузки по сети (PXE)
- tftpd32 (вводим в Google и тыкаем на первую ссылку)
- pxelinux - часть пакета syslinux - (гуглим по "syslinux" или берем zip-архив тут)
- Программа для создания образа дискет. Например, WinImage или что-то подобное.
- рюмочка коньяка для храбрости :)
Поехали!- Распаковываем tftpd32.exe, скажем, в С:\TFTP
- Распаковываем файл pxelinux.0 (из архива syslinux'а), memdisk (из sysylinux.zip/memdisk) а так же (опционально) memtest (sysylinux.zip/memtest) в C:\TFTP.
- Tуда же (C:\TFTP) кладем образ любимой загрузочной дискетки (можно и не только дискетки – но об этом ниже). Например, dos.imz (для экономии места и/или ускорения загрузки можно даже сжатый (winimage) образ класть – imz, a можно и не сжатый ima). Образов может быть сколько угодно.
- Проверяем, что у нас в сети нету DHCP серверов. Например, если включен ICS (шара интернета), то его выключить на время экспериментов.
Конфигурируем tftpd32.exeЗапустили, нажали Settings, в "страшном" окне указываем Base Dirrectory – C:\TFTP. Потом выставляем галочки как на картинке:

Жмем на ОК, еще раз ОК, и перезапускаем tftpd32.
Далее настраиваем наш DHCP сервер:

- Выбираем сетевую карточку, к которой подключен пациент
- Ставим начало адресов, которые получит первый клиент (этот адрес и количество клиентов не должно пересекаться с вашим IP)
- Количество адресов (минимум 1)
- Имя загрузчика (pxelinux.0)
- Маска сети (мат-часть по сетям)
- Сохраняемся....
Далее на всякий случай перезапускаем tftpd32. Почти закончили :)
Конфигурируем загрузкуСоздаем текстовый файл C:\TFTP\PXELINUX.CFG\default и редактируем его, скажем, так:
default local
prompt 1
label local
localboot 1
label dos
kernel \memdisk
append initrd=\dos.imz
label pqpm8
kernel \memdisk
append initrd=\pqpm8.imz
label mem
kernel \memtest
Подробную информацию можно найти в pxelinux.doc из syslinux'a.
Ну и наконец, устанавливаем на компе загрузку с сетевого адаптера по PXE.
Что получаем?Компьютер грузится по сетке, подключается к вашему компьютеру, скачивает загрузчик и ждет вашего ввода команды. Ну а там смотря что ввели:
- Просто ENTER – загрузится с локального диска (или по команде local)
- Mem – загрузится memtest86 (тест памяти)
- Dos – загрузится ваша досовская дискетка
Ну и далее только от фантазии зависит :) Можно, например, известные утилиты от Paragon тоже так грузить или тот же самыйй WinPE, можно тот же thinstation terminal client и т.д.
P.P.S. лично меня такое увеличение функциональности в ноутбуке или нетбуке очень радует. Но, у меня есть одна проблема, мешающая реализации этого мода -- это тотальное отсутствие времени :( Если на моем любимом thinkit есть люди, имеющие желание попрактиковаться в настройке чего-то более сложного и интересного нежели установка winamp'а, то я готов стать для них консультантом и тестером.