« предыдущая тема следующая тема »
Страниц: [1]
Печать
Автор Тема: Новое ядро в SLAX 7    (Прочитано 2434 раз)
Maxim
Пользователь
**

Карма: +0/-0
Offline Offline

Сообщений: 4


Просмотр профиля
« : 16 Январь 2017, 22:19:39 »


  Всем доброго времени суток!

  Хочу обсудить вопрос компиляции (или любой прочей установки) в SLAX 7 нового ядра - желательно версии 4 и позже, либо 3.18 и позже. Есть ли кто-то, кто успешно реализовал эту задачу?

  В блоге Томаса есть обсуждение этого вопроса и даже указывается алгоритм:

There were 5 stages:
1. to compile kernel 4.1.27 with "make O=/usr/src/linux-4.1.27 oldconfig" (using .config from kernel-devel 3.8.2) and "make O=/usr/src/linux-4.1.27"
2. to copy new kernel vmlinuz in /boot (or to rename bzimage in vmlinuz and to copy vmlinuz in /boot)
3. to start initramfs_create (I had an error there - "gzip: stdin: unexpected end of file", but initramfs was created in /tmp)
4. to boot other linux system, to copy new vmlinuz in /slax/boot and to start bootinst.sh
5. to start SLAX. SLAX bootes with errors and stops. There are some errors (not all):
Setting dynamic RAM compression using ZRAM
sh: can't open '/sys/block/zram0/disksize': No such file or directory
mkswap: can't open '/dev/zram0': No such file or directory
swapon: can't open '/dev/zram0': No such file or directory
Looking for slax data in /slax

Then SLAX tries to add 01-core.sb and stops. Something wrong.

~~~~~~~~~

Only for 4.1.X kernel:

I should have rememberd to remind you to modify the file initramfs_create.You know the kernel tree in 3.8.2 is different form 4.1.X. You can modify it as following:
line 71: copy_including_deps /$LMK/kernel/mm # needed by zram
line 72: copy_including_deps /$LMK/kernel/drivers/block/zram

~~~~~~~~~

Result is the same.

  Другими словами, по этому алгоритму удаётся скомпилировать новое ядро, но система с ним не стартует.
  Кто знает, как исправить эту ошибку?
  Спасибо всем, кто поможет оживить проект SLAX и обновить его основу - ядро.
Записан
novah
Глобальный модератор
*****

Карма: +2/-0
Offline Offline

Сообщений: 331


Просмотр профиля
« Ответ #1 : 20 Январь 2017, 20:36:37 »

Я на 6.1.2 страдал этим, нужно попробовать взять его конфиг, попробовать откомпилировать ничего не меняя, ну там написано что какая-то zram, надо включить, make menuconfig и включаем выключаем до опупения  Улыбающийся
Можно попробовать взять конфиг из портеуса, а ваще скорее всего он чтото запускает модулем а надо изначально запускать в ядре, или пути не обновил, вот тут уже можно не париться, не взлетит gzip: stdin: unexpected end of file
« Последнее редактирование: 20 Январь 2017, 20:43:56 от novah » Записан
Maxim
Пользователь
**

Карма: +0/-0
Offline Offline

Сообщений: 4


Просмотр профиля
« Ответ #2 : 23 Январь 2017, 00:54:56 »

Компилировал на конфиге прежнего ядра, компиляция прошла отлично. Отдельно zram в настройках не включал. По логике, он там должен быть уже включен, если компилировать с прежнего конфига (может, именно в этом моя ошибка?).

На форуме SLAX пишут, что скомпилировать новое ядро и запустить с ней систему реально, и есть люди, которые это сделали и работают на новом ядре. Но инструкцию никто так и не написал. Так что - ищу энтузиастов, которые помогут мне это сделать! И выложим тут на форуме, а может и на сайте - для всех, кто любит SLAX.
Записан
novah
Глобальный модератор
*****

Карма: +2/-0
Offline Offline

Сообщений: 331


Просмотр профиля
« Ответ #3 : 04 Февраль 2017, 13:11:41 »

Ну дак пиши, я буду повторять твои действия, а там посмотрим какие ошибки, на каком оборудовании работает ядро, на каком нет, как лучше автоматизировать сборку, потом выложим, на самом деле не благодарное дело, но давай пробовать.
ЗЫЖ Считаю надо брать ядро из Slackware 14.2, возможно придется обновлять компиляторы, библиотеки и все такое, куча работы млин.
Записан
Maxim
Пользователь
**

Карма: +0/-0
Offline Offline

Сообщений: 4


Просмотр профиля
« Ответ #4 : 04 Февраль 2017, 23:45:46 »

Вот подробный алгоритм действий:

