Скорость загрузки ядра.
Viloroy 26 сентября, 2011 - 16:50
Здравствуйте!
При загрузке ядра происходит что-то странное:где-то 5 секунд занимает процесс сканирования чего-то.
куча строк такого формата.
scanning for:***
Ядро я собирал при помощи genkernel.Скажите,пожалуйста,какой параметр отвечает за этот процесс?Хочется выпилить.
Да,в dmesg это,естественно,не отражается-происходит до монтирования корня.
»
- Для комментирования войдите или зарегистрируйтесь
initrd от genkernel пытается
initrd от genkernel грузит все возможные модули из списка /usr/share/genkernel/arch/x86_64/modules_load
Я у себя этот список почистил до штук пяти нужных (хотя можно было и в ядро впилить) - сэкономил эти несколько секунд.
Дабы при пересборке genkernel не потерять настройки - можно внести каталог в список CONFIG_PROTECT portage.
А как его в этот список
А как его в этот список внести?
CONFIG_PROTECT="/usr/share/ge
CONFIG_PROTECT="/usr/share/genkernel/arch/x86_64/modules_load" в make.conf, очевидно
А как его в этот список
А как его в этот список внести?
Не проще ли собрать ядро
Не проще ли собрать ядро рекомендованным в хэндбуке образом?
:wq
--
Live free or die
Разумеется,проще.Но я слегка
Разумеется,проще.Но я слегка затра*ался разбираться с дровами nvidia,а с генкернел и мучений нет...
Я не знаю,почему мои
Я не знаю,почему мои сообщения дублируются,заранее сори.
Выключи HTML в почте
Выключи HTML в почте
Я не знаю,почему мои
Я не знаю,почему мои сообщения дублируются,заранее сори.
Угу. Так,тот файлик я
Угу.
Так,тот файлик я перерыл,почистил,не помогло.Сделал поиск по названию одного из модулей в содержимом-куча конфигов.Как определить,откуда именно список берется?
/usr/share/genkernel/arch/x86_64/modules_load
/usr/share/genkernel/arch/x86_64/modules_load, очевидно, для amd64 архитектуры. Для x86 по аналогии свой список.
Вы уверены, что используется 64-битный gentoo?
Да.Скомпиленное ядро имеет
Да.Скомпиленное ядро имеет название х86_64,stage3 я ставил для amd64...
Может быть,просто не тот конфиг?
Мало просто почистить файл,
Мало просто почистить файл, нужно ещё как минимум initrd (или всё сразу, с ядром) пересобрать.
Файл точно тот, у меня на ноутбуке ведь работает.
.
А как узнать, какие из модулей не используются?
Попытаться выгрузить. Если не
Попытаться выгрузить. Если не используются, или используются, но легко выгружаются - значит, в принципе, они на этапе initrd не нужны.
.
Что-то не прокатил такой вариант. Удалялись практически все подряд. После удаления половины модулей заметил, что не работает инет. При перезапуске интерфейса ошибка: "Убедитесь, что модуль ядра для вашей железяки загружен". Такими темпами после пересборки ядра вообще ничего не заработает.
Для initrd более важны
Для initrd более важны разного рода sata-контроллеры и файловые системы. Интернет и без этого загрузится позднее, в initrd сетевые модули не нужны.
Вот, например, мой modules_load:
.
а как отдельно initrd пересобрать?
genkernel --help
genkernel --help
lsmod, а потом rmmod
lsmod, а потом rmmod "модули", те которые используются не выгрузятся
ps проще пересобрать ядро выключив лишние, например поддержка железа и фс которого у вас нет.
Есть хороший
Есть хороший сайт:
http://kmuto.jp/debian/hcl/index.cgi
остальное естественно удалять.
Скоростная загрузка ядра linux
Можно скомпилировать ядро конкретно для Вашего компьютера с или без initrd, достаточно быстро и с номинальными познаниями настроек ядра. Самое важное знать контроллер диска, используемую корневую файловую систему и иметь уже подключенную и настроенную сеть на компьютере.
Переходим в каталог исходников активного ядра
Сохраняем на всякий случай конфигурационный файл
Далее подключите все используемые устройства к компьютеру, чтобы подхватились модули через udev и выполните автоматическую установку только используемых модулей
В этом пункте происходит сильная зачистка конфигурационного файла.
Затем проверьте включение некоторых модулей и при их отсутствии включите. Корневую файловую систему, Ваш контроллер диска, ramdisk, если используете initrd (что совсем не обязательно) включайте их не модулями, а сразу в ядро. Модулями подключите ntfs, файловую систему для cd, включите пункт scsi cd-rom, usb принтеры, мониторы и прочую используемую usb технику, которую не увидел скрипт. Ну и само собой Ваши любимые пункты проверьте на правильность настроек, но как правило скрипт их не затрагивает.
Далее сохраните настройки в .config и выходите
Теперь запускаем максимально быструю компиляцию ядра, модулей и их установку, включая пересборку и подключение внешних модулей типа nvidia и virtualbox (у Вас должен быть установлен пакет sys-kernel/module-rebuild)
Затем в grub подключаем новое ядро, но возможно даже не придется переделывать grub, если это повторная компиляция. Таким образом Вы получите минимальную систему непосредственно для Вашего компьютера из стандартного конфигурационного файла gentoo.
В случае неуспеха, что маловероятно, скопируйте .config.bak на место .config
и выполните для компиляции ядра со стандартными параметрами gentoo
P.S. Хитрости.
Перед началом компиляции скопируйте каталог boot, например, в домашнюю директорию. И в случае неудачи Вы всегда сможете быстро восстановить ядро из liveCD (если ядро у Вас только одно), удалением испорченного boot из корневого раздела и восстановлением из Вашей архивной копии.
Для самой быстрой загрузки ядра измените 2 пункта ядра так как показано у меня:
и
После этих мероприятий ядро на медленном atom n270 грузится чуть медленнее 1 секунды.
Возможно с первого раза может не хватить опыта, чтобы подключить все дополнительные устройства, не увиденные скриптом, но это всегда можно сделать чуть позднее, тем более что докомпиляция одного-трех модулей займет совсем мало времени. Еще раз напомню, что самое главное это контролер жесткого диска и корневая файловая система. Остальное всегда можно отшлифовать позднее.
По поводу "хитростей" с бэкапом рабочего ядра
Проще старое ядро никуда не копировать, а при сборке нового добавить в General setup -> Local version... (CONFIG_LOCALVERSION) что-нибудь вроде -test. Тогда файлы нового ядра и каталог в /lib/modules будут называться по шаблону *-3.0.4-gentoo-test и не перезапишут файлы текущего.