rfLinux
Sunday, May 20, 2007
Toshiba Satellite A100-811: Ubuntu
Вот уже что-то около полтора месяца, как мой Toshiba Satellite A100-811 работает под Ubuntu Linux 6.10 (Edgy Eft). Всё началось с того, что мне надоело тянуть бэкпорты для Sarge и собирать софт, которого не было ни в репозитории, ни на бэкпортах вручную. Тем более, некоторые вещи, как например xorg собирать и ставить вручную было и вовсе неохота (заметный framedrop в mplayer’е, работающем через vesa, тоже порядком надоел). Нового Etch тогда под рукой у меня ещё не было, зато пришёл почтой заказанный на ubuntu.com Edgy Eft. Итак, решив, что в конце концов пролетариату нечего терять кроме своих цепей, я потёр систему, оставив снапшот /etc и домашний директорий. Надо сказать, что инсталлятор Ubuntu оказался очень симпатичным. Установка прошла без проблем. Т.к. версия для AMD64/EMT64 почему-то не хотела ставиться нормально, то я использовал обычный дистр для i386. Первое впечатление оказалось несколько неожиданным. С одной стороны, практически всё (за исключением злополучного bluetooth и модема, который я, правда, и не пытался использовать) работало из коробки. Даже Intel PRO/Wireless 3945ABG на драйвере ipw3945, о котором я здесь также уже упоминал. Но, Gnome в качестве десктоп-менеджера не сильно меня воодушевлял, а boot-сплэш вместо дампа ядра несколько дезориентировал :-). И с первым, и со вторым я справился. Gnome заменил на KDE, а к boot-сплэшу просто привык уже 🙂 Из коробки на штатном ядре (2.6.17) у меня работали даже suspend-to-ram и hibernate. Но, когда я налюбовавшись всеми этими прелестями начал окультуривать свежеустановленную систему, начали проявляться и побочные эффекты. 1-й и самый заментый — практически все пакеты надо тянуть из репозитория в сети, т.к. у меня был лишь установочный диск с базовыми компонентами (естественно, ядро, libc, xorg, Gnome, base-utils, net-utils и всё, по существу). Поэтому для людей, у которых нет толстого канала это может очень сильно омрачить первое впечатление. У меня толстого канала тоже нет, но зато есть работа, где, в свою очередь, есть приличный канал 🙂 Второй момент, вся система изначально заточена под Gnome в качестве десктоп-менеджера и это быстро проявляется не очень приятным образом. Так, например, после установки KDE у меня отказался нормально работать hibernate и suspend-to-ram. Система засыпала, но уже не просыпалась. Самое смешное, что происходило такое безобразие только при работе в KDE и никак не отражалось на gdm (я оставил его логин-менеджером — внешне он понравился мне больше, чем kdm). Немного порыскав по логам и конфигам я сделал такие правки в /etc/hibernate/common.conf: и такую в xorg.conf: (добавил опцию «VbeRestore» — для использования этого добра необходим пакет vbetool). Вот, собственно, и всё, что я сделал для восстановления работоспособности режимов hibernate и suspend-to-ram.
Ещё один неприятный момент выявился позже. Об этой ошибке уже писали на форуме ubuntu. При возврате из спящего режима, во время работы от аккумулятора, только одно ядро CPU работает на пониженной частоте, в то время, как другое процессорное ядро работает на полных оборотах, что нежелательно при работе от аккумулятора и вообще нарушает системную гармонию 🙂 Я быстро нашёл чьё-то решение: поместить следующий скрипт в /etc/acpi/resume.d под именем, ну пусть хотя бы и 10-dualcore-freq (я обозвал его так, хотя у автора он назывался по-другому). Однако, это мне не помогло. Как было видно из лога /var/log/acpid, он почему-то не обрабатывал такие события, как suspend или resume. Зато он всё равно при пробуждении обрабатывал power, при котором, в свою очередь, выполнял скрипты из battery.d или ac.d, в зависимости от того, работает лаптоп от аккумулятора или сети. Поэтому сей скрипт я положил в /etc/acpi/battery.d, придя к выводу, что так даже лучше, потому что мне ни к чему экономить гигагерцы при работе от сетевого адаптера. Здесь, как не трудно догадаться по аналогии с boot-скриптами, префикс в имени файла «10-» — это приоритет. У меня, к примеру, этот скрипт имеет наивысший приоритет и выполняется самым первым.
Затем обнаружились проблемы с кард-ридером MMC/SD от Texas Instruments. Драйвер ядра просто не умел работать с некоторыми картами. Наконец я созрел для замены ядра! Я хотел заменить ядро в надежде, что новый драйвер, быть может, доработан в этом плане. Кроме того, я никогда не любил тайм-принты printk() 🙂 Итак, я решил поставить последнее ядро стабильной ветки, тарбол которого у меня было на тот момент — 2.6.20. Правда, я решился на замену ядра не сразу. Ведь драйвер для Intel PRO/Wireless 3945ABG тоже пришлось бы пересобирать. Но, в конце концов, я решился. Предвижу гневные возгласы, потому сразу скажу, там где мне проще работать по привычке, а не по-новому, я отдаю предпочтение привычке. У меня нет особого желания разучивать опции нового тула только потому, что его использование — это Debian-way. Поэтому, ядро я ставил вручную, как привык делать уже очень давно — без использования kernel-package: Правим /boot/grub/menu.lst соответственно — вот и вся премудрость. Затем, распаковав тарбол с модулем ipw3945 я попытался его собрать. Но. натолкнулся на глухое непонимание Makefile’а. Он кричал, что версия модулей подсистемы ieee80211 не соответствует карте символов ядра. Т.е., Makefile полагал, что я использую out-of-tree реализацию ieee80211, а не родную ядерную. Мне так и не удалось переубедить make. В сети я нашёл замечательное решение: пропатчить ядро на предмет ipw3945! Патч ipw3945-1.2.0_for_2.6.19.patch лёг на ядро без проблем. Правда, мне пришлось переконфигурировать ядро и пересобрать его, но зато — больше никаких проблем с компиляцией модуля вне дерева кода ядра. Ещё одна маленькая хитрость. Демон и микрокод для драйвера я не ставил — они уже были в системе. Но для того, чтобы всё заработало, надо сделать симлинк на демон ipw3945d-
Кстати, я долго пытался найти в KDE что-нибудь, что позволяло бы быстро переключаться между настройками сетевого интерфейса (домашняя сеть и сеть на работе), но так и не нашёл ничего работающего 🙂 В конечном счёте я решил воспользоваться способом, который видел когда-то в сети.
Суть этого нехитрого способа состоит в использовании разных схем в /etc/network/interfaces. Для его использования вносим изменения в сам файл /etc/network/interfaces: Теперь мы имеем две схемы с разными настройками сетевого интерфейса: home — для домашней сети и work — для рабочей, соответственно. Там же, в /etc/network добавляем такой скрипт: А в /usr/local/bin создаём такой скриптик: который у нас и будет переключать схемы и по совместительству показывать, какая схема активна в данный момент. Посмотреть её можно также в файле /etc/network/scheme, который используется нашим скриптом map-scheme.sh для получения имени активной схемы. Сама схема устанавливается скриптом netscheme. Опциональный параметр — имя схемы, на которую необходимо переключиться. Без параметра скрипт просто выдаёт имя активной схемы. После переключения схемы нужно ещё выполнить ifdown/ifup, чтобы изменение параметров вступили в силу.
Ну, что тут, в общем, скажешь, старый добрый shell script попрежнему даёт. эээ, фору разным там гуям 😉 Хотя, желающие вполне могут прикрутить к этому делу гуёвый фронт-энд, благо сделать это также не сложно.
В итоге, Edgy Eft мне понравилась. Я настроил под себя всё окружение. Свежий софт работает без нареканий. Хотя, кое-чего в репозитории не было и мне пришлось поставить недостающий софт из собственных запасов. Речь об Adobe Acrobat Reader и rar. Дистрибутивный KchmViewer меня приятно порадовал. Управление энергосбережением я настроил через KLaptop. К слову, влияние xfs на работу suspend установить больше не было возможности, так как я слегка реструктурировал разбиение диска. Теперь корневая ФС у меня на reiserfs, а /home — полностью на xfs. Я не вдавался в детальные исследования, но во всяком случае, ничто не мешает отмонтировать /home перед засыпанием и модуль xfs тут уже не может помешать, т.к. оказывается незадействованным. Действительно ли hibernate отмонтрирует /home, я не проверял — повторюсь ещё раз. Но, вполне вероятно, что проблему можно устранить, если использовать для root какую-нибудь другую ФС, кроме xfs. Драйвер i810 в xorg 7.1.1, как и ожидалось, прекрасно позволяет смотреть фильмы в полноэкранном режиме и играть в Quake III Arena. Правда, мне до сих пор не удалось заставить Q3A правильно масштабироваться. Но это уже мелочи 🙂
Источник
rfLinux
Thursday, March 22, 2007
Toshiba Satellite A100-811: Hello world!
Итак, приступим. Запись за номером 1 не очень оптимистичная. Ноутбук Toshiba Satellite A100-811 оказалось не так-то легко окультурить. Легко было только ушатать установленную там по умолчанию Windows Home Edition. В общем, будем исходить из того, что это — своеобразный TODO.
Далее по списку для ОС Debian GNU/Linux 3.1 на ядре 2.6.20:
- до сих пор нет ничего определённого на счёт встроенного bluetooth. Поддержка брендовых фич в ядре ничего не даёт. По правде, я уже запутался. Эти фичи должны обеспечиваться фирменным ACPI. Или. По порядку (по опциям конфига ядра): TOSHIBA — поддержка доступа к режиму управления системой (Toshiba System Management Mode). Категорически не работает на тошибах с Phoenix BIOS’ом. Это очень прискорбно, так как нет возможности воспользоваться Dial-up доступом к интернет. ACPI_TOSHIBA тоже не помогает.
- встоенный модем, работающий через самосборный slmodemd c поддержкой alsa как бы работает, но дозвониться по нему как бы не получается.
- suspend — это вообще отдельная большая и больная тема. Проблема, собственно, сугубо ядерная в моём случае. На ванильное ядро был накачен патч suspend2-2.2.9.10-for-2.6.20.patch.bz2. И всё быть может было бы и ничего, если бы не ФС. Цикл засыпания прерывается из-за невозможности заморозить потоки ядра — xfssyncd и kpktgen. Второй можно безболезненно вышвырнуть из ядра. В принципе, мне этот генератор пакетов абсолютно нафиг нужен сейчас. Но с XFS получилось совсем не хорошо.
- не работают функциональные клавиши (см. п.1 — суть проблемы та же).
Вот то основное, что хотелось бы исправить на данный момент. В отношении suspend придётся искать альтернативное решение или совсем отказаться от него. Было бы лучше, если бы удалось работать его. На случай форс-мажора, если допустим, Вы отлучились от лаптопа на некоторое время, а батарея почти иссякла. В подобной ситуации было бы неплохо, если бы за 5-10 минут до полной разрядки батарей система автоматически в превентивном порядке заснула и отключила питание.
По поводу bluetooth — при наличии подписки GPRS было бы крайне удобно работать с интернет через сотовый телефон (а подписка у меня есть). При том, что GPRS покрытие в Беларуси очень даже радует, а качество стало не впример лучше, это хорошая возможность — работать с электронной почтой в дороге/там, где нет локалки или обычных телефонных коммуникаций, либо доступ к ним затруднён.
В отношении всего остального: при инсталляции системы ядро (дистрибутивное 2.6.8) немного фыркало в сторону SATA. Это было устранено почти сразу, как только была установлена базовая система и заменено ядро. Со встроенным Ethernet-адаптером проблем по определению быть не должно было. Некоторые проблемы были с Wi-Fi. Но об этом немного попозже, тем более, что сейчас проблема устранена.
Не был протестирован кардридер. По объективным причинам — отсутствие объектов исследования — а.к.а. этих самых карт.
Особняком стоит поддержка встроенного видео 945GM. Точнее было бы сказать, что её нет вообще. Пока Х работает через VESA. Разрешение вполне приличное — 1280х800. Излишне, впрочем, говорить, что фильм в полноэкранном режиме в том же xine особо не посмотришь и в Q3A не поиграешь. Лекарство есть — Xorg 7.1 (vs Xorg 6.9, установленного из бэкпортов). Но. Нет релиза — нет Xorg 7.1. Так что, ждём.
Вообще, вот как выглядит всё хозяйство при более подробном рассмотрении:
PS: по поводу suspend — наиболее приемлемым решением было бы вправить ядру мозги на предмет XFS. Но как? Подолжаем поиски решения.
Источник
rfLinux
Saturday, June 2, 2007
Toshiba Satellite A100-811: Ubuntu & power management
Странное дело, но после апгрейда до KUbuntu 7.04 Feisty Fawn на ноутбуке сломался hibernate suspend-to-disk. Правка /etc/hibernate/common.conf ничего не давала. Процесс сброса образа RAM на диск, кажется, шёл вполне нормально, но после возобновления (resume) X оказывался запорот. Система не висит — в неё даже можно залогиниться по ssh, но работа непосредственно на ноутбуке невозможна. Итак, немного подумав, я открыл для себя uswsusp и входящий сюда s2disk. Однако, и тут не всё было гладко. Одно время s2disk работал для меня вполне прекрасно, даже с некоторыми особенностями. Так, например, после слива образа на диск и закрытия крышки лаптопа при её отркывании система включалась сама, без нажатия кнопки power и linux возобновлялся. Но, позже появилась проблема. При открытии крышки ноутбук включался, появлялся сплэш и. всё. Сплэш замерзал на одном месте и система не возобновлялась. Немного подумав, я полез шерстить по конфигам. Итак, найдя файл /etc/uswsusp.conf, я сделал такую правку: Поясню: до этого параметр splash в конфиге не был определён вообще, а image size был равен 236Мб с копейками. Как видно, я явно установил splash = y, для фидбэка в процессе слива образа RAM на диск и в процессе его считывания с диска, а image size в пол-гигабайта (объём RAM на моём ноутбуке — 512Мб). Как ни странно, но после этого всё заработало. Скажу честно, я исходил из ни на чём не обоснованного предположения, что всё дело именно в том, что на диск сливается не весь образ памяти. Это было довольно интуитивное решение. Экспериментировать со значением 0 я не стал, но в man uswsusp.conf написано, что при нулевом значении s2disk будет пытаться сделать образ как можно меньше, сохраняя только самый необходимый минимум.
Теперь s2disk работал. И работал прекрасно. Единственное, чего мне ещё не хватало, это чтобы он срабатывал автоматически при критическом уровне батареи (такая настройка у меня была и ранее — в целях предотвращения потерь данных. Вполне вероятна такая ситуация, когда Вы отойдёте, задержитесь где-то, а тем временем аккумулятор благополучно иссякнет и. ). К сожалению, отрабатывало оно так же, как и усыпление через диалог KDE «Завершить сеанс» -> «Спящий режим», или точнее сказать, не работало вовсе. Linux просто гасил экран, блокировал сеанс KDE, а засыпать даже не думал. Я пользуюсь KLaptop. Так сложилось традиционно, да и просто, он субъективно нравится мне больше всяких там KPowersave. Там вполне можно было прописать, какую команду следует выполнить при критически малом уровне аккумулятора, но мне хотелось универсального решения, ведь для кнопки в KDE’шном завершении сеанса такой параметр не прописан. Механизм работы здесь однако был один. Это я знал по опыту — по одинаковому поведению при попытке усыпить ноутбук через KLaptop и «Завершение сеанса». Немного пошарив по google я нашёл решение. Оказалось, что hibernation здесь срабатывает через hal. Для того, чтобы исправить ситуацию, необходимо было заменить модуль hal, который отвечал за усыпление по требованию клиента. Этот модуль представляет собой нечто иное, как скрипт, лежащий в /usr/lib/halscripts/linux — hal-system-power-hibernate-linux. Моей целью было заставить этот скрипт отрабатывать через s2disk. Первоначально скрипт выглядёл следующим образом:
Из приведённого листинга видно, что сперва скрипт пытается определить дистрибутив, а далее действует исходя из реалий данного дистрибутива. В моём случае hal пытался отработать через pmi — абстактный интерфейс управления энергосбережением. Мне же нужно было, чтобы первым и последним срабатывал s2disk. После исправления скрипт обрёл такой вид: После этого и KLaptop и «Завершение сеанса» работают безупречно.
Кстати, режим suspend-to-ram у меня работал хорошо из коробки (после апгрейда до Feisty Fawn). s2ram напротив работать не хочет, ссылаясь на то, что модель ноута ему не знакома. Поэтому мои настройки энергосбережения закончились доведением до ума режима suspend-to-disk a.k.a. hibernation.
«Вот так мы победили сырость!» (с) Однако, есть ещё над чем поработать. Так, например, мне до сих пор не удалось заставить работать русский в консоли. Самое странное, что на десктопе с установленным Debian 4.0 Etch всё прекрасно работает (console-cyrillic не установлен). При такой же конфигурации на лаптопе оно не работает. Странность в том, что из коробки путём лишь небольших манипуляций после замены дистрибутивного ядра на собственное русский текст в UTF8 отображается в консоли без проблем, но нет возможности набирать русский текст. Вместо него не набирается вообще ничего. Одним словом, проблема всё ещё требует решения. В Edgy Eft в этом плане всё было отлично. Примечательно, что такие проблемы после перехода на Feisty Fawn наблюдаются не только у меня.
Источник