Нужную версию ядра системы - Linux Kernel - скачать с официального сайта https://www.kernel.org/ (пусть это будет версия 4.1.27), распаковать скачанный архив, использовать настройки нынешнего ядра системы командой "make O=/usr/src/linux-4.1.27 oldconfig" (предварительно установив SLAX-пакет "Kernel headers and makefiles" - kernel-devel.sb, скопировать файл ".config" из /usr/src/linux-3.8.2 в созданную директорию /usr/src/linux-4.1.27, при запуске указанной команды на все вопросы отвечать выбором по умолчанию), скомпилировать командой "make O=/usr/src/linux-4.1.27" и установить "make modules_install && make firmware_install" (если проделаны все этапы, кроме последнего - запуска команды установки "make modules_install && make firmware_install", соответствующий этап можно отчасти реализовать и в ручном режиме, в этом случае в папке /usr/src/linux-4.1.27/arch/x86/boot следует найти файл bzImage, скопировать его в /boot и переименовать в vmlinux). После этого необходимо использовать Linux Live Kit for CD & USB (официальный сайт проекта - http://www.linux-live.org/), распаковать скачанный архив, не изменяя название папки и, если устаналивается Linux Kernel ver. 4, поправить скрипт initramfs_create в папке /iniramfs распакованного архива, заменив строки 71 и 72 на следующие (в том случае, если устанавливается Linux Kernel ver. 3, править скрипт не нужно):
 
copy_including_deps /$LMK/kernel/mm # needed by zram
copy_including_deps /$LMK/kernel/drivers/block/zram

Также следует поправить скрипт .config, находящийся в корне распакованного архива, внеся необходимые изменения в строку "LIVEKITNAME=" и, возможно, в строку "KERNEL=" (в зависимости от того, какое ядро устанавливается).
 
Теперь нужно запустить скрипт initramfs_create и (внимание! у меня на этом этапе ошибка "gzip: stdin: unexpected end of file", хотя initramfs и создаётся), после завершения его работы, взять в папке /tmp системы появившийся файл с расширением .img, переименовать его в initrfs.img, затем записать этот файл и vmlinux, находящийся в /boot, в /mnt/live/memory/data/slax/boot, и выйти из системы (выключить/перезагрузить компьютер).

В том случае, если при запуске скрипта initramfs_create появляются ошибки "liblzma.so.5: no version information available", следует найти в системе все файлы и символьные ссылки liblzma.so.5, а затем удалить более давние версии (обычно более новые версии находятся в папке /usr/lib, более давние - в /lib). Теперь скрипт initramfs_create следует запустить заново.

После выключения/перезагрузки компьютера нужно загрузиться в другой системе Linux, например LParted, и запустить из-под root'а скрипт bootinst.sh в папке /slax/boot на носителе с системой SLAX. После этого можно загружаться в SLAX. Однако при загрузке появляются такие ошибки и процесс останавливается:

Setting dynamic RAM compression using ZRAM
sh: can't open '/sys/block/zram0/disksize': No such file or directory
mkswap: can't open '/dev/zram0': No such file or directory
swapon: can't open '/dev/zram0': No such file or directory
Looking for slax data in /slax


Возникает впечатление, что ядро скомпилировано и установлено, а ZRAM настроен некорректно. Как загрузить систему, пока не разобрался. Нужна помощь!
Записан
novah
Глобальный модератор
*****

Карма: +2/-0
Offline Offline

Сообщений: 331


Просмотр профиля
« Ответ #5 : 27 Февраль 2017, 22:28:07 »

Чтото мне кажется, у тебя модули ядра собираются в директории отличной от нужной, и в initrd чехарда, надо чтоб модули ядра в 001 соответствовали ядру которое ты пихаешь
Записан
Maxim
Пользователь
**

Карма: +0/-0
Offline Offline

Сообщений: 4


Просмотр профиля
« Ответ #6 : 01 Март 2017, 12:35:13 »

Чтото мне кажется, у тебя модули ядра собираются в директории отличной от нужной, и в initrd чехарда, надо чтоб модули ядра в 001 соответствовали ядру которое ты пихаешь
Я так понимаю, у тебя компиляцию и установку нового ядра получилось сделать? Тогда можешь сказать, как именно нужно поправить тот алгоритм действий, который я привёл? Цель - сделать алгоритм простым и понятным практически для любого человека, задумавшего обновить в Слаксе ядро. Чтобы человеку не приходилось ломать себе голову, что и как нужно сделать, не закапываться во весь рост в глубокие мануалы, а чётко следовать прописанным шагам. Я не только у себя хочу ядро обновить, понимаешь, но и сделать алгоритм, по которому любой другой человек это сделает.
Записан
 
Страниц: [1]
Печать
« предыдущая тема следующая тема »
Перейти в: