Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Как собрать 32-разрядное ядро на 64-разрядной машине?  (Прочитано 5159 раз)

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

Оффлайн Vitsliputsli

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1244
    • Просмотр профиля
Есть старая машина для которой любое увеличение производительности очень важно, поэтому решил собрать для нее ядро. Собирать удобнее (да и быстрее получится) на новой машине. Но при сборке xconfig (да и gconfig тоже) некоторые пункты изменять не позволяют. А по-умолчанию выбрано:
Цитировать
64-bit kernel = y
X86_32 = n
X86_64 = y
те параметры машины на которой собирается ядро... Можно ли както его заставить работать независимо от конфигурации машины осуществляющей сборку? Или нужно собирать только на машине назначения?
« Последнее редактирование: 21 Сентябрь 2010, 09:42:35 от Vitsliputsli »

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Ответ на вопрос в теме: нет, не обязательно.

Есть старая машина для которой любое увеличение производительности очень важно, поэтому решил собрать для нее ядро. Собирать удобнее (да и быстрее получится) на новой машине. Но при сборке xconfig (да и gconfig тоже) некоторые пункты изменять не позволяют.

Еще есть make menuconfig и make config, можно попробовать ими.
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

Оффлайн Vitsliputsli

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1244
    • Просмотр профиля
Цитировать
Еще есть make menuconfig и make config
графические или нет, он упорно хочет собирать только x64. Вероятно потому, что make и библиотеки 64-разрядные.

Знать бы, как  собрать 32-разрядное приложение на x64-системе?..

Оффлайн ChaosWarrior

  • Активист
  • *
  • Сообщений: 461
  • d(-_-)b
    • Просмотр профиля
Re: Ядро нужно собирать на машине в которой он
« Ответ #3 : 20 Сентябрь 2010, 20:04:09 »
В виртуальной машине с 32-х разрядной Ubuntu.
Открытый код и его подержка — это лучшая реклама Windows.

Оффлайн Vitsliputsli

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1244
    • Просмотр профиля
Цитировать
В виртуальной машине с 32-х разрядной Ubuntu.
ну это считай надо установить новую ОС. Както неправильно получается...

Оффлайн 0xEEd

  • Любитель
  • *
  • Сообщений: 61
    • Просмотр профиля
Можете не мучиться, прироста быстродействия от отключения неиспользуемых модулей не получите. И даже наоборот, рискуете его чуть-чуть уменьшить. Чего реально можно добиться - уменьшения размера ядра (~2 раза) и папки /lib/modules (~3-4 раза), но это не актуально.

В чем проявляется нежелание make собирать 32-битное ядро? А какие у вас библиотеки make'у неважно, при сборке ядра они не используются.
 

Оффлайн Vitsliputsli

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1244
    • Просмотр профиля
хочется попробовать, пока не попробуешь - не узнаешь...  :) а хочется - значит надо.

Цитировать
В чем проявляется нежелание make собирать 32-битное ядро?
  По-умолчанию выбраны пункты для x64, а изменить их нельзя (соответственно пункты для x32 тоже заблокированы).

Оффлайн 0xEEd

  • Любитель
  • *
  • Сообщений: 61
    • Просмотр профиля
Да, действительно. Нужно разбираться. Попробуйте прочесть в Makefile о "make ARCH=ia64"

Оффлайн Vitsliputsli

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1244
    • Просмотр профиля
ага, нашел, вы верно указали куда копать, спасибо.
Прочитал makefile, в нем прописано конфигурирование исходя из архитектуры системы. Вобщем, как написано в makefile, нужно запускать с параметром ARCH=x86 (исходя из названия папки в arch).
Все работает  :D

Пользователь решил продолжить мысль 21 Сентябрь 2010, 09:53:10:
После ввода параметра ARCH=x86 вроде как заработало, появилась возможность выбирать 32-разрядную архитектуру. Но после выхода из xconfig собирает все равно для архитектуры x64.
Будет время почитаю еще makefile, видно чтото в нем не так, тк  в нем же и написано что параметра ARCH должно быть достаточно.
« Последнее редактирование: 21 Сентябрь 2010, 09:53:10 от Vitsliputsli »

Оффлайн aliftin

  • Старожил
  • *
  • Сообщений: 1398
    • Просмотр профиля
А взять любой конфиг от x86 и собрать на его основе не получается?
Если мы не можем до чего то дотянуться, мы виним в этом не свой рост, не отсутствие табуретки, а свою цель.

Оффлайн ChaosWarrior

  • Активист
  • *
  • Сообщений: 461
  • d(-_-)b
    • Просмотр профиля
Цитировать
В виртуальной машине с 32-х разрядной Ubuntu.
ну это считай надо установить новую ОС. Както неправильно получается...
я не мучаюсь вопросом, правилĴн

Пользователь решил продолжить мысль 22 Сентябрь 2010, 03:29:44:
Я не сторонник красивых решений, мне нравятся рабочие. Поставить минимальную систему и собрать, что вам там надо, всяко быстрее, чем вы уже компилер мучаете.

Пользователь решил продолжить мысль 22 Сентябрь 2010, 03:34:52:
Можно даже в виртуалке не компилировать, а сделать конфиг, а собрать в основной  системе.
« Последнее редактирование: 22 Сентябрь 2010, 03:34:52 от ChaosWarrior »
Открытый код и его подержка — это лучшая реклама Windows.

Оффлайн Vitsliputsli

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1244
    • Просмотр профиля
