Собираем
информацию
по крупицам

RSS подписка

Подпишитесь на новости сайта по RSS

Статьи - Компьютерное

Linux: как перестать удивляться, и начать работать

Как перейти с Debian Lenny на Squeeze. Личный опыт.
23-01-2011
01:05:44

Скоро, очень скоро релиз Debian Squeeze станет стабильным, а Debian Lenny станет музейным экспонатом. Я решил подготовиться заранее, и сделал переезд уже сейчас. О том, как осуществлять переезд, и какие проблемы могут возникнуть, написано в этой статье.

 

Исходное: Debian Lenny, с несколькими подключенными сторонними репозитариями. С десяток программ и библиотек собраны вручную и установлены через "checkinstall -D". Рабочий стол: KDE3.

 

Задание: Обновиться на Debian Squeeze.

 

Перед началом работ по переезду на Squeeze, убедитесь что у вас есть какой-нибудь LiveCD, способный загружаться с вашего CD-привода на вашей материнке, или Flash-накопитель, с которого воможна загрузка. При переходе с Debian на Squeeze будет заменен загрузчик GRUB на GRUB2, и вы должны иметь возможность редактировать их конфиг-файлы даже если систетема перестанет загружаться.

 

Переезд начинается с того, что в Debian Lenny нужно обновиться до последних версий всех программ и библиотек. Для этого из-под рута даём команды:

 

# apt-get update

# apt-get upgrade

 

Далее надо проверить, установлен ли пакет с именем splashy. Если установлен, его нужно удалить, так как при апдейте системы он вызывает какой-то застарелый баг. Удаляем командой:

 

# apt-get purge splashy

 

На всякий случай делаем бекап всех пользовательских .dot-каталогов и файлов из домашних директорий, а так же делаем бекап каталога /etc.

 

Далее открываем файл  /etc/apt/sources.list, комментируем репозитарии Lenny, и добавляем репозитарии Squeeze:

 

# Lenny

# deb http://ftp.de.debian.org/debian/ lenny main contrib non-free

# deb http://backports.debian.org/debian-backports lenny-backports main contrib non-free

# deb http://security.debian.org/ lenny/updates main contrib non-free

# deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free

# deb http://www.debian-multimedia.org/ lenny main contrib non-free


# Squeeze

deb http://security.debian.org squeeze/updates main contrib non-free

deb http://ftp.ru.debian.org/debian/ squeeze main non-free contrib

deb ftp://ftp.debian-multimedia.org squeeze main non-free

 

И последний шаг - из-под рута даём команды:

 

# apt-get update

# apt-get dist-upgrade

 

После чего нужно перегрузиться, например командой "reboot now".

 

Сразу сообщаю две вещи, которые необходимо знать.

 

1. В Debian Squeeze удалена среда рабочего стола KDE3. Если вы пользовались этой средой, то в момент обновления будет удалено KDE3 и установлено KDE4. Личные впечатления от четверокед следующие: если отключить компиз (Параметры системы -> Эффекты рабочего стола -> снять галку "Включить графические эффекты"), то потребление памяти и нагрузка на систему соизмерима с KDE3. По первому времени будет непонятно, как делать настройку привычных вещей, но через пару дней конфигурирования можно получить удобную для работы среду. Главное (уже не помню где) переключить рабочий стол на режим обычного рабочего стола, и переключить меню в режим классического отображения.

 

2. Учтите, что на этапе обновления на экране возможно появление кучи неприятных сообщений. Например, у меня постоянно выводились такие:

 

manconv: can't set the locale: make sure $LC_* and $LANG are correct

...

error in Version string '3.1.6-59338_Debian_lenny' invalid character in revision number

...

Cannot set LC_CTYPE to default locale

 

Это как-то связано с русской локалью "ru_RU.UTF-8", которую некоторые программы правильно не воспринимают. Однако, после обновления никаких последствий, касаемых кодировок и появления кракозябриков не обнаружил.

 

* * *

 

Итак, после обновлений нужно перезагрузиться и посмотреть, будет ли вообще загружаться обновлённый Debian. Здесь возможны следущие проблемы.

 

Первая проблема - замена загрузчика GRUB на GRUB2. Авторами Debian сделано так, что GRUB остается в системе до тех пор, пока вы не решитесь окончательно перейти на GRUB2. Поэтому при загрузке будет запущен старый добрый GRUB 0.97, и первым пунктом меню в нём будет пункт запуска GRUB2 "по цепочке". Если загрузка GRUB2 "по цепочке" сработает нормально, и из GRUB2 нормально стартует запуск системы, то можно окончательно перейти на GRUB2. Для этого в загруженной системе от рута надо дать команду:

 

# upgrade-from-grub-legacy

 

Однако, загрузиться без дополнительной настройки руками зачастую будет невозможно. И вот почему.

 

Если в вашей системе есть как SATA-, так и IDE-устройства, то вы должны знать, что в Debian Lenny SATA-устройства обозначаются как /dev/sd* (например, первый раздел первого диска /dev/sda1), а IDE-устройства обозначаются как /dev/hd* (например, первый раздел второго (после SATA) IDE-диска обозначается как /dev/hda1). Видно, что /dev/sda1 и /dev/hda1 друг другу не мешают.

 

