archlinux – сборка ядра

В archlinux сборка ядра довольно простое дело, причем в итоге создается установочный пакет, который затем ставится, как обычный, со всеми возможностями дальнейшего управления, такими как обновление, удаление…

Качаем исходники, я воспользовался mirror.yandex.ru.

Распаковываем их в домашней директории. Использовать системные папки не рекомендуют…

cd ~/Temp

tar -xjf linux-2.6.27.8.tar.bz2

cd linux-2.6.27.8

zcat /proc/config.gz >| .config

make menuconfig

Теперь конфигурируем новое ядро. Не забываем указать контролеры жесткого диска, если используется диск sata, то нужно обязательно включить scsi, также включаем все файловые системы, что используете в своей системе. Причем включаем не в виде модулей, а жестко, непсоредственно в ядро. В разделе «файловые системы» для vfat задаем codepage в 866, а iocharset в utf8, чтобы избежать проблем с кодировкой имен файлов при монтировании с использованием udev и thunar…

После конфигурации создаем в текущей папке два файла (по ссылкам их содержимое):

PKGBUILD

kernel26.install

И теперь запускаем компиляцию командой makepkg -f

По окончании в текущей папке будет лежать готовый к установке пакет, который ставим с использованием pacman:

sudo pacman -Uf kernel26-my-2.6.27-8-i686.pkg.tar.gz

Осталось только сконфигурировать grub, для этого редактируем файл /boot/grub/menu.lst:

# general configuration:

timeout   5

default   0

color light-blue/black light-cyan/blue

# (0) Arch Linux

title  My Arch Linux

root   (hd0,0)

kernel /vmlinuz26-my root=/dev/sda3 ro quiet vga=791

#initrd /kernel26-fallback.img

# (1) Arch Linux

title  Arch Linux

root   (hd0,0)

kernel /vmlinuz26 root=/dev/disk/by-uuid/e8cb29e8-ff8b-4f08-ae93-e7e63e27d9be ro quiet vga=791

initrd /kernel26.img

# (2) Arch Linux

title  Arch Linux Fallback

root   (hd0,0)

kernel /vmlinuz26 root=/dev/disk/by-uuid/e8cb29e8-ff8b-4f08-ae93-e7e63e27d9be ro

initrd /kernel26-fallback.img

Как видно, в самое начало (в нулевую позицию) добавлен блок My Arch Linux, который отвечает за загрузку нашего нового ядра. Оно же прописано для использования по умолчанию. Добавлены опции quiet для уменьшения вывода на экран во время загрузки, и включения фреймбуфера в консоли (разрешение 1024х768). Обращаю внимание на то, что в нашем новом ядре не используется образ initrd, поэтому раздел root= указывается непосредственно, без UUID, который к этому моменту еще не сгенерирован… Иначе получим сообщение об ошибке при загрузке на то, что рутовый раздел не найден…

Перезагружаем машину и наслаждаемся жизнью уже с новым ядром!

Похожие записи:

  1. Обновление Linux ядра 2.6.29.1
  2. Дополнение по сборке ядра в archlinux
  3. Firefox-pgo-3.0.9-1 бинарная сборка Archlinux
  4. способы включения KMS
  5. xorg-server 1.6.0 в archlinux

Метки: archlinux, kernel, Linux

Отзывов (20) на «archlinux – сборка ядра»

  • хм… суперр =)
    в PKGBUILD не хвататет pkgname=kernel26
    У меня глупый впрос, вы сами писали PKGBUILD и kernel26.install (переделка из abs)?
    Если сами, то у меня еще много материала для изучения…
    А если брали то откуда ^_^
    И почему бы нам это не поместить в wiki по archlinux на русском?

  • Я брал откуда то. Откуда – уже не помню. С тех пор только меняю в PKGBUILD номер версии и проблем нет.
    Материал для изучения? А в каком виде он у вас? Не поделитесь?
    Разместить на wiki? У меня пока даже мысли не возникало, считаю себя пока малообразованным в этой области. Но в принципе, попробовать можно.

  • В каком он виде?
    В виде просторов интернета ^_^ имел в виду, что пока настолько глуп…
    Я просто когда компилил ядрышко стандартным способом в арчи, связался с кучей проблем,
    задался впоросом «неужели нельзя проще» =)
    На английской вики мне не под силам было это, уровень языка не тот =(
    На русском ничего не было вообще, в форуме народ дружно решил, что эти времена прошли…

  • Понятно. Надо будет все таки попробовать в вики занести свои познания. Спасибо за наводку!

  • чего то не пойму в чем проблема…
    sudo pacman -Uf kernel26-gn-2.6.29-3-i686.pkg.tar.gz
    чтение информации о пакете…
    проверка зависимостей…
    (1/1) обновление kernel26-gn [#####################] 100%
    >>> Updating module dependencies. Please wait …
    ошибка: не удалось корректно выполнить скрипт

  • Хмм… Странно… В PKGBUILD менял версию? Еще что нибудь менял в файлах? Проводил сборку согласно описанию?

  • да… =(
    а можно связаться с вами по асе?
    боюсь мы захламим тут все =) 311XXXXXX стукните пожалуйста.

  • Попробовал сегодня собрать ядро по этому методу. Пакет создался, но при установке получил следующее:

    чтение информации о пакете…
    проверка зависимостей…
    (1/1) проверка возможных конфликтов файлов [##############################################################################################################] 100%
    ошибка: не удалось продолжить операцию (конфликтующие файлы)
    kernel26-my: /lib/firmware/advansys/3550.bin уже существует в файловой системе
    kernel26-my: /lib/firmware/advansys/38C0800.bin уже существует в файловой системе
    kernel26-my: /lib/firmware/advansys/38C1600.bin уже существует в файловой системе
    kernel26-my: /lib/firmware/advansys/mcode.bin уже существует в файловой системе
    kernel26-my: /lib/firmware/edgeport/boot.fw уже существует в файловой системе
    kernel26-my: /lib/firmware/edgeport/boot2.fw уже существует в файловой системе
    kernel26-my: /lib/firmware/edgeport/down.fw уже существует в файловой системе
    kernel26-my: /lib/firmware/edgeport/down2.fw уже существует в файловой системе
    kernel26-my: /lib/firmware/edgeport/down3.bin уже существует в файловой системе
    kernel26-my: /lib/firmware/emi26/bitstream.fw уже существует в файловой системе
    kernel26-my: /lib/firmware/emi26/firmware.fw уже существует в файловой системе
    kernel26-my: /lib/firmware/emi26/loader.fw уже существует в файловой системе
    kernel26-my: /lib/firmware/emi62/bitstream.fw уже существует в файловой системе
    kernel26-my: /lib/firmware/emi62/loader.fw уже существует в файловой системе
    kernel26-my: /lib/firmware/emi62/midi.fw уже существует в файловой системе
    kernel26-my: /lib/firmware/emi62/spdif.fw уже существует в файловой системе
    kernel26-my: /lib/firmware/keyspan_pda/keyspan_pda.fw уже существует в файловой системе
    kernel26-my: /lib/firmware/keyspan_pda/xircom_pgs.fw уже существует в файловой системе
    kernel26-my: /lib/firmware/mts_cdma.fw уже существует в файловой системе
    kernel26-my: /lib/firmware/mts_edge.fw уже существует в файловой системе
    kernel26-my: /lib/firmware/mts_gsm.fw уже существует в файловой системе
    kernel26-my: /lib/firmware/qlogic/1040.bin уже существует в файловой системе
    kernel26-my: /lib/firmware/qlogic/12160.bin уже существует в файловой системе
    kernel26-my: /lib/firmware/qlogic/1280.bin уже существует в файловой системе
    kernel26-my: /lib/firmware/ti_3410.fw уже существует в файловой системе
    kernel26-my: /lib/firmware/ti_5052.fw уже существует в файловой системе
    kernel26-my: /lib/firmware/whiteheat.fw уже существует в файловой системе
    kernel26-my: /lib/firmware/whiteheat_loader.fw уже существует в файловой системе

    произошли ошибки, пакеты не были обновлены.

    Собственно, что я делаю не так?)

  • Никакой проблемы тут нет, просто ты собрал ядро с поддержкой такого железа, что требуют свое firmware, а они устанавливаются в /lib для всех ядер. Просто при установке твоего ядра нужно использовать дополнительно параметр -f:
    yaourt -Uf kernel26-my-…

  • «>>> Updating module dependencies. Please wait …
    ошибка: не удалось корректно выполнить скрипт»

    У меня такая же проблема. Ядро скачал 2.6.30.4, в PKGBUILD указал версию 2.6.30 и релиз 4. При установке тоже выдает о невозможности коррекно выполнить скрипт…

  • В файле PKGBUILD меняете обе переменные? Вот например в моем файле самое начало, для последней версии:

    pkgname=kernel26-my
    basekernel=2.6.30.4
    pkgver=2.6.30.4
    pkgrel=1

  • Вот полный PKGBUILD

    pkgname=kernel26-my
    basekernel=2.6.30.4
    pkgver=2.6.30.4
    pkgrel=1
    pkgdesc=»The Linux Kernel and modules»
    license=(‘GPL’)
    arch=(‘i686′)
    url=»http://www.kernel.org»
    depends=(‘module-init-tools’)
    provides=(kernel26)
    install=kernel26.install

    build() {
    # build!
    cd ..
    _kernver=»${basekernel}${CONFIG_LOCALVERSION}»
    make || return 1
    mkdir -p $startdir/pkg/{lib/modules,boot}
    make INSTALL_MOD_PATH=$startdir/pkg modules_install || return 1
    cp System.map $startdir/pkg/boot/System.map26-my
    cp arch/x86/boot/bzImage $startdir/pkg/boot/vmlinuz26-my
    install -D -m644 .config $startdir/pkg/boot/kconfig26-my
    # set correct depmod command for install
    sed -i -e «s/KERNEL_VERSION=.*/KERNEL_VERSION=${_kernver}/g» $startdir/kernel26.install
    }

    в kernel26.install тоже поменял версии. Тем не менее ошибку выдает все ту же.

  • так… а файл kernel26.install находиться в папке с PKGBUILD?

  • да, находится в той же папке.
    Вот он:
    post_install () {
    echo «>>> Updating module dependencies. Please wait …»
    KERNEL_VERSION=2.6.30.4
    /sbin/depmod -A -v $KERNEL_VERSION > /dev/null 2>&1
    }

    post_upgrade() {
    echo «>>> Updating module dependencies. Please wait …»
    KERNEL_VERSION=2.6.30.4
    /sbin/depmod -A -v $KERNEL_VERSION > /dev/null 2>&1
    }

    op=$1
    shift

    $op $*

    В этой же папке находится распакованное ядро linux-2.6.30.4

  • стукнись в jabber: juev@jabber.ru

  • Доброго времени суток…

    (1/1) обновление kernel26-an [##################################################################################################] 100%
    >>> Updating module dependencies. Please wait …
    ошибка: не удалось корректно выполнить команду

  • Как я понимаю, вы используете суффикс an?? А что именно вы прописывали в начале файла? Как указывали версию ядра?

  • [...] ядра в archlinux Опубликовал Juev | Published: 16 Май 2009 В заметке archlinux – сборка ядра благодаря Gnomik (Антон) была выявлена небольшая [...]

  • Имхо, не хватает mkinitcpio конфигов…

  • Зачем? Создается ядро, в котором я предпочитаю использовать модулей по минимуму…

Вы можете оставить свой комментарий...

Имя (required)
Почта (обязательно)
Сайт