BSDPORTAL.RU

На этом сайте обсуждаются вопросы использования ОС FreeBSD
 Портал  •  Статьи  •  Форум  •  Wiki  •  Поиск  •  FAQ  •  Обои  •   Официальная документация  •  Новые темы 

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
СообщениеДобавлено: Чт 02 июл, 2015 1:36 pm 
Не в сети

Зарегистрирован: Чт 02 июл, 2015 1:20 pm
Сообщения: 2
Привет всем!)
Скажу сразу, в BSD-системах я новичок и полный нуб).
Теперь по порядку. Передо мной стоит задача написать модуль уровня ядра для одного старого сервера, работающего под сильно переделанной FreeBSD 4.х версии. В качестве железа - какая-то экзотическая начинка с процессором архитектуры PowerPC. Соответственно, необходимо настроить кросс-компилятор. Я так понимаю, во-первых, необходимо настроить собственно инструментарий для сборки, а во-вторых, необходимо с сервера вытащить какие-то библиотеки, чтобы их потом подсунуть компилятору (для корректного вызова стандартных функций типа printf, malloc и т.д.). Прошу помочь инфой по теме.
Как настраивать кросс-компилятор? Великий гугл даёт много различной инфы, где-то пишут про пересборку тулчайна, где-то говорят, что достаточно пересобрать binutils.
Нигде не нашёл инфы о том, какие библиотеки надо вытащить с сервера и как их подсунуть компилятору.
У меня машина под управлением Win 7 x64, есть виртуалка с FreeBSD 4.11.
Плиз хелп, задача очень срочная, в короткие сроки сам не осилю.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Чт 02 июл, 2015 4:03 pm 
Не в сети
Модератор

Зарегистрирован: Сб 11 сен, 2004 6:33 am
Сообщения: 5100
Откуда: Москва
Вообще, разных способов различной степени костыльности много, но в любом случае ситуация крайне нездоровая. Что делает эта машина, если не секрет? И точно ли это FreeBSD, потому что 4.x, насколько я помню, powerpc не поддерживала - судя по release notes, его поддержка появилась только в 6.3.

- Проще всего обойтись без кросс-компиляции вообще. Если в модуле нет ничего архитектурно- или железоспецифичного, для разработки, отладки и тестирования можно использовать виртуалку с 4.11, под целевую машину собирать уже на ней самой или на аналогичной. На самом деле, если есть аналогичная машина то задача вообще сильно упрощается, потому что тогда эту машину можно налить образом целевой и далее собирать и тестировать код на ней. Если машины нет, то в любом случае учитывайте неизбежный риск уронить продакшн машину не протестированным в целевом окружении модулем.

- Можно попробовать эмуляцию: есть qemu который умеет эмуляцию powerpc. Можно запустить под ним образ целевой системы (если получится то см. выше про аналогичную машину). Либо не целевой системы, а обычной FreeBSD (так же 6.3) под powerpc, а уже там собирать код под целевую систему (хотя это мутный вариант - с одной стороны тут не будет кросс-компиляции что хорошо, но с другой - придётся собирать старый код под более новой FreeBSD с чем могут быть свои проблемы). Если qemu нет под windows, понадобится виртуалка/реальное железо со свежей freebsd или linux'ом.

- А так вообще есть штатная кросс-компиляция
Код:
env TARGET=powerpc TARGET_ARCH=powerpc make buildworld


https://wiki.freebsd.org/A_Brief_Guide_ ... ng_FreeBSD

Дальше этой команды я в неё не углублялся, потому что для кросс сборки свежих версий больше ничего и не нужно (но на свежих версиях код 4.11 уже просто так не собрать), но по идее там многоуровневый процесс который сначала собирает нужные для дальнейшей сборки утилиты для текущей архитектуры, потом собирает тулчейн для кросс-компиляции и уже им собирает всё под целевую архитектуру. Не знаю как оно работало и работало ли на 4.x, да ещё и с powerpc, да ещё с вашей "переделкой", но начать можно в любом случае отсюда. Если повезёт (почему бы и нет, ведь то что сейчас работает как-то собрали) и отработает buildworld целиком, то собрать ещё один модуль можно будет тривиально, штатным способом. Если нет, то придётся разбираться в сборочной системе и добиваться сборки как минимум кросс-тулчейна. С ним собрать отдельный модуль будет несложно.

menzoberranzanec писал(а):
Плиз хелп, задача очень срочная, в короткие сроки сам не осилю.

Передайте руководству, что раз уж оно допустило ситуацию в которой бизнес-критичные процессы зависят от устаревшего железа с устаревшим софтом, который никем не поддерживался и в котором никто не разбирается, то ему придётся смириться с тем, что такие задачи в короткие сроки не решаются. И при этом очень хорошо оплачиваются.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пт 03 июл, 2015 2:27 pm 
Не в сети

Зарегистрирован: Чт 02 июл, 2015 1:20 pm
Сообщения: 2
Спасибо за советы, буду изучать!

К сожалению, рассказать о том, что делает машина, я не могу. Могу только добавить, что машина уникальна, подобных ей найти не удалось.

По запискам сотрудника однозначно установить ОС, на основе которой создавалась текущая ОС, не удалось, однако кто-то из старожилов утверждает, что донором была FreeBSD 4-й версии. Правда, точно сказать, была ли это версия 4.x или версия x.4 (6.4, 7.4 или что-то другое), он не может.

Поставить на эту машину компилятор и скомпилировать не получится, так как отсутствует функционал установки пакетов (но, что странно, можно добавлять модули ядра через самопальную утилиту). Родная ОС вообще очень бедная, больше половины встроенных утилит отсутствует.

Руководство в курсе, что налажало, однако проблему решать надо) Вопрос с финансированием и с ресурсами уже поднят.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пт 03 июл, 2015 4:10 pm 
Не в сети
Модератор

Зарегистрирован: Сб 11 сен, 2004 6:33 am
Сообщения: 5100
Откуда: Москва
menzoberranzanec писал(а):
Правда, точно сказать, была ли это версия 4.x или версия x.4 (6.4, 7.4 или что-то другое), он не может.

Версию нужно знать точно, бинарной совместимости между ветками нет.

menzoberranzanec писал(а):
Поставить на эту машину компилятор и скомпилировать не получится, так как отсутствует функционал установки пакетов

Пакеты тут не нужны - всё что вам понадобится находится в базовой системе. Достаточно распаковать образ FreeBSD нужной версии в какую-нибудь директорию и получить всё что надо. Можно использовать напрямую, можно через chroot.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Зарегистрированные пользователи: Bing [Bot], Google [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB
Яндекс.Метрика