18 декабря | 2024г. | 19:43:00


АвторТема: Собираем Vmlinux для GI9196 и клонов самостоятельно. Инструкция для новичка  (Прочитано 5451 раз)

0 Пользователей и 1 Гость смотрят эту тему.

Оффлайн roman_ispuАвтор темы

  • Друзья Джедаев
  • *****
  • Сообщений: 356
  • Поблагодарили: 285
  • Уважение: +6
Здесь приведена достаточно подробная инструкция, как собрать рабочий 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 0xBFFFFF99
Спойлер   :

8. В файле Makefile меняем строку EXTRAVERSION =-5.1-brcmstb на EXTRAVERSION =-4.2-brcmstb
Спойлер   :

9. Теперь необходимо указать системе, как скомпилировать ядро так, чтобы ресивер мог с ним работать, ведь собираем мы на машине х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 со строкой вида
Спойлер   :
boot -elf -fatfs usbdisk0:vmlinux 'mem=150M root=/dev/sda1 rootfstype=ext2 rw rootdelay=15 console=ttyS0,115200'
где /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   
Просьба о замеченных ошибках писать в личку! Вопросы и дополнения в тему.

Оффлайн roman_ispuАвтор темы

  • Друзья Джедаев
  • *****
  • Сообщений: 356
  • Поблагодарили: 285
  • Уважение: +6
Готовим USB Flash носитель в Linux.
Действуем через терминал в Linux или разбиваем прямо на ресивере.
Нам потребуется текстовый файл, обзовем его partition-lba48.map (можно выдрать из /etc ресивера)
Исходный вид (из ресивера следующий):
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.Расшифровка 0,512,83,* - первая цифра обозначает откуда будет начинаться раздел (0 с начала диска), вторая размер в Мб, третья тип файловой системы 83 - Linux, 82 - Linux swap, b - Win95/Fat32, звездочка * - флаг загрузочного раздела. В следующей строке первая цифра будет суммой первых двух чисел предыдущей строки 0+512=512, остальное аналогично. В последнем разделе размер не указываем, что будет обозначать создать раздел на всем оставшемся пространстве.

Отредактируем файл следующим образом:
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.Получим три раздела. Тут есть одно НО. Если первым разделом сделать ext2, то при втыкании флэшки в компьютер с Windows, получим сообщение о необходимости форматирования флэш, отформатировав испортим ext2 раздел, поэтому его лучше не делать первым. Второй раздел тоже лучше не делать безразмерным, так как в последствии придется долго ждать на стадии форматирования. Ну а хвост (третий раздел) можете сделать как вам угодно. Хоть Linux хоть Fat, хоть вообще не создавать.
Сохраняем файл, заменяем его в ресивере (если дальше будем работать с ресивером), или сохраняем на диск если будем работать в Linux.

В терминале выполним команду (все команды даны для разбивки и форматирования в ресивере):
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.Она уничтожит таблицу разделов на флэшке
Далее создаем новую таблицу разделов
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.Далее форматируем разделы:
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.В Fat 32 первый раздел
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.В ext2 второй раздел.
Третий аналогично во что хотите.

В случае Linux командой df смотрим название нашего устройства (может быть sdb, sdc и т.д.) и меняем sda1 в скрипте на нужный раздел носителя.
Также меняем путь к файлу с таблицей разделов (изменить вот эту строку /etc/partition-lba48.map, на ту куда положили таблицу разделов)

Теги:
 

Похожие темы

  Тема / Автор Ответов Последний ответ
0 Ответов
6054 Просмотров
Последний ответ 19 июля | 2010г. | 14:21:26
от rolex
1496 Ответов
648717 Просмотров
Последний ответ 04 декабря | 2011г. | 23:30:44
от Cms
12 Ответов
10055 Просмотров
Последний ответ 03 сентября | 2022г. | 15:09:39
от dima_83
0 Ответов
7330 Просмотров
Последний ответ 10 декабря | 2013г. | 20:51:11
от ooolexa
0 Ответов
3464 Просмотров
Последний ответ 06 июля | 2015г. | 23:59:58
от vodker



X

Добро пожаловать!

Мы заметили, что у Вас установлено расширение AdBlock или ему подобное. Пожалуйста добавьте наш Клуб в белый список, внесите этим посильную лепту в его развитие. Спасибо!