Но в новом ядре 2.6.32 обозначения /dev/hd* уже не действуют, а используется только /dev/sd*. Таким образом, то, что раньше было /dev/hda1, может стать /dev/sda2. Из-за этого в GRUB возникает путанница, и загрука начинает идти не с того раздела.

 

Причем в момент обновления изменяется конфигурация не только GRUB2, но и старого GRUB, и везде прописываются неправильные диски. То есть, получается так, что невозможно загрузиться ни с GRUB, ни с GRUB2. Тут-то вам и поможет заготовленный LiveCD. С помощью него на загрузочном разделе надо отредактировать файл /boot/grub/menu.lst, прописав в нем правильные диски. Тем самым вы исправите загрузку GRUB. Ну а потом уже, когда вам будет необходимо, можно неторопясь поправить файл /boot/grub/grub.cfg, который отвечает за конфигурирование GRUB2. Помните только, что именовать устройства теперь нужно по UUID а не через /dev/sd*.

 

Вторая проблема - как ни странно, монитор. Как только вы правильно сконфигурируете GRUB, и пойдёт загрузка системы, может произойти так, что в какой-то момент ваш LCD-монитор покажет табличку:

 

Out of range: 33.3kHz / 74.1 Hz

 

и дальше увидеть процесс загрузки вы не сможете. И загрузки иксов вы тоже не дождётесь. Самое интересное, что так будет происходить не только при обычной загрузке, но и при загрузке в Single Mode! Таким образом, зайти в систему, чтобы понять что происходит, вообще нельзя.

 

Я долго разбирался, как же решить эту проблему. Появление "Out of range" на этапе загрузки в обычном режиме еще можно было объяснить - это стартует X-сервер, выставив какой-то неподдерживаемый монитором режим. Однако, правка через LiveCD конфиг-файла /etc/X11/xorg.conf ни к чему не приводила. А появление "Out of range" при загрузке в режиме Single Mode могла говорить о том, что в Squeeze за каким-то хреном сделан графический вход пользователя даже в режиме отладки.

 

Наконец, через день мучений я понял в чем проблема. Разработчики Debian Squeeze решили сделать работу в консоли более современной, для чего вместо стандартного Text Mode 80x25 решили выставлять текстовый режим в 80x43 знакосимволов. Не все мониторы способны отобразить этот режим, но разве это кого-то волнует в мире опенсорча?

 

В файле /var/log/messages обнаружились следущие записи:

 

[drm] nouveau 0000:01:00.0: allocated 640x350 fb: 0x401a0000, bo f6757600

Console: switching to colour frame buffer device 80x43

fb0: nouveaufb frame buffer device

registered panic notifier

[drm] Initialized nouveau 0.0.15 20090420 for 0000:01:00.0 on minor 0

[drm] nouveau 0000:01:00.0: 0x74A8: parsing clock script 0

 

Как оказалось, новомодный драйвер nouveau (который я и не использую) отвечает не только за графические режимы X-сервера, но и за переключение текстовых режимов. И делает это без проверки, способен ли вообще монитор поддержать требуемый режим, либо эта проверка не срабатывает как нужно. Кроме того, после выставления неподдерживаемого текстового режима, видеокарточка уже не может установить нужный графический режим при загрузке иксов. Так что "переждать", пока пройдет текстовая загрузка и стартанут иксы (при обычном режиме загрузки) невозможно.

 

Чтобы заработала загрузка, нужно запретить переключение в текстовый режим повышенного разрешения. Я не стал разбираться со скриптами загрузки init.d, а просто попытался загрузиться с опцией ядра "nomodeset". Как оказалось, это сработало: стали загружаться и обычный режим, и Single Mode. Выяснив это, я прописал данную опцию в конфиг GRUB. Вот так:

 

title Debian GNU/Linux, kernel 2.6.32-5-686
root (hd0,0)
kernel /boot/vmlinuz-2.6.32-5-686 root=UUID=65a9adbe-16d6-47a1-ade8-5d2a45885f14 ro quiet nomodeset  
initrd /boot/initrd.img-2.6.32-5-686

 

title Debian GNU/Linux, kernel 2.6.32-5-686 (single-user mode) 
root (hd0,0)
kernel /boot/vmlinuz-2.6.32-5-686 root=UUID=65a9adbe-16d6-47a1-ade8-5d2a45885f14 ro single nomodeset  
initrd /boot/initrd.img-2.6.32-5-686

 

После этих действий Debian Squeeze наконец-то стал нормально загружаться.

 

* * *

 

Далее, если вы обладатель карточки nVidia, то вам придется переустановить фирменный драйвер, так старый графический модуль ядра не будет работать с новым ядром.

 

Здесь проблема возникает в том, что при обновлении до Squeeze компилятор gcc обновляется до версии 4.4.5-8, а ядро 2.6.32 собрано с помощью gcc версии 4.3. Установщик драйвера потребует, чтобы при сборке была выставлена gcc версии 4.3, так как именно она требуется для создания модуля ядра. А основной версией комплятора в системе, как вы понимаете, выставлено gcc 4.4.5-8.

 

Чтобы нормально сработал установщик фирменного драйвера nVidia, нужно сделать две вещи.

 

Во-первых нужно проверить, установлены ли в системе пакеты gcc-4.3-base и linux-headers-2.6.32-5-686. Если не установлены, установить.

 

Во-вторых, нужно в том же каталоге, где лежит установочный *.run-файл драйвера, создать файл start.sh следующего содержания:

 

#!/bin/sh

export CC=/usr/bin/gcc-4.3

./NVIDIA-Linux-x86-какой-там-у-вас-драйвер.run

 

Далее устанавливаем файлу start.sh права 755, и запускаем его от рута в режиме, когда отключен X-сервер, например загрузившись в Single Mode.

 

* * *

 

Если при переходе с Lenny на Squeeze отвалилось видео, то почему бы не отвалиться звуку? Именно это и может произойти. У меня, например, после обновления, система стала пытаться выводить звук через видеокарточку. А звуковая карточка SBLive 5.1 тихонько курила в сторонке.

 

Это произошло из-за того, что новое ядро знает новые устройства, и обнаруживает устройство HD Audio на видокарточке nVidia GeForce 220 GT, которое там действительно есть. Обнаружив это новое устройство, система прописывает его первым среди устройств для работы со звуком.

 

Чтобы удостовериться, что действительно появилось новое приоритетное звуковое устройство, надо запустить консольную программу alsamixer. То устройство, которое будет отображено при старте программы, и есть новое устройство, используемое по-умолчанию.

 

Чтобы узнать, какие звуковые карточки есть в системе надо из-под рута дать команду:

 

# lspci | grep -i audio
01:00.1 Audio device: nVidia Corporation High Definition Audio Controller (rev a1)
05:02.0 Multimedia audio controller: Creative Labs SB Live! EMU10k1 (rev 07)

 

Чтобы узнать, какие модули ядра отвечают за звуковые карточки, надо от рута дать команду:

 

# cat /proc/asound/modules

0 snd_hda_intel

1 snd_emu10k1

 

Этот вывод означает, что приоритет у HD Audio (на карточке nVidia используется Intel-чип), а карточка SBLive вторая по приоритету. Наша задача - сделать приоритетной карточку SBLive.

 

К сожалению, разобраться как это сделать я не смог. Прописывание пониженного приоритета для HD Audio в файл /etc/modprobe.d/alsa-base.conf:

 

options snd-hda-intel index=-2

 

ни к чему не привела - HD Audio продолжало быть первой в списке устройств воспроизведения. (Обратите внимание, что в списке модули именуются с помощью нижнего подчеркивания, а в конфигфайлах между частями названия используется тире).

 

Чтобы услышать звук, пришлось вообще отключить загрузку модуля для устройства HD Audio. Для отключения подгрузки данного модуля, нужно в файл /etc/modprobe.d/alsa-base-blacklist.conf прописать строчку:

 

blacklist snd-hda-intel

 

после чего надо перегрузиться, и звук заработает через SBLive.

 

* * *

 

Основные проблемы, связанные с переездом на Squeeze я написал. Однако будет еще набор более мелких пролем, которые нужно решать самостоятельно. Думаю, что вам повезёт, и вам не придется тратить много времени на самое бессмысленное из всех занятий - конфигурирование системы.

 



К списку "Компьютерное"

Поделиться этой страницей



Внимание!


На этом сайте разрабатывается программа MyTetra и её родственные проекты. Доступны к просмотру следующие базы знаний:

 

База Xintrea (стр. 1)

База Rarrugas (стр. 1)

База Balas

База YellowRaven

База Yurons

База Lesnik757

База Shandor

База Sirrichar

База Anatolean (стр. 1)

База Аrmagedec

База SorokinRed

База Deadelf79

База Adgaver (стр. 1)

База Pipitos1983

База Silenn (стр. 1)

База Shlyapnikova - херомантия и ригидность

База Velonski (стр. 1)

База BrokeRU (стр. 1)

База Mcold (стр. 1)

База Alensav (стр. 1)

База Alensav2 (стр. 1)

База Consp11 (стр. 1)

База Kozlov-AE (стр. 1)

База Wwwlir (стр. 1)

База Duwaz (стр. 1)

 

Требуют доработки:

 

База Tairesh

База Ivnglkv

База Kolyag87

База Andyk101

База Garik456456

База Harpokrat

База SalexIzyh

База RuDennn (Bunny-Hop)

База Manakaden

База Vitvrn

База Fanrok

База Grimar

База_Juryak

База Nicolasomsk

База Azatserikbaev

База Shut913

 

Подробности на странице MyTetra Share.

 WebHamster.Ru
 Домик любопытного хомячка
Яндекс индекс цитирования
Почтовый ящик