4. 4 Отключение автоматической настройки загрузчика при установке ядра




Название4. 4 Отключение автоматической настройки загрузчика при установке ядра
страница1/7
Дата21.09.2012
Размер0.58 Mb.
ТипДокументы
  1   2   3   4   5   6   7
Ставим ядро 2.6, или Ядерная физика для домохозяйки. Версия 2.0

В этой статье рассмотрен механизм сборки ядра в комплексе - закачка, пример настройки, установка, правка конфигурационных файлов. Статья ориентирована на начинающих пользователей, разобраны опции ядра и дан пример настроки ядра для рабочей станции. Для сборки нужно чтобы у Вас в системе был установлен компилятор gcc, библиотеки ncurses и ncurses - devel. У Вас точно не будет проблем если Вы ставили систему в режиме "Разработка"



Содержание:

1.Качаем
2.Ставим заплатки
3.Собираем

3.1 Подготовка
3.2 Чистка
3.3 Стратегия настройки ядра.
3.4 Пример настройки ядра.
3.5 Сборка и установка

4.Настройка загрузчика

4.1 Настройка LILO
4.2 Настройка GRUB
4.3 Настройка ASPLoader
4.4 Отключение автоматической настройки загрузчика при установке ядра.

5.Установка bootsplash в initrd

5.1 ASPLinux 9
5.2 MandrakeLinux 10

6.Доводка Вашего дистрибутива
Приложения

Установка драйверов Nvidia
Проблемы с iptables



1. Качаем

Для начала нужно выкачать само ядро [точнее исходники] с сайта http://www.kernel.org

Качайте архив tar.bz2 - он меньше по размеру. Имя файла должно быть примерно таким - linux-2.6.7.tar.bz2 , размер файла около 33 Мбайт. Качайте всегда последнее стабильное ядро. Если на ядро Вам нужно наложить какие-либо заплатки, то возможно, Вам придется закачать предпоследнюю версию, т.к. заплатки для новой версии ядра появляются иногда не сразу, а через пару недель.

Если у Вас уже есть ядро 2.6.0, а Вам нужно поставить, например, 2.6.7, то необязательно качать снова 33 Мбайта, можно выкачать заплатки [их также называют еще "патчи", но давайте говорить на русском] и обновить исходники Вашего ядра до последней версии. В таком случае Вам нужно выкачать все заплатки по возрастанию номеров версии от вашей версии до последней. В данном примере это заплатки 2.6.1, 2.6.2, 2.6.3, 2.6.4, 2.6.5, 2.6.6 и 2.6.7. Файлы заплаток называются так - patch-2.6.1.bz2 . На главной странице всех их не найти, поищите их на ftp сервере ftp://ftp.kernel.org

Кроме самого ядра нам, возможно, понадобится выкачать дополнительные заплатки, расширяющие возможности ядра. К примеру, в ядре 2.6 нет поддержки lirc (пульты дистанционного управления). Чтобы эта поддержка была, на ядро нужно наложить соответствующую заплатку.

Для примера возьмем такие заплатки:

  1. Bootsplash - графическая загрузка Линукса

  2. Win4Lin - для одноименной программы, позволяющей запускать window$ 95, 98, Me в окошке почти без потери производительности.

  3. Lirc - поддержка пультов дистанционного управления

  4. Supermount - возможность работы со сменными носителями без их подключения/отключения

Иногда на официальном сайте заплаток нет или они сильно устарели, но Вы можете найти "неофициальные" заплатки с помощью поисковика http://www.google.ru
Будьте осторожны с применением заплаток, т.к. это может не в лучшую сторону изменить надежность и стабильность ядра.

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

  1. linux-2.6.6.tar.bz2

  2. patch-2.6.7.bz2

  3. bootsplash-3.1.4-2.6.7.diff

  4. Kernel-Win4Lin3-2.6.7.patch и mki-adapter26_1_3_6.patch

  5. lirc-2.6.5-20040404.patch

  6. supermount-2.0.4-2.6.6.patch.gz

Хорошо. Теперь подготовим папку, где будем собирать ядро. В Линуксе для сборки из исходников есть специальный каталог /usr/src. Однако по умолчанию писать туда рядовому пользователю запрещено, поэтому сначала дадим себе права. Самый простой способ - запустить консоль, получить права root и установить на эту папку владельцем обычного пользователя, под которым работаем в системе.

[mike@localhost mike]$ su -
Password:
[root@localhost root]# chown -R mike /usr/src
[root@localhost root]#


Сборка (как и работа в системе) под пользователем root является очень плохой привычкой и может в будущем сослужить Вам плохую службу. Как известно, лучший способ борьбы с вредными привычками - это не заводить их. Поэтому старайтесь сразу все делать правильно.

Копируем исходники ядра (linux-2.6.6.tar.bz2) в папку /usr/src

Теперь их надо распаковать. Если Вы пользуетесь файловым менеджером mc, на файле нажмите F2, а потом "x". Если Вы пользуетесь файловым менеджером gentoo (http://linux.alhimia.ru/projects/misc/gentoo/), то щелкните правой кнопкой и выберите Действия - РаспаковатьСюда. Для чистой консоли можно использовать такую команду:

[mike@localhost src]$ tar -xjf linux-2.6.6.tar.bz2

Получился каталог linux-2.6.6. Переименуйте его, например, в linux-2.6.7-my

Копируем все заплатки туда и переходим к следующему пункту.



2. Ставим заплатки

Сначала распакуем упакованные заплатки. В mc для этого файла нажмите F2 а потом "y" (для .gz архива) или "b"(для .bz2 архива). В gentoo выделите все файлы нажмите правую кнопку Действия-Распаковать. Для чистой консоли можете использовать такие команды:

[mike@localhost linux-2.6.7-my]$ gunzip *.gz
[mike@localhost linux-2.6.7-my]$ bzip2 -d *.bz2


Теперь, собственно, об установке заплаток. Сначала накладываем закладку для обновления версии ядра ( patch-2.6.7 ), потом остальные. В файловом менеджере Gentoo для установки можно просто щелкнуть правой кнопкой и выбрать Действия-Наложить. В консоли нужно дать следующую команду

patch -p1 -i <имя файла заплатки>

В нашем примере это будет выглядеть так

[mike@localhost linux-2.6.7-my]$patch -p1 -i patch-2.6.7
patching file CREDITS
patching file Documentation/DocBook/kernel-hacking.tmpl
patching file Documentation/DocBook/libata.tmpl
......
patching file sound/usb/usbaudio.h
patching file sound/usb/usbmixer.c
patching file sound/usb/usbquirks.h

[mike@localhost linux-2.6.7-my]$ patch -p1 -ibootsplash-3.1.4-2.6.7.diff
patching file drivers/char/keyboard.c
patching file drivers/char/n_tty.c
patching file drivers/char/vt.c
patching file drivers/video/Kconfig
patching file drivers/video/Makefile
patching file drivers/video/bootsplash/Kconfig
patching file drivers/video/bootsplash/Makefile
patching file drivers/video/bootsplash/bootsplash.c
patching file drivers/video/bootsplash/bootsplash.h
patching file drivers/video/bootsplash/decode-jpg.c
patching file drivers/video/bootsplash/decode-jpg.h
patching file drivers/video/bootsplash/render.c
patching file drivers/video/console/fbcon.c
patching file drivers/video/console/fbcon.h
patching file drivers/video/vesafb.c
patching file include/linux/console_struct.h
patching file include/linux/fb.h
patching file kernel/panic.c

[mike@localhost linux-2.6.7-my]$ patch -p1 -i Kernel-Win4Lin3-2.6.7.patch
patching file kernel/exit.c
patching file kernel/fork.c
patching file kernel/sched.c
patching file mm/vmscan.c
patching file arch/i386/Kconfig
patching file arch/i386/kernel/apm.c
patching file arch/i386/kernel/cpu/common.c
patching file arch/i386/kernel/entry.S
patching file arch/i386/kernel/head.S
patching file arch/i386/kernel/process.c
patching file arch/i386/kernel/signal.c
patching file arch/i386/kernel/vm86.c
patching file arch/i386/Makefile
patching file arch/i386/mki/Makefile
patching file arch/i386/mki/mki.c
patching file arch/i386/mm/fault.c
patching file include/asm-i386/desc.h
patching file include/asm-i386/mki.h
patching file include/asm-i386/mkiversion.h
patching file include/asm-i386/segment.h
patching file include/asm-i386/thread_info.h
patching file include/linux/init_task.h
patching file include/linux/sched.h

[mike@localhost linux-2.6.7-my]$ patch -p1 -i mki-adapter26_1_3_6.patch
patching file arch/i386/Makefile
patching file arch/i386/mki-adapter26/LICENSE
patching file arch/i386/mki-adapter26/Makefile
patching file arch/i386/mki-adapter26/mki26.c
patching file arch/i386/mki-adapter26/mki-adapter26.h
patching file arch/i386/mki-adapter26/mkifunc.h
patching file arch/i386/mki-adapter26/mki-main.c
patching file arch/i386/mki-adapter26/mkivnet.c
patching file arch/i386/mki-adapter26/README
patching file arch/i386/mki-adapter26/timer.c
patching file arch/i386/mki-adapter26/vneteth.h
patching file arch/i386/mki-adapter26/vnetint-pub.h

[mike@localhost linux-2.6.7-my]$ patch -p1 -i lirc-2.6.5-20040404.patch
patching file Documentation/lirc/lirc_it87
patching file drivers/char/Kconfig
Hunk #1 succeeded at 442 (offset -2 lines).
patching file drivers/char/lirc/Kconfig
patching file drivers/char/lirc/lirc_atiusb.c
patching file drivers/char/lirc/lirc_bt829.c
patching file drivers/char/lirc/lirc_dev.c
patching file drivers/char/lirc/lirc_dev.h
patching file drivers/char/lirc/lirc_gpio.c
patching file drivers/char/lirc/lirc_i2c.c
patching file drivers/char/lirc/lirc_it87.c
patching file drivers/char/lirc/lirc_it87.h
patching file drivers/char/lirc/lirc_mceusb.c
patching file drivers/char/lirc/lirc_parallel.c
patching file drivers/char/lirc/lirc_parallel.h
patching file drivers/char/lirc/lirc_serial.c
patching file drivers/char/lirc/lirc_sir.c
patching file drivers/char/lirc/Makefile
patching file drivers/char/Makefile
patching file include/linux/lirc.h

[mike@localhost linux-2.6.7-my]$ patch -p1 -i supermount-2.0.4-2.6.6.patch
patching file Documentation/filesystems/00-INDEX
patching file Documentation/filesystems/supermount.txt
patching file drivers/cdrom/cdrom.c
Hunk #3 succeeded at 874 (offset -12 lines).
Hunk #4 succeeded at 892 (offset -12 lines).
Hunk #5 succeeded at 975 (offset -12 lines).
Hunk #6 succeeded at 989 (offset -12 lines).
Hunk #7 succeeded at 1066 (offset -12 lines).
Hunk #8 succeeded at 1338 (offset -12 lines).
Hunk #9 succeeded at 2106 (offset -12 lines).
Hunk #10 succeeded at 2907 (offset -12 lines).
patching file drivers/cdrom/cdu31a.c
Hunk #1 succeeded at 3173 (offset -1 lines).
Hunk #2 succeeded at 3206 (offset -1 lines).
Hunk #3 succeeded at 3220 (offset -1 lines).
patching file drivers/cdrom/cm206.c
patching file drivers/cdrom/mcd.c
patching file drivers/cdrom/mcdx.c
patching file drivers/cdrom/sbpcd.c
patching file drivers/ide/ide-cd.c
Hunk #1 succeeded at 3410 (offset -2 lines).
Hunk #2 succeeded at 3462 (offset -2 lines).
patching file drivers/ide/ide-floppy.c
Hunk #4 succeeded at 1959 (offset 1 line).
Hunk #5 succeeded at 2027 (offset 1 line).
patching file drivers/scsi/sd.c
Hunk #2 succeeded at 469 (offset 8 lines).
Hunk #3 succeeded at 500 (offset 8 lines).
Hunk #4 succeeded at 660 (offset 9 lines).
Hunk #5 succeeded at 692 (offset 9 lines).
Hunk #6 succeeded at 744 (offset 9 lines).
patching file drivers/scsi/sr.c
Hunk #1 succeeded at 477 (offset 9 lines).
Hunk #2 succeeded at 527 (offset 9 lines).
Hunk #3 succeeded at 543 (offset 9 lines).
patching file fs/block_dev.c
Hunk #1 succeeded at 512 (offset -2 lines).
patching file fs/ext2/super.c
patching file fs/isofs/inode.c
patching file fs/Kconfig
Hunk #1 succeeded at 946 (offset 34 lines).
patching file fs/Makefile
Hunk #1 succeeded at 91 (offset -1 lines).
patching file fs/namespace.c
Hunk #1 succeeded at 852 (offset 64 lines).
patching file fs/super.c
Hunk #2 succeeded at 530 (offset 16 lines).
Hunk #3 succeeded at 659 (offset 16 lines).
Hunk #4 succeeded at 774 (offset 16 lines).
Hunk #5 succeeded at 829 (offset 16 lines).
patching file fs/supermount/changelog
patching file fs/supermount/dentry.c
patching file fs/supermount/file.c
patching file fs/supermount/filemap.c
patching file fs/supermount/init.c
patching file fs/supermount/Kconfig
patching file fs/supermount/Makefile
patching file fs/supermount/mediactl.c
patching file fs/supermount/namei.c
patching file fs/supermount/proc.c
patching file fs/supermount/subfs.c
patching file fs/supermount/super.c
patching file fs/supermount/supermount.h
patching file fs/udf/super.c
patching file include/linux/cdrom.h
Hunk #1 succeeded at 987 (offset 12 lines).
patching file include/linux/fs.h
Hunk #1 succeeded at 91 (offset -2 lines).
Hunk #2 succeeded at 115 (offset -2 lines).
Hunk #3 succeeded at 581 (offset 3 lines).
Hunk #4 succeeded at 772 (offset 3 lines).
Hunk #5 succeeded at 845 (offset 3 lines).
patching file include/linux/genhd.h
patching file include/linux/supermount_media.h


Обратите внимание на вывод команды patch. Если заплатка идеально подходит к ядру, то в выводе должны быть только строчки patching file ... . Если Вы видите строчку Hunk #1 succeeded at... это означает что заплатка наложена успешно, но место наложения сдвинуто на некоторое кол-во строк. Если же Вы увидите слово Failed - то значит заплатка не подходит, нужно искать более подходящую. В этом случае лучше удалить наш каталог /usr/src/linux-2.6.7-my и начать все сначала уже без этой заплатки.

Итак, исходники ядра готовы и ждут когда их соберут (скомпилируют).



3 Собираем

3.1 Подготовка

Для начала давайте посмотрим файл Makefile. Нас интересуют первые 4 строчки

VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 7
EXTRAVERSION =
...

Измените четвертую строку на

EXTRAVERSION=-my

Это приведет к тому, что сделанное нами ядро будет называться linux-2.6.7-my. Если нам нужно будет несколько вариантов ядра 2.6.7, то можно снова изменить строчку EXTRAVERSION=my2, собрать ядро еще раз и получить ядро linux-2.6.7-my2. После этого при загрузке можно будет выбирать нужный вариант ядра.

3.2 Чистка

Запустите команду make mrproper

[mike@localhost linux-2.6.7-my]$ make mrproper

Эта команда нужна для удаления временных файлов, созданных при предыдущей сборке. Она удаляет также все настройки, которые Вы сделали во время прошлой сборки. (Настройки лежат в файле .config. Если есть желание сохранить выбор модулей, перенесите куда-нибудь этот файл, выполните чистку, а потом верните обратно)

3.3 Стратегия настройки ядра

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

Ядро может быть монолитным, а может быть модульным. Что это означает? Монолитное ядро - это просто один файл, который грузится при старте системы, и сидит в оперативной памяти до выключения компьютера. Те возможности, которые заложены в этом файле, не подлежат изменению. Если включить все возможности в ядро, получаем очень большое и очень медленное ядро. Если сделать маленькое и быстрое ядро, то придется пожертвовать возможностями. Кроме того с таким ядром не смогут работать такие коммерческие программы как Win4Lin . На таком ядре не поставить драйвер видеокарты от фирмы Nvidia, что ставит крест на использовании этих ядер на домашних игровых компьютерах с этими видеокартами. В чем же преимущество монолитного ядра? Оно хорошо своей более высокой защищенностью и более простым использованием. При старте ядро обладает всеми возможностями, которые в него заложены. Кроме этого, монолитное ядро не подвержено всевозможным троянским программам, которые осуществляют свою вредную деятельность путем замены стандартных модулей и внедрением своих. Поэтому монолитные ядра хороши для серверов. Ядро в этом случае располагается в каталоге /boot и имеет имя vmlinuz-xxxx.

Модульное ядро - это тот же файл, который грузится при загрузке с диске как и в случае с монолитным ядром, но плюс к есть нему набор файлов, которые называются модулями. Эти файлы по сути - возможности ядра, которые Вы можете подключить к ядру и отключить от него без перезагрузки компьютера. Ядро которое у Вас поставилось вместе с дистрибутивом - модульное. В модульном ядре все возможности, которые могут быть выведены в отдельный файл, т.е. модуль, - делаются модульными. Самый большой плюс модульного ядра - то что в него можно включить абсолютно все возможности, на что способно ядро, все устройства, все файловые системы и т.п. Ядро в результате получается небольшим (в оперативной памяти) , быстрым и гибким. Минусы такого подхода - собственно в необходимости работы с модулями, Вы не получите возможности модуля, пока его не загрузите. К счастью, большинство модулей грузиться автоматически, а остальные грузятся при старте системы загрузочными скриптами, избавляя Вас от необходимости грузить вручную десятки модулей. В этом случае ядро представлено тем же файлом /boot/vmlinuz-xxxx и содержимым каталога /lib/modules/<версия ядра>. Кроме того модульному ядру нужен специальный образ загрузки т.н. initrd. Этот образ содержит все необходимые модули которые позволяют ядру загрузить ситему. Без этих модулей оно неспособно подключить системный раздел жесткого диска и прочитать файлы. Initrd файл располагается в каталоге /boot и имеет имя initrd-xxxx.

Где же истина? Как всегда, посередине. Какие-то возможности лучше включить в ядро, а какие-то сделать модулями. Какие именно? Те возможности которые Вам нужны постоянно - лучше включить, например драйвер жесткого диска, на котором лежит система. Если к Вам приходит друг раз в месяц со своей usb фотокамерой - делайте драйвер usb и камеры модулями. Если сомневаетесь, нужна ли Вам та или иная особенность - ставьте модулем. Посмотреть какие модули сейчас загружены в систему Вы можете командой lsmod

Если ваш дистрибутив собран для 2.4 ядра (например АСПЛинукс 9.0 и 9.2), то у Вас могут быть проблемы с загрузкой модулей, связанные с тем что в 2.6 изменились названия модулей. Поэтому я рекомендую включать все, что Вам точно необходимо, в ядро.

Итак, настройка производится на выбор одной из команд

  1. make xconfig Для пользователей, у которых есть графика - запустится графическая программка для настройки. Этот вариант нам наиболее симпатичен.
  1   2   3   4   5   6   7

Похожие:

4. 4 Отключение автоматической настройки загрузчика при установке ядра iconТехническое задание на выполнение работ по установке автоматической системы пожарной сигнализации
Выполнение монтажных и пуско-наладочных работ по созданию системы автоматической пожарной сигнализации
4. 4 Отключение автоматической настройки загрузчика при установке ядра iconТехническое задание на выполнение работ по установке автоматической системы пожарной сигнализации и системы оповещения людей при пожаре и управления эвакуацией
Автоматическая пожарная сигнализация с системой оповещения при пожаре и управления эвакуацией предназначена для использования в здании...
4. 4 Отключение автоматической настройки загрузчика при установке ядра iconИнструкция №046/09 по охране труда при снятии, установке и ремонте колёс
Настоящая инструкция регламентирует основные требования безопасности при выполнении работ по снятию и установке колес автомобиля
4. 4 Отключение автоматической настройки загрузчика при установке ядра iconИнструкция по эксплуатации автоматической
Инструкция по эксплуатации автоматической системы управления и измерений при нарушениях в энергосети, модель dse 5520
4. 4 Отключение автоматической настройки загрузчика при установке ядра iconМатематическое планирование эксперимента при исследовании работоспособности алгоритма автоматической параметрической оптимизации систем с широтно-импульсной модуляцией
Ия достаточного количества экспериментов при исследовании области работоспособности алгоритма автоматической параметрической оптимизации...
4. 4 Отключение автоматической настройки загрузчика при установке ядра iconЛекция 15 Содержание
При этом звезда теряет внешнюю оболочку и остается после завершения всех возможных термоядерных реакций в виде центрального ядра....
4. 4 Отключение автоматической настройки загрузчика при установке ядра iconРуководство пользователя p / n 1318 33
Те настройки, которые уже для вас сделаны, называются заводскими настройками «по умолчанию» (Factory Default). В случае, если вы...
4. 4 Отключение автоматической настройки загрузчика при установке ядра iconПаспорт и инструкция по установке и эксплуатации 115569, г. Москва, >ул. Маршала Захарова, дом 6 корп. 3
Для понимания настройки и регулировки установки умягчения воды, необходимо ознакомится с понятием жесткости воды, которое принято...
4. 4 Отключение автоматической настройки загрузчика при установке ядра iconИнструкция по установке программы "Формы статотчетности"
В данном руководстве описана процедура установки и настройки Программа «Формы статотчетности». Здесь и далее программу «Формы статотчетности»...
4. 4 Отключение автоматической настройки загрузчика при установке ядра iconЛабораторная работа №2 «Изучение среды моделирования Simulink»
Задайте настройки блоков. Если блока нет в таблице, его настройки задавать не нужно
Разместите кнопку на своём сайте:
Библиотека


База данных защищена авторским правом ©lib.znate.ru 2014
обратиться к администрации
Библиотека
Главная страница