我需要在EC2(带EBS)的Ubuntu Lucid(10.04)服务器上将内核计时器从250HZ更新为1000HZ,以提高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
修改
花了一些时间与jjohansen在irc#ubuntu-kernel上,并且能够在他的帮助下找到我的错误 - 看起来我应该在clean和build之间完成配置步骤。另外,他建议总是使用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
答案 0 :(得分:2)
请参阅我在2009年提交的1000Hz EC2内核请求中的jjohansen的注释:
https://bugs.launchpad.net/ubuntu-on-ec2/+bug/365233
您需要确保从最近使用pvgrub的Ubuntu AMI开始。
答案 1 :(得分:1)
感谢Eric Hammond先生,
您将需要哪个内核取决于您使用的是哪个版本的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,您还必须确保已完成更新或使用当前图像,因为在Lucid发布后,对pv-grub的支持已添加。
答案 2 :(得分:1)
引用Redzarf的终端命令,包括他的编辑以及一些小的必要补充,继承人在亚马逊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! 另一方面,如果你想节省一些时间并在 $ 0.21 的 12min 下重新编译,你可以这样做:
完成! ;)
大声喊叫,感谢Redzarf,Eric Hammond和John Johansen!
答案 3 :(得分:0)
你的第二个最佳猜测是正确的。亚马逊启动Linux内核的方式对于他们的域来说是特殊的,它确实如你所提到的 - 基于特殊版本的grub。他们已就此问题发布了资源,请阅读Enabling Your Own Linux Kernels。