Устанавливаем переменные окружения для компиляции с оптимизирующими ключами:
export CHOST='x86_64-pc-linux-gnu' export CFLAGS="-O3 -march=k8-sse3 -fomit-frame-pointer -pipe" export CXXFLAGS="-O3 -march=k8-sse3 -fomit-frame-pointer -pipe" # Установка необходимых пакетов: sudo apt-get install kernel-package libncurses5-dev fakeroot wget bzip2 build-essential
ВНИМАНИЕ! Указанные выше ключи только для процессоров AMD Athlon 64 X2! Подробнее об оптимизирующих ключах: ключи gcc компилятора, безопасные ключи для AMD. Далее скачиваем исходники:
wget http://www.kernel.org/pub/linux/kernel/v3.x/linux-3.1.5.tar.bz2 tar jxf linux-3.1.5.tar.bz2 cd linux-3.1.5
Конфигурируем и компилируем ядро:
cp /boot/config-`uname -r` ./.config make menuconfig fakeroot make-kpkg --revision=1.0.Custom --initrd kernel_image kernel_headers
Устанавливаем ядро и перезагружаемся:
dpkg -i ../*.deb reboot
Если понадобилось установить какой-нибудь пакет из Ubuntu в Debian, самый простой способ - сделать это через репозиторий Ubuntu. Для начала нужно убедиться, что нужный пакет совместим с Debian. Ищем информацию о зависимостях пакета и необходимых версиях компонентов по ссылке. Затем с помощью команды убеждаемся, что нужные версии всех зависимостей присутствуют в Debian:
sudo apt-cache search <package_name>
Затем устанавливаем все зависимости:
sudo aptitude install <package_name> [<package_name>] ...
Далее добавляем PPA. Но сначала нужно достать ключ для дистрибутива Ubuntu. Обычно его можно найти в описании самого PPA:
Signing key:
1024R/2A2356C9 (What is this?)
Fingerprint:
7A4AF09AB1802509C26153211EBA3D372A2356C9
Нам нужен ключ - 2A2356C9. Далее вводим:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 2A2356C9
Осталось только добавить в /etc/apt/sources.list нужный PPA и сделать:
sudo apt-get update
Полный текст ошибки:
user@host:~/Progect/www$ git push Counting objects: 13, done. Delta compression using up to 2 threads. Compressing objects: 100% (6/6), done. Writing objects: 100% (7/7), 636 bytes, done. Total 7 (delta 5), reused 0 (delta 0) Unpacking objects: 100% (7/7), done. remote: error: refusing to update checked out branch: refs/heads/master remote: error: By default, updating the current branch in a non-bare repository remote: error: is denied, because it will make the index and work tree inconsistent remote: error: with what you pushed, and will require 'git reset --hard' to match remote: error: the work tree to HEAD. remote: error: remote: error: You can set 'receive.denyCurrentBranch' configuration variable to remote: error: 'ignore' or 'warn' in the remote repository to allow pushing into remote: error: its current branch; however, this is not recommended unless you remote: error: arranged to update its work tree to match what you pushed in some remote: error: other way. remote: error: remote: error: To squelch this message and still keep the default behaviour, set remote: error: 'receive.denyCurrentBranch' configuration variable to 'refuse'. To /Progect/www ! [remote rejected] master -> master (branch is currently checked out) error: failed to push some refs to '/Progects/git'
Чтобы исправить ошибку войдите с папку с origin репозиторием и введите команду:
git config --bool core.bare true
После этого в origin можно удалить все файлы, кроме папки .git.
Получение исходников
От того, какая ветка ядра будет использоваться для компиляции ( current или stabile ), а так же в зависимости от того нужно исходники обновить, или скачать с нуля, будут использоваться различные команды:
Скачиваем current "с нуля":
cd /usr cvs -qd anoncvs@anoncvs.ca.openbsd.org:/cvs get -P src
Скачиваем stable "с нуля":
cd /usr cvs -qd anoncvs@anoncvs.ca.openbsd.org:/cvs get -rOPENBSD_4_9 -P src
Обновляем current:
cd /usr/src cvs -q up -Pd
Обновляем stable:
cd /usr/src cvs -q up -rOPENBSD_4_9 -Pd
ВАЖНО! Если обновляемые исходники были получены с другого сервера или с CD, в команду обновления необходимо добавить параметр "-d anoncvs@anoncvs.ca.openbsd.org:/cvs":
cd /usr/src cvs -d anoncvs@anoncvs.ca.openbsd.org:/cvs -q up -Pd
Добавление оптимизирующих ключей в Makefile
Подробнее об оптимизирующих ключах: ключи gcc компилятора, безопасные ключи для AMD.
cd /usr/src/sys/arch/amd64/conf config GENERIC.MP cd ../compile/GENERIC.MP nano Makefile
В файле комментируем переменную CMACHFLAGS и добавляем свой вариант ключей:
#CMACHFLAGS= -mcmodel=kernel -mno-red-zone -mno-sse2 -mno-sse \
-mno-3dnow -mno-mmx -msoft-float -fno-omit-frame-pointer
CMACHFLAGS= -mcmodel=kernel -msse2 -msse -m3dnow -mmmx \
-msoft-float -fomit-frame-pointer -mno-red-zone
Компилируем и устанавливаем ядро
# Чтобы отключить вывод можно использовать: # make clean && make depend 1>/dev/null && make 1>/dev/null make clean && make depend && make make install reboot
Компилируем userland
После компиляции ядра настоятельно рекомендуется перекомпилировать и его окружение (набор системных утилит, взаимодействующих с ядром).
# Очищаем /usr/obj директорию и ребилдим ссылки: rm -rf /usr/obj/* cd /usr/src make obj # Убеждаемся, что все необходимые директории созданы: cd /usr/src/etc && env DESTDIR=/ make distrib-dirs # Компилируем: cd /usr/src make build
Либо можно сделать это всё вот так (silent userland rebuild):
rm -rf /usr/obj/* 1>/dev/null && cd /usr/src && make obj 1>/dev/null \ && cd /usr/src/etc && env DESTDIR=/ make distrib-dirs \ && cd /usr/src && make build 1>/dev/null
Из-за старого бага, который давно уже был исправлен, разработчики отключили клавишу Backspace в Firefox для некоторых дистрибутивов Linux. Сам столкнулся с этим на Xubuntu 11.04. Исправить баг можно следующим образом:
Зайти на страницу конфигурации Firefox (набрать в адресной строке about:config), найти параметр browser.backspace_action и установить его значение на 0.