Некоторое время назад в рамках одного проекта мне довелось подержать в руках несколько eBox-2300sx и eBox-2300 устройств. Нужно было запустить на них OpenWrt. А она не хотела стартовать, т.к в ядре не было поддержки нужных устройств.
Самым простым и надежным способом показалась перекомпиляция OpenWrt x86 для моих устройств, благо у них для этого есть даже целый SDK.
Сначала процесс создания прошивки мне нравился, потом начал немножко доставать, но уже были готовы прошивки по отдельности для eBox-2300sx и eBox-2300 и мне пришлось сосредоточиться на прямых задачах проекта, а не допиливании прошивок.
Но вот в один из длинных осенних вечеров всё таки зачесались руки к оптимизации и минимизации. Так и получилась вот эта последняя прошивка, которая поддерживает одновременно и eBox-2300sx и eBox-2300
eBox firmware English manual: http://asha.com.ua/storage/ebox/readmeEn.txt
В прошивку добавлены необходимые модификации и драйвера для того чтобы она нормально работала на eBox устройствах (eBox-2300sx и eBox-2300). Также включены драйвера для большинства флешек и USB Bluetooth
Эта прошивка полностью совместима с оригинальной OpenWrt 10.3 Backfire x86 и можно безбоязненно устанавливать родные пакеты отсюда: http://downloads.openwrt.org/backfire/10.03/x86/
Я тестировал прошивку на CF карточках объемом 2 Гб и 4 Гб. Но думаю, что и с жесткого диска она должна запуститься, нужно будет только поставить правильное название диска в конфигурации загрузчика (описано ниже).
Что же можно сделать с этими eBox устройствами?
Вставить в него жесткий диск — получиться NAS. Можно еще торрент прикрутить, или USB Bluetooth вставить и сделать Bluetooth сканнер (hcitool в прошивке тоже есть).
Да мало ли чего можно сделать.
К тому же, цена на эти eBox устройства уже не кусается, а сделаны они очень качественно и способны проработать очень долго.
Чтобы инсталлировать OpenWrt на устройство нужно:
1. Приготовить CF карточку для того чтобы загружаться с неё
2. Сконфигурировать устройтво для того чтобы оно загружалось с карточки
3. Засунуть карточку в устройство в нужное место
4. Включить устройство. После одного бипа оно готово к использованию.
Как приготовить CF карточку
Для этого можно пользовать сделанный мной образ VirtualBox PC или архив с прошивкой и install.sh
скрипт (это если у вас есть комп с линуксом).
Конечно же, готовить карточку используя VirtualBox PC более безопасно и легче.
Готовим CF карточку используя VirtualBox PC
Нужно:
1. Поставить VirtualBox и VM VirtualBox Extension Pack (для поддержки USB)
2. Настроенный VirtualBox образ — его можно загрузить отсюда: http://storage.asha.com.ua/eBoxInstallerAsha.ova
Примечание: не могу придумать нормального объяснения для этого, но очень часто нужно сделать именно так чтобы устройство
могло нормально грузиться с карточки (симптомы проблемы: устройство просто не грузиться с карточки).
Вобщем, на компе с Windows нужно удалить все разделы на карточке памяти, а потом создать один и отформатировать его в FAT
Шаги создания CF карточки для eBox устройства:
1. Запускаем eBoxInstaller VirtualBox PC
2. Вставляем CF карточку в кардридер на сервере VirtualBox
3. Присоединяем кардридер к eBoxInstaller VirtualBox PC (через VirtualBox PC меню “Devices => USB devices => Your Card reader”)
4. Заходим на консоль eBoxInstaller VirtualBox PC.
Пользователь: root
Пароль: 123456
5. Находим присоединенное устройство кардридера. Для этого смотрим файл /var/log/messages
или вывод команды fdisk -l
. В примерах моя карточка /dev/sdc
БУДТЬТЕ ВНИМАТЕЛЬНЫ: если ошибиться в выборе устройства можно удалить все данные на диске VirtualBOX PC
6. Идем в каталог с прошивкой: cd /eboxInstaller
7. Если устройство кардридера не /dev/sdc
– прописываем правильное имя устройства в install.sh
file. Для этого можно пользовать vi
или встроенный в mc
редактор
8. Запускаем скрипт и ждём пока отработает: ./install.sh
9. Вытаскиваем карточку и вставляем её в eBox
Готовим карточку с помощью install.sh скрипта
ЭТО ОПАСНЫЙ ПУТЬ! И делается на компе с установленным линуксом.
1. Качаем eBoxInstallerScript отсюда: http://asha.com.ua/storage/ebox/eboxInstallerScript.tar.bz2
2. Распаковываем его в /eboxInstallerScript
и идем в этот каталог.
3. Нужно проверить чтобы в системе были: syslinux
, fdisk
и другие команды которые пользует install.sh
скрипт
4. Советую проверить несколько раз инсталляционный скрипт и установить правильные пути и устройства. Скрипт тестировался в Linux Fedora 12.
5. Вставить карточку в кардридер.
6. Находим устройство кардридера. Для этого смотрим файл /var/log/messages
или вывод команды fdisk -l
. В примерах моя карточка /dev/sdc
БУДТЬТЕ ВНИМАТЕЛЬНЫ: если ошибиться в выборе устройства можно удалить все данные на диске компьютера
7. Если устройство кардридера не /dev/sdc
– прописываем правильное имя устройства в install.sh
file. Для этого можно пользовать vi
или встроенный в mc
редактор
8. Запускаем скрипт и ждём пока отработает: ./install.sh
9. Вытаскиваем карточку и вставляем её в eBox
Подготовка к загрузке eBox
Подключаем монитор, клавиатуру, блок питания, вставляем карточку.
Включаем устройство и жмём кнопку DEL
для того чтобы войти в BIOS
В BIOS нужно выставить опции для того чтобы устройство грузилось с карточки
и режим работы с IDE
(если эта опция есть в BIOS)
Для примера (на eBox-2300):
1. Boot -> Boot Device Priority.
Set 1st Boot Device as HDD:PM-CF Card
2. Advanced -> IDE Configuration.
Поставить OnBoard IDE operate Mode
в Native Mode
Сохранить и выйти
Время загрузки устройства – около 40 секунд
Если возникают ошибки при загрузке, необходимо понять что это такое и устранить их.
Одна из распространенных ошибок:
…. Cannot found a root device “hda2” or ….
… here are avaliable partition
… hdc2 …
Kernel panic – not syncing: VFS: unagle to mount root fs on ….
Для того чтобы истранить ошибку редактируем файл конфигурации загрузчика: /eboxInstaller/bootfs/syslinux.cfg
(это файл всередине VirtualBox PC)
Меняем: APPEND root=/dev/hda2 rootdelay=10
на: APPEND root=/dev/hdc2 rootdelay=10
Потом переделываем карточку и пытаемся загрузиться с неё снова
Примечание: устройство может быть /dev/hdc2
или /dev/sdc2
или еще какое-нибудь другое
После успешой загрузки eBox делает один бип.
Параметры eBox
eBox это маленький комп с Linux на борту, можно подключаться к нему по сети через ssh или работать через консоль с клавиатуры.
IP адресс устройства: 192.168.1.77
пользователь: root
пароль: 123456
Если к eBox подключен монитор и клавиатура в систему можно войти без пароля.
Чтобы запретить вход в систему через консоль нужно:
1. Заходим на eBox через консоль или через ssh
2. Комментим tty1::askfirst:/bin/ash —login string in /etc/inittab file
3. Перезагружаем устройство, можно командой reboot
.
Изменяем IP по-умолчанию
Настройки сохранены в таких файлах: /etc/config/network
и /etc/resolv.conf
.
Правим что нужно и рестартуем сеть или всё устройство.
Респект! Очень полезная статья.
К сожалению , ни с помощью скрипта, ни с помощью виртуальной машины поставить не получилось. Поставил вручную , но всё завелось. Спасибо.
Не получается скачать eBoxInstallerAsha.ova((
Да, вижу проблему, но решать её пока не имею времени. Можете скачать вот с этого временного линка – http://storage.asha.com.ua.s3-website-us-west-2.amazonaws.com/eBoxInstallerAsha.ova
Скачал. Работает. Спасибо.
А кто-нибудь пробовал использовать GPIO этого мини-компа?
Мне достались 2 версии данной “коробочки”:
1. Процессор SIS550, 64Мб оперативки, есть звук, miniPCI нет, но контакты на плате есть (подозреваю, что нет контроллера, на плате есть пустое место для большой микросхемы). GPIO на плате отсутвует, как и что-либо напоминающее хотя бы UART.
2. У другой процессор MSTI PSX-300, 128Мб памяти, GPIO, но нет звука. Также присутствует 6-штырьковый разъем с шагом 1.25мм и похоже, что UART (4 дырки в ряд как на роутерах).
Подозреваю, что первый вариант – это eBox-2300, а второй – eBox-2300SX
Есть небольшой вопрос: а если я хочу поставить не на CF, а на USB прошивку (CF сдохла благополучно), что надо поправить?
X-Linux (родная ОС) флешку определяет как /dev/sda
А тут для /dev/sda2 я получаю kernel panic – не найден root раздел.
Перепробовал уже все: /dev/sda2 /dev/sdb2 /dev/sdc2
Только на /dev/sda2 получаю kernel panic, в остальных случаях boot error.
Или оно только с IDE умеет работать? (чем, по сути, и является CF)