Цитировать
А взять любой конфиг от x86 и собрать на его основе не получается?
Цитировать
Можно даже в виртуалке не компилировать, а сделать конфиг, а собрать в основной  системе.
Сделать конфиг для x86 не проблема, только вот не собирает его.

Делаю так:
make -e ARCH=i386 xconfigвсе великолепно конфигурирует

Если надо, то затем:
sudo make-kpkg clean
И начинаю собирать:
sudo make-kpkg --arch i386 --initrd kernel_image kernel_headers
Начинается сборка и затем вываливается с такой ошибкой:
(Нажмите, чтобы показать/скрыть)
Если я правильно понимаю, он хочет 32-разрядный gcc с префиксом  i486-linux-gnu- ?
Если да, то как это можно сделать?

ps
Цитата: ChaosWarrior
Я не сторонник красивых решений, мне нравятся рабочие. Поставить минимальную систему и собрать, что вам там надо, всяко быстрее, чем вы уже компилер мучаете.
В принципе, можно поставить Винды и не мучиться (там и поддержка моей WiFi карточки есть). Только мне не нужно сиюминутное решение. И не думаю, что все очень сложно, к тому же глядишь, чемунибудь и научусь в процессе...
 :)

Оффлайн ChaosWarrior

  • Активист
  • *
  • Сообщений: 461
  • d(-_-)b
    • Просмотр профиля
Re: Как собрать 32-разрядное ядро на 64-разрядной &
« Ответ #12 : 07 Октябрь 2010, 08:50:50 »
Заметьте, про Windows не было ни слова. Я предлагаю поставить 32-х разрядную систему на виртуальную машину. там же вообще ничего не нужно, кроме консоли, компилятора и нескольких библиотек. Можно и графическую среду, удобнее будет.

Цитировать
Сделать конфиг для x86 не проблема, только вот не собирает его.
Значит таки проблема.
Я просто не могу понять, зачем, прости господи, онанировать на компилятор? Зачем создавать проблему из ничего, когда можно было УЖЕ собрать ядро? И вообще, вам нужно собрать 32-бит ядро или над..учиться компилировать 32 бит на 64 бит компиляторе? Если первое - решение выше.

Про i486-linux-gnu-gcc. Это косяк в исходниках ядра. Хотя на багрепорте с юморком написано "Это не ошибка". Еще один написал "Как же не ошибка, что делать с этим глюком?", потом еще пара человек отметилась, потом баг пометили как "исправлен", хотя решения так и нет. Хотите поковыряться в ядре? - ради бога, флаг вам в руки.

Пользователь решил продолжить мысль 07 Октябрь 2010, 08:59:30:
Цитировать
Только мне не нужно сиюминутное решение. И не думаю, что все очень сложно, к тому же глядишь, чемунибудь и научусь в процессе...|
Вы радикально неправы. В данном случае нужно именно сиюминутное решение - вообще ничего не собирать, ставить готовое.
И еще: а вы уверены, что вообще сможете скомпилировать рабочее ядро? Компилятор вас уже в тупик поставил, а на виртуальной машине тренироваться куда проще.
« Последнее редактирование: 07 Октябрь 2010, 08:59:30 от ChaosWarrior »
Открытый код и его подержка — это лучшая реклама Windows.

Оффлайн Sharabdin

  • Участник
  • *
  • Сообщений: 247
    • Просмотр профиля
Цитировать
А взять любой конфиг от x86 и собрать на его основе не получается?
Цитировать
Можно даже в виртуалке не компилировать, а сделать конфиг, а собрать в основной  системе.
Сделать конфиг для x86 не проблема, только вот не собирает его.

Делаю так:
make -e ARCH=i386 xconfigвсе великолепно конфигурирует

Если надо, то затем:
sudo make-kpkg clean
И начинаю собирать:
sudo make-kpkg --arch i386 --initrd kernel_image kernel_headers
Начинается сборка и затем вываливается с такой ошибкой:
(Нажмите, чтобы показать/скрыть)
Если я правильно понимаю, он хочет 32-разрядный gcc с префиксом  i486-linux-gnu- ?
Если да, то как это можно сделать?

ps
Цитата: ChaosWarrior
Я не сторонник красивых решений, мне нравятся рабочие. Поставить минимальную систему и собрать, что вам там надо, всяко быстрее, чем вы уже компилер мучаете.
В принципе, можно поставить Винды и не мучиться (там и поддержка моей WiFi карточки есть). Только мне не нужно сиюминутное решение. И не думаю, что все очень сложно, к тому же глядишь, чемунибудь и научусь в процессе...
 :)
make-kpkg --initrd --append-to-version=-32bit kernel_image kernel_headers мне помогло это

Оффлайн MrFree

  • Активист
  • *
  • Сообщений: 279
  • вечно начинающий линуксоид
    • Просмотр профиля
А я использовал Вот это: http://ubuntuforums.org/showthread.php?t=24575
для разворачивания chroot окружения, в кототром и собираю без всяких бубнов 32хбитное ядро. Так еще и для другого дистра.
Работает шустрей виртуальной машины.
Ubuntu 17.04 /x86_64/i5-7500/16GB/ssd120(boot/root/home)/1000HDD+2000HDD/GTX1060-3GB
Ubuntu 16.04 LTS /x86_64/G2010/4GB/ssd60(boot/root)/1000+2*2000HDD/GTx650-2GB

 

Страница сгенерирована за 0.063 секунд. Запросов: 25.