Олег Шалаев  > Мой Debian-опыт  > Первоначальная настройка

См. также старую версию этой странички.

Компиляция ядра 2.6.30 для процессора AMD Sempron 64 bit под Debian squeeze

Вот раньше, бывало, приходилось извращаться по-страшному, применяя к ядру неимоверное количество патчей и компилируя всякие-там модули ядра. Теперь – другие времена: всё оборудование на моём стареньком домашнем компьютере работает без всяких патчей. Только одна неприятность: я вынужден был запретить (с помощью dselect hold) upgrade X-сервера, т.к. старый драйвер для моей (тоже старой) двухголовой видеокарты (Matrox Parhelia P650) несовместим с новым X-сервером. Для нормальной работы беспроводной bluetooth-гарнитуры (headset) очень важно выбрать правильную bluetooth-антенну. Проверено: для моего SCO-наушника (т.е. моно и 8000Гц) без проблем и без всяких патчей работает супердешёвая ($1.25 на ebay, доставка бесплатно) bluetooth-антенна:

Скачиваем СТАНДАРТНОЕ ядро (для более новых и/или нестандартных ядер патч, возможно, не будет работать):

cd /usr/src/
lftp -e "get linux-2.6.30.tar.bz2 ; quit" ftp.kernel.org:/pub/linux/kernel/v2.6/ tar xjf linux-2.6.30.tar.bz2 ln -sf linux-2.6.30 linux cd /usr/src/linux

Сохраняем мою конфигурацию ядра (предварительно распаковав с помощью гунзип) в файл /usr/src/linux/.config Ну всё, теперь можно компилировать ядро командами

make prepare && make menuconfig && make-kpkg --rootcmd=fakeroot kernel_headers kernel_image modules_image

(Перед компиляцией откроется меню, где вы должны изменить конфигурацию ядра в соответствии с запросами вашего компьютера.) По окончании процесса в /usr/src появляются два (или три) новых deb-файла, которые надо установить с помощью dpkg -i

Примечание: на работе, где у меня стоит супер-пупер навороченный Змей-Горыныч о восьми головах, я перед компиляцией ядра дополнительно даю команду export CONCURRENCY_LEVEL=8 , которая указывает программе make-kpkg, что можно одновременно запускать до восьми компилляционных процессов.

Примечание: После апрейда lenny (дело было где-то между сентябрём 2008 и февралём 2009) мой bluetooth-наушник вдруг перестал работать. Долго не мог понять, в чём дело. Оказалось, надо было просто добавить пользователя (меня то есть) в группу netdev командой adduser shalaev netdev

Переводим нашу bluetooth-гарнитуру (или, проще говоря, наушник) в "открытый" режим (когда он в радиоэфире всем сообщает о своём присутствии). У меня для этого надо при включении наушника долго не отпускать кнопку включения. Одновременно запускаем (из-под root) команду hcitool scan, которая выдаёт нам адрес наушника (что-то вроде 00:11:22:33:44:55). Прописываем этот адрес в файл ~/.asoundrc и запускаем из-под обычного пользователя: bluetooth-applet &

Примечание: новая версия bluetooth-applet может сама сканировать радиоэфир и обнаружить наушник. Ей только надо дать пин-код (в моём случае – 1234). Таким образом, простому человеку уже необязательно знать о существовании hcitool.

Далее, тестируем подключение командой
aplay -Dplug:headset file.wav
где file.wav – какой-нибудь звуковой файл. Если все предыдущие процедуры прошли удачно, то эта команда подсоединит наушник и сыграет в него файл.
Примечание: иногда следует попробовать aplay -D headset file.wav вместо aplay -Dplug:headset file.wav. Кроме того, при несовпадении частоты file.wav (напр., 40000Гц – высокое качество) с частотой наушника (низкое качество, 8000Гц) возможны искажения звука до неузнаваемости, но телефонным разговорам по twinkle это не вредит.
Всё, настройка закончена. Можно запускать twinkle (звонить родным и знакомым).

Компиляция ядра 2.6.38 (32-бит) для EEE PC из-под 64-битной Ubuntu lucid

aptitude install ia32-libs lib32gcc1 lib32ncurses5 libc6-i386 util-linux devscripts kernel-package
export CONCURRENCY_LEVEL=8
важно, чтобы поддержка reiserfs и reiserfs4 была встроена в ядро:
mkdir -p ~/tmp/kernel
cd ~/tmp/kernel
lftp -e "get linux-2.6.39.tar.bz2 ; quit" ftp.kernel.org:/pub/linux/kernel/v2.6/
wget -O reiser4-for-2.6.39-1.patch.gz "http://sourceforge.net/projects/reiser4/files/reiser4-for-linux-2.6/reiser4-for-2.6.39-1.patch.gz/download"
gpg --verify linux-2.6.39.tar.bz2.sign linux-2.6.39.tar.bz2
apt-get source apparmor
rm -r linux-2.6.39 linux *.deb
tar xjf linux-2.6.39.tar.bz2
ln -sf linux-2.6.39 linux
cd linux
for i in ../apparmor-2.7.102/kernel-patches/2.6.39/*.patch ; do cat $i | patch -p1 ; done
zcat ../reiser4-for-2.6.39.patch.gz | patch -p1
linux32 make oldconfig && linux32 make menuconfig && \
make-kpkg clean --cross-compile - --arch=i386 && \
time (linux32 make-kpkg --append-to-version a --cross-compile - --arch=i386 --rootcmd=fakeroot clean && \
linux32 make-kpkg --append-to-version a --cross-compile - --arch=i386 --rootcmd=fakeroot kernel_headers \
--initrd kernel_image kernel_headers modules_image \
&& make clean )

← выполнение последней команды длится 80 минут:
real 7m35.171s
user 29m54.110s
sys 7m40.200s

Меняем версию ядра с amd64 на i386

Старый способ (теперь не работает под ubuntu)

export LANG=C
Затем открываем новую bash-сессию командой
fakeroot deb-reversion -k bash ../linux-image-*64.deb
В этой новой сессии выполняем команды
sed "s/Architecture: amd64/Architecture: i386/" DEBIAN/control > tmp.txt
mv tmp.txt DEBIAN/control
exit

Аналогично
fakeroot deb-reversion -k bash ../linux-headers-*64.deb
sed "s/Architecture: amd64/Architecture: i386/" DEBIAN/control > tmp.txt
mv tmp.txt DEBIAN/control
exit

rm ../*.deb
mv *.deb ..

Новый способ

cd ..
mkdir tmp
for fName in linux-{image,headers}-*_amd64.deb ; do
dpkg-deb -x $fName tmp
dpkg-deb --control $fName tmp/DEBIAN
sed "s/amd64/i386/g" tmp/DEBIAN/control > tmp.txt
mv tmp.txt tmp/DEBIAN/control
dpkg -b tmp $(basename $fName amd64.deb)i386.deb
rm -r tmp/*
done
rm linux-{image,headers}-*_amd64.deb

Олег Шалаев
Last modified: Tue Nov 6 12:05:07 PST 2012