Здесь приведена достаточно подробная инструкция, как собрать рабочий vmlinux для нашего ресивера. Данное действие доступно для любого пользователя, хоть раз в жизни сталкивающего с любыми системами программирования или работающего когда-либо в DOS, да и любых других системах с командной строкой.
Я нисколько не претендую на авторство изложенного текста, так как он собран из сообщений размещенных на данном форуме, оформленных в единое целое и дополненных описаниями и скринами. Отдельное спасибо всем кто искал ссылки и размещал сообщения, касающиеся данного процесса, в особенности пользователю
Taapat, чье
сообщение и взято за основу данной темы.
Небольшая предыстория: Задался я однажды целью включить в наш ресивер поддержку функций сетевого моста, чтобы включить ТВ через ресивер в домашнюю сеть, без создания дополнительных подсетей. Собственно с этого все началось. Скачал более полный busybox включающий в себя bridge-utils, порадовался минуту и тут меня ждал облом в виде сообщения о том что в нашем ресивере нет модулей для поддержки сетевого моста, а так как в инете их тоже просто так не найдешь, нужно их собрать самостоятельно. Для этого нам нужен Linux, исходники нашего ресивера и еще много... (или немного) чего. Как в дальнейшем оказалось одних модулей тоже недостаточно, так как функции сетевого моста должны появится в ядре при его сборке. Вот сборкой ядра и займемся.Итак приступим...1.Нам нужна машина с Linux. Если она у вас есть пропустите этот пункт.В данном случае будем использовать Ubuntu 11.04, но вообще можно использовать любую версию. Я качал установочный образ
-> отсюда <-. Можно пойти и на сайт разработчика
Ubuntu, однако скорость скачивания оттуда у меня была на порядок ниже. Есть два варианта установки, записать образ на болванку/флэшку и установить на компьютер, либо заиметь виртуальную машину и на ней проводить эксперименты. Второй способ, на мой взгляд более привлекателен, но требует компьютера с большей вычислительной мощностью.
Я выбрал второй вариант.
Итак, качаем
VirtualBox 4.1.4 for Windows и
VirtualBox 4.1.4 Oracle VM VirtualBox Extension Pack (для поддержки USB 2.0). Устанавливаем все это дело. Создаем виртуальную машину, на которую в качестве образа CD монтируем наш дистрибутив Linux. Запускаем установку и ждем несколько... десятков минут, пока процесс пройдет
Спустя ХХ минут
система радостно загрузится. Сразу хочется открестить вас устанавливать какие либо обновления системы, так я, например по глупости, радостно клацнул обновить, подождал еще много минут, получил последнюю версию этого зверя с навороченной графикой и жуткими тормозами, по причине виртуальности машины и виртуальности её компонентов.
Итак Linux мы имеем, идем дальше.
2.Ставим необходимые пакеты. Для этого идем Система->Администрирование->Менеджер пакетов Synaptic. Используем поиск.
Убеждаемся в наличии необходимых пакетов, а недостающие устанавливаем, пометив их и нажав применить. Нам необходимы
gcc, build-essential, make, libncurses5-dev. Первые три у меня были установлены сразу, последний необходим для работы
menuconfig и ставится дополнительно
3.Устанавливаем smake. Берем отсюда:
-> отсюда <-. Сохраняем (по умолчанию Домашняя папка->Загрузки), распаковываем и перемещаем в домашнюю папку. (У меня имя компьютера, выбранное при установке test, потому домашняя папка называется test).Итог на картинке ниже
Теперь smake нужно собрать и установить. Запускаем терминал: Приложения->Стандартные->Терминал
Набираем команды. После каждой жмем Enter. В процессе работы не обращаем внимания на разные сообщения начинающиеся с warning
Примечание: После первого ввода команды начинающейся с sudo потребуется ввести пароль, который задавали при установке системы. Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
Итог sudo make будет примерно такой.
Итог sudo make install такой
4.Скачиваем исходники ядра -> отсюда <-. Распаковываем и перемещаем в домашнюю папку как и в п.2 Переименовываем linux-2.6.12 в stblinux-2.6.12-5.1
5.Скачиваем патч -> отсюда <-. Распаковываем и кидаем в домашнюю папку. В терминале выполняем:
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
Видим много текста и
НИКАКИХ ОШИБОК!6. Теперь нам необходимо задать конфигурацию ядра. Конфигурация "по умолчанию" лежит в arc/mips/configs/bcm97401c0_defconfig. Копируем этот файл в папку с исходниками ядра (в нашем случае
stblinux-2.6.12-5.1) и переименовываем в .config
Файл станет скрытым, поэтому чтобы увидеть его в следующий раз, когда вы зайдете в папку нужно нажать Ctrl+H (или Вид->Показать скрытые файлы).
Теперь о итоговом файле конфигурации. Пример такого файла есть тут
тут, однако после сборки с данным конфигом вы не сможете загрузится с флэшки. Файл конфигурации под флэшку есть у одного из пользователей форума и если он даст добро, то я с удовльствием размещу его здесь. Немного позже думаю сам разберусь с параметрами .config и все тут опишу.
Кстати, достаточно удобно подредактировать исходный конфиг можно, набрав в терминале
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
и отметив необходимые модули, если конечно вы понимаете что делаете
7. Далее необходимо внести изменения в файл drivers/net/brcmint7038/bcmemac.c, заменив строку
#define FLASH_MACADDR_ADDR 0xBFFFF824 на
#define FLASH_MACADDR_ADDR 0xBFFFFF998. В файле Makefile меняем строку
EXTRAVERSION =-5.1-brcmstb на
EXTRAVERSION =-4.2-brcmstb9. Теперь необходимо указать системе, как скомпилировать ядро так, чтобы ресивер мог с ним работать, ведь собираем мы на машине х86, а работать должно в среде, понятной процессору Broadcom. Для этого необходим кросскомпилятор. Берем его
-> отсюда <- (нужна регистрация, бесплатная и быстрая). Файл называется crosstools_hf-linux-2.6.12.0_gcc-3.4.6-20_uclibc-0.9.28-20050817-20070131.tar.gz. Распаковываем в домашний каталог и переименуем папку с диким по длине названием в crosstools, для удобства дальнейшей работы
10. Возвращаемся в терминал и набираем команды Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
Пояснения. У меня не компилируется в режиме обычного пользователя, поэтому все делал в режиме суперпользователя su
(обратите внимание на измение путей к домашней папке при этом!). Далее пояснения по строкам кода:
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
Итог:
11. В папке с исходниками ищем vmlinux. Если собирали какие то модули, забираем в соответствующих папках файлы с расширением *.ko (пути к ним будут указаны в терминале, в конце сборки). Для работы в нашем ресивере их необходимо кинуть в lib/modules/2.6.12-4.2-brcmstb/extra/ и указать в файле modules.dep путь к модулю, чтобы он автоматически монтировался при загрузке (синтаксис modules.dep предельно понятен, описывать смысла нет).
12. Для запуска нашей системы, необходимо иметь /root (например слить с нашего ресивера), разбить носитель (любой USB HDD, HDD SATA или USB Flash) на два раздела, один из них отформатировать в FAT32, второй в ext2 или ext3. На второй раздел поставить флаг boot. В раздел FAT32 положить собранный vmlinux и текстовый файл batch.cfe со строкой вида
где /dev/sda1 - устройство на котором разместили /root (dev/hda1 в случае HDD), ext2 или ext3 - тип файловой системы root, rootdelay=15 - необходим для запуска с USB устройств, в остальных случаях можно удалить. В случае загрузки с HDD достаточно разделов с ext2 или 3 на HDD, но нужна флэш с FAT32 чтобы положить туда загрузчик и batch.cfe
Вот и все, попробовав раз поймете что ничего сложного нет.
Внимание: Пути к файлам и команды в Linux в отличие от DOS вводятся с соблюдением регистра. То есть для Linux, к примеру Data и data - разные объекты, а PATH и path - разные переменные!!! Будьте внимательны.
P.S.Пользуйтесь на здоровье, как запустить систему с этого Linux указано
-> тут <-[ Гостям не разрешен просмотр вложений ][ Гостям не разрешен просмотр вложений ][ Гостям не разрешен просмотр вложений ][ Гостям не разрешен просмотр вложений ][ Гостям не разрешен просмотр вложений ][ Гостям не разрешен просмотр вложений ][ Гостям не разрешен просмотр вложений ][ Гостям не разрешен просмотр вложений ]
Добавлено 02 ноября | 2011г. | 21:30:41 Просьба о замеченных ошибках писать в личку! Вопросы и дополнения в тему.