#compilation #amazon-ec2 #linux-kernel #ubuntu-10.04
#Сборник #amazon-ec2 #linux-ядро #ubuntu-10.04
Вопрос:
Мне нужно обновить таймер ядра на моем сервере Ubuntu Lucid (10.04) на EC2 (с EBS) с 250 Гц до 1000 Гц, чтобы улучшить качество voip-вызовов.
Из того, что я прочитал, способ сделать это — загрузить исходный код ядра, настроить его, а затем установить.
Я нашел несколько достойных руководств, которые довольно специфичны для моей настройки, лучшие из которых:
- https://wiki.ubuntu.com/Kernel/BuildYourOwnKernel
- https://help.ubuntu.com/community/Kernel/Compile
- http://blog.avirtualhome.com/2010/05/05/how-to-compile-a-ubuntu-lucid-kernel/
- http://crashcourse.ca/introduction-linux-kernel-programming/intermission-building-new-ubuntu-1004-kernel-free-lesson
Это привело меня к следующим наборам команд, которые все выполняются нормально, создавая файлы .deb без очевидных ошибок. Но затем, когда я перезапускаю сервер, частота таймера не обновляется.
sudo apt-get build-dep linux-image-$(uname -r)
sudo apt-get build-dep linux
sudo apt-get install fakeroot build-essential
sudo apt-get install crash kexec-tools makedumpfile kernel-wedge
sudo apt-get install libncurses5 libncurses5-dev
sudo apt-get install libelf-dev asciidoc binutils-dev kernel-package
cd /usr/src
sudo apt-get source linux-image-$(uname -r)
cd linux-*
sudo make menuconfig
# Processor type and features -> Timer frequency -> change to 1000HZ -> Exit -> Exit -> Yes (Save)
fakeroot debian/rules clean
fakeroot debian/rules binary-headers
fakeroot debian/rules binary-indep #This does the headers, docs, and source
#check deb 2-3 files were created
cd ..
ls *.deb
sudo dpkg -i linux-*.deb
#reboot
Редактировать
Провел некоторое время с jjohansen в irc # ubuntu-kernel и смог найти мою ошибку с его помощью — похоже, я должен был выполнить этап настройки между очисткой и сборкой. Кроме того, он рекомендовал всегда использовать исходный код из git, а не пакет, так что это новые команды для выполнения в середине того, что я имел выше:
cd /usr/src
# This is 700mb so it takes a while to download and set up
git clone git://kernel.ubuntu.com/ubuntu/ubuntu-lucid.git
cd ubuntu*
git checkout --track -b ec2 origin/ec2
fakeroot debian/rules clean
fakeroot debian/rules editconfigs
fakeroot debian/rules binary
#Takes about 40min
Комментарии:
1. Сегодня я попытался выполнить те же самые шаги на простом ванильном экземпляре Ubuntu Lucid 64bit large на EC2. Примерно те же результаты. Итак, если кто-нибудь может попробовать это для меня, вы должны быть в состоянии воспроизвести, используя обычный 64-битный Lucid EBS AMI на www.alestic.com
Ответ №1:
Джон Йохансен (kernel hacker из Canonical) считает, что вы должны иметь возможность создавать и запускать свое собственное ядро на экземпляре EC2 с Ubuntu.
Смотрите примечания джохансена в этом запросе ядра EC2 с частотой 1000 Гц, который я отправил еще в 2009 году:
https://bugs.launchpad.net/ubuntu-on-ec2/ bug/365233
Вам нужно убедиться, что вы начинаете с последней версии Ubuntu AMI, которая использует pvgrub.
Комментарии:
1. Спасибо, Эрик, я видел эту страницу пару раз и надеялся привлечь внимание либо вас, либо Скотта Мозера. Именно там я получил ссылку на инструкции Buildyourrownkernel, которые я вставил выше. И именно после выполнения шагов на этой (связанной) странице я добрался до того, что у меня есть, и застрял. Как вы думаете, мне лучше связаться с Джоном / Скоттом напрямую? или попробуйте irc # ubuntu-kernel, о котором он упоминал? Чем больше я работаю над этим, тем больше я думаю, что это касается только моей первой проблемы, описанной выше, и что что-то не так с исходным кодом ядра (или чего-то не хватает на моем сервере.)
2. Джон работает в #ubuntu-kernel под именем jjohansen, и там тоже есть другие эксперты.
3. Как насчет 12.04 (точный)? Для него нет ветки ec2. Есть решения для этого?
Ответ №2:
Спасибо Эрику Хаммонду за предупреждение,
Какое ядро вам понадобится, будет зависеть от того, какую версию Ubuntu вы используете. Для Lucid — Maverick вам нужно будет использовать исходный код ядра -ec2. Необходимая поддержка была перенесена в обычное дерево ядра для natty и oneric.
Итак, вам нужно будет сделать
sudo apt-get source linux-ec2
или
git clone git://kernel.ubuntu.com/ubuntu/ubuntu-lucid.git
cd into the source directory
fakeroot debian/rules clean
fakeroot debian/rules binary
Для Lucid вам также нужно будет убедиться, что вы выполнили обновление или используете текущий образ, поскольку поддержка pv-grub была добавлена после выпуска Lucid.
Комментарии:
1. Спасибо @Jonathan @user1043670 — linux-ec2 сократил только 5 КБ. Git полностью отключил программу, но после запуска
fakeroot debian-rules binary
он собрал заголовки, документ, исходный код и инструменты, но изображения по-прежнему нет (и после dpkg и перезапуска оно все еще на старом ядре.) Я все равно немного опасаюсь этого, поскольку я не знаю, какие изменения конфигурации необходимы для запуска на EC2. Да, я использую более новый aki с pvgrub. Кроме того, я только что добавил комментарий к своему сообщению выше о том, что попробовал простой vanilla Lucid на EC2. Можете ли вы сами попробовать экземпляр Lucid на ec2? Есть еще идеи?2. Я прав, что нужен файл изображения deb? Или это не нужно, и моя проблема связана с установкой?
Ответ №3:
Ссылаясь на команды терминала Redzarf, включая его редактирование плюс пару небольших необходимых дополнений, вот что сработало для меня при установке Amazon ec2 vanilla Ubuntu Server Cloud Guest 10.04 LTS (Lucid Lynx) 64x
# Make yourself root
sudo su
# Update source list:
aptitude update
# Upgrade everything:
aptitude upgrade
# Install dependencies:
apt-get build-dep linux-image-$(uname -r)
apt-get build-dep linux
apt-get install fakeroot build-essential
apt-get install crash kexec-tools makedumpfile kernel-wedge
apt-get install libncurses5 libncurses5-dev
apt-get install libelf-dev asciidoc binutils-dev kernel-package
apt-get install git-core
cd /usr/src
git clone git://kernel.ubuntu.com/ubuntu/ubuntu-lucid.git
cd ubuntu*
git checkout --track -b ec2 origin/ec2
fakeroot debian/rules clean
fakeroot debian/rules editconfigs
# Configuration window should now appear, do the following:
Select YES
# Navigate to:
Processor type and features -> Timer frequency
# Select the 1000HZ frequency
Exit
Exit
Yes (Save)
#After saving and returning to prompt it may ask you to do it again for i386, select yes and repeat!
# Recompile:
fakeroot debian/rules binary
#Check if your deb 2-3 files were created
cd ..
ls *.deb
sudo dpkg -i linux-*.deb
#reboot
reboot
#Check your new Kernel version
uname -r
#Check if Kernel HZ value change persisted:
cat /boot/config-`uname -r` | grep HZ
#If value 1000HZ=yes:
Done!;)
—===< Краткий совет>===—
Если вы используете «микроэкземпляр по требованию», время компиляции займет примерно 7 часов и будет стоить около 0,14 доллара!Если, с другой стороны, вы хотите сэкономить немного времени и перекомпилировать файл менее чем за 12 минут за 0,21 доллара, вы можете сделать это:
- Зарезервируйте экземпляр Spot Extra Large с высоким уровнем процессора (20 вычислительных блоков ec2, 7 ГБ оперативной памяти)
- Перекомпилируйте ваше ядро с помощью вышеупомянутых команд (12 минут)
- По завершении перекомпиляции сделайте снимок тома ebs экземпляра spot
- Дождитесь завершения создания моментального снимка (несколько минут)
- Завершите работу экземпляра spot
- Создайте новый том из моментального снимка (nichname: Volume X) также обратите внимание на идентификатор тома!
- Перейдите в Instances > Создайте свой новый экземпляр EBS
- Это будет новый экземпляр, на котором будет работать ваш сервер Asterisk
- Оно должно быть из того же базового AMI и той же зоны, что и том X) -Теперь новый экземпляр будет создан вместе с соответствующим томом EBS
- Остановите новый экземпляр
- Перейдите к разделам > Отсоединить соответствующий том EBS нового экземпляра
- После его отсоединения удалите этот том
- Выберите том X > Прикрепить к новому экземпляру EBS (идентификатор устройства должен быть: /dev /sda1)
- Перейдите в Инстансы > Запустите свой новый инстанс
- Повторно свяжите свой эластичный IP, если он у вас был.
- Проверьте, все ли работает
- Если все подтвердится, создайте еще один снимок для резервного копирования!
Готово! 😉
Большое спасибо Redzarf, Эрику Хаммонду и Джону Йохансену!
Комментарии:
1. Завершать нет необходимости. Вы можете просто остановить и изменить тип экземпляра из контекстного меню.
Ответ №4:
Ваше второе предположение верно. Способ загрузки ядер Linux от Amazon специфичен для их домена, и это действительно так, как вы упомянули — на основе специальной версии grub. У них есть опубликованные ресурсы по этому вопросу, пожалуйста, ознакомьтесь с Включением ваших собственных ядер Linux.
Комментарии:
1. Спасибо. У меня все еще есть ощущение, что первое предположение тоже применимо. Связанная страница была для SUSE, и я провел день в поисках инструкций для Ubuntu без особой удачи : ( Любые указания по выполнению этого в ubuntu были бы оценены.