Компиляция ядра в Ubuntu на EC2 (без ошибок, но без образа и без изменений после перезагрузки) - PullRequest
2 голосов
/ 11 ноября 2011

Мне нужно обновить таймер ядра на моем сервере Ubuntu Lucid (10.04) на EC2 (с EBS) с 250 Гц до 1000 Гц, чтобы улучшить качество VoIP-вызовов.

Из того, что я прочитал, способ сделать это - загрузить исходный код ядра, настроить его, а затем установить.

Я нашел несколько достойных уроков, которые довольно специфичны для моей установки, лучшие из которых:

Это привело меня к следующим наборам команд, которые прекрасно работают, создавая файлы .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

EDIT

Потратил некоторое время с 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

Ответы [ 4 ]

2 голосов
/ 12 ноября 2011

Джон Йохансен (хакер ядра в Canonical) считает, что вы должны иметь возможность собрать и запустить свое собственное ядро ​​на экземпляре EC2 с Ubuntu.

См. Примечания jjohansen в этом 1000-Гц запросе к ядру EC2, который я отправил назадв 2009 году:

https://bugs.launchpad.net/ubuntu-on-ec2/+bug/365233

Вам нужно будет убедиться, что вы начинаете с недавнего Ubuntu AMI, который использует pvgrub.

1 голос
/ 09 марта 2012

Ссылка на команды терминала Редзарфа, включая его редактирование и пару небольших необходимых дополнений, вот что сработало для меня при обычной установке на Amazon ec2 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 , вы можете сделать это:

  • Зарезервировать очень большой точечный экземпляр с высоким процессором (20x вычислительных блоков ec2, 7 ГБ оперативной памяти)
  • Перекомпилируйте ваше ядро ​​с помощью вышеупомянутых команд (12 минут)
  • После завершения перекомпиляции сделайте снимок тома ebs точечного экземпляра
  • Ожидание завершения снимка (несколько минут)
  • Завершить работу с экземпляром
  • Создайте новый том из моментального снимка (nichname: Volume X), также обратите внимание на идентификатор тома!
  • Перейти к инстансам> Создать новый инстанс EBS
    • Это будет новый экземпляр, на котором будет работать сервер Asterisk
    • Он должен быть из той же базовой AMI и той же зоны, что и том X) - Новый экземпляр теперь будет создан вместе с соответствующим томом EBS
  • Остановите новый экземпляр
  • Перейти к томам> Отключить соответствующий том EBS нового экземпляра
  • После отсоединения удалите этот том
  • Выберите Громкость X> Присоединить к новому экземпляру EBS (идентификатор устройства должен быть: / dev / sda1)
  • Перейти к инстансам> Начать новый инстанс
  • Повторно свяжите свой Elastic IP, если он у вас был.
  • Проверьте, все ли работает
  • Если все получилось, создайте еще один снимок для резервного копирования!

Готово! ;)

Привет, спасибо Редзарфу, Эрику Хаммонду и Джону Йохансену!

1 голос
/ 13 ноября 2011

Спасибо Эрику Хаммонду за помощь,

Какое ядро ​​вам понадобится, будет зависеть от того, какую версию 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.

0 голосов
/ 11 ноября 2011

Ваше второе лучшее предположение верно. Амазонский способ загрузки ядер Linux является особенным для их домена, и он действительно, как вы упоминали, основан на специальной версии grub. Они опубликовали ресурсы по этому вопросу, пожалуйста, прочитайте Включение ваших собственных ядер Linux .

...