пятница, 13 июня 2008 г.

Установка и настройка Ubuntu 8.04 на ASUS Eee PC


Когда я покупал себе ASUS Eee PC, я совершенно не думал о том, какую операционную систему установлю на нем - однозначно это будет Ubuntu Linux. Во-первых, потому, что Ubuntu у меня стоит и дома и на работе, во-вторых, потому, что и дома и на работе у меня есть локальное зеркало репозитория Ubuntu, а в-третьих просто потому, что данный дистрибутив меня всем устраивает.

После покупки я сразу же полез в Интернет в поисках различных HowTo по установке Ubuntu 8.04 на Eee PC. Результат меня несколько удивил. Несмотря на огромный ажиотаж вокруг Eee PC, этих самых HowTo в сети не так уж и много + большинство из них нацелены на Ubuntu 7.10 и предлагают запустить некий скрипт, который заменит системные конфигурационные файлы своими, заточенными под Eee PC.

На эти скрипты я даже и смотреть не стал, т. к. они предназначены для Ubuntu 7.10, и их запуск на Ubuntu 8.04 может привести к нехорошим последствиям. Поэтому во время поиска необходимой информации в сети я обращал внимание только на те статьи, в которых описывается, как можно настроить Ubuntu под Eee PC "своими руками". Найти такой HowTo, в котором содержались бы ответы на все встающие передо мной вопросы, мне не удалось, поэтому я решил систематизировать собранную мной информацию и слить ее в одну статью. Сейчас моя система уже настроена, поэтому я постараюсь вспомнить все действия, которые я производил над ней, дабы все заработало так, как мне хочется. Надеюсь, я ничего не упущу. :)


Установка

Для установки нам понадобится загрузочный диск с Ubuntu 8.04 и флэшка на 1 Гб или более.
Перед использованием флэшки не забудьте скопировать с нее все важные данные.
# Делаем образ диска
dd if=/dev/cdrom of=ubuntu.iso

# Устанавливаем пакет syslinux
sudo apt-get install syslinux

# Скачиваем скрипт, который запишет ISO-образ на флэшку
wget http://kiwilinux.org/public/isotostick.sh

# Делаем этот скрипт исполняемым
sudo chmod a+x isotostick.sh

# Далее предполагается, что /dev/sdX1 - файл устройства вашей флешки.

# Форматируем флэшку
sudo mkfs.vfat -F 32 -n ubuntu /dev/sdX1

# Делаем раздел загрузочным
sudo parted /dev/sdX set 1 boot on

# Запускаем скачанный скрипт
sudo ./isotostick.sh cd.iso /dev/sdX1

# Делаем флэшку загрузочной
sudo syslinux /dev/sdX1

Все, теперь можно грузиться с этой флэшки как с диска и устанавливать Ubuntu на Eee PC. Для этого во время загрузки Eee PC нажмите F2, чтобы зайти в BIOS и там на вкладке Boot сделайте соответствующие настройки, чтобы загрузка происходила с флэш карты.


Загрузка

Чтобы увеличить скорость загрузки операционной системы, в /boot/grub/menu.lst замените строку
# defoptions=quiet splash
на
# defoptions=quiet splash clocksource=hpet
и запустите
sudo update-grub
Теперь время загрузки операционной системы должно сократиться примерно на 40 секунд.


Выключение

После установки первое, что бросается в глаза - это то, что Ubuntu не хочет выключаться. :) По команде halt запускается процесс остановки системы, останавливаются работающие службы, экран гаснет, но компьютер не выключается.

Чтобы исправить это, открываем /etc/init.d/halt и добавляем строку "modprobe -r snd-hda-intel" в тело функции do_stop, как показано ниже:
....
do_stop () {
modprobe -r snd-hda-intel

if [ "$INIT_HALT" = "" ] 
....


Звук

Добавьте в файл /etc/modprobe.d/snd-hda-intel (если файл не существует, то создайте его) строку
options snd-hda-intel model=3stack-dig


Поддержка горячих клавиш Fn+F[1-9]

Устанавливаем исходные файлы и компилируем из них модуль:
sudo apt-get install module-assistant eeepc-acpi-source
sudo m-a a-i eeepc-acpi
sudo sh -c 'echo eeepc-acpi >> /etc/modules'

Если в будущем вы обновите ядро, то вам придется выполнить команду
sudo m-a a-i eeepc-acpi
которая соберет модуль заново для нового ядра.

У меня заработали не все клавиши. Кнопка засыпания и кнопки увеличения/уменьшения яркости дисплея работают отлично. Про настройку кнопки включения/выключения Wi-Fi я расскажу ниже. Кнопки выключения/уменьшения/увеличения громкости звука не заработали, когда я пытался настроить их по тем HowTo, которые мне попались. Копать глубже в этом направлении я не стал, т. к. лично мне на Eee PC звук не нужен (я его вообще выключил в BIOS'е). Поэтому решение данной проблемы я оставляю вам. :) Если кто напишет в комментариях, как их настроить - буду благодарен, может быть, потом пригодится.


Динамическое изменение частоты процессора

Сразу скажу, что, читая обсуждения на форумах по поводу уменьшения частоты процессора в целях экономии энергии, я часто встречал мнения людей, утверждающих, что сэкономить много времени автономной работы не удастся - максимум 10-15 минут. Сам я никаких тестов не делал, но уменьшение частоты у себя все-таки настроил - может быть хотя бы по-меньше греться будет, да и эти 15 минут тоже не лишние...

Также стоит отметить, что хотя производитель и заявляет, что частота процессора составляет 900 Мгц, на самом деле он работает на частоте 630 Мгц. Судя по отзывам, даже если вы поднимите частоту до 900 Мгц, то прироста производительности вы не получите - для этого необходимо разгонять шину, чем я не стал заниматься - для меня время автономной работы имеет гораздо большее значение.

Итак...

Устанавливаем необходимый нам пакет, позволяющий менять частоту процессора на лету:
sudo apt-get install cpufrequtils
и добавляем в /etc/rc.local следующие строки:
# Включаем динамическое изменение частоты процессора
modprobe p4-clockmod
modprobe cpufreq-ondemand
# Включаем плавное изменение частоты процессора в зависимости
# от нагрузки в диапазоне от 112 Мгц до 675 Мгц. Новое значение
# частоты будет вычисляться каждые 500 мсек.
echo 112500 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
echo 675000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
powernowd -m 1 -p 500
Если в процессе работы скорость реакции приложений вас не будет устраивать, то можно повысить минимальную частоту процессора (список доступных частот можно посмотреть в /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies) или уменьшить значение опции -p утилиты powernowd.


Wi-Fi

Компилируем и устанавливаем необходимый модуль:
sudo apt-get install build-essential
wget 'http://snapshots.madwifi.org/special/madwifi-nr-r3366+ar5007.tar.gz'
tar zxvf madwifi-nr-r3366+ar5007.tar.gz
cd madwifi-nr-r3366+ar5007
make clean
make
sudo make install
sudo reboot
Если в будущем вы будете обновлять ядро, то необходимо будет заново скомпилировать и установить модуль.

Создаем файл /etc/acpi/actions/wireless-toggle.sh со следующими строками:
#!/bin/sh

# main wifi toggle script (loads/unloads modules)

. /usr/share/acpi-support/key-constants

# The sequence here *may* be important.
# (It seems to fail intermittently if you deviate.)
unload_modules() {
rmmod wlan_scan_sta
rmmod wlan_tkip
rmmod wlan_wep
rmmod wlan_ccmp
rmmod wlan_acl
rmmod ath_pci
sleep 1
rmmod ath_rate_atheros
rmmod ath_hal
rmmod wlan
rmmod ath_dfs
}

# At least this one's straightforward.
load_modules() {
modprobe ath_pci
}

wifi_on() {
# Force PCI Express Hotplug to reinit
rmmod pciehp
sleep 1
# pciehp_force may be unnecessary; Xandros did it.
modprobe pciehp pciehp_force=1
sleep 1
# Switch on the hardware
echo 1 >/proc/acpi/asus/wlan
sleep 1
load_modules
}

wifi_off() {
unload_modules
echo 0 >/proc/acpi/asus/wlan
}

case $1 in
on)
acpi_fakekey $KEY_PROG1
wifi_on
;;
off)
acpi_fakekey $KEY_PROG2
wifi_off
;;
toggle)
STAT=`cat /proc/acpi/asus/wlan`
if [ "$STAT" = "1" ];
then wifi_off;
else wifi_on;
fi
;;
esac

Также создаем файл /etc/acpi/eeepc-hotkeys.sh:
#!/bin/sh

code=$3

case $code in
# Fn+F2 - enable/disable wifi
00000010)
/etc/acpi/actions/wireless-toggle.sh on
;;
00000011)
/etc/acpi/actions/wireless-toggle.sh off
;;
esac

Делаем эти файлы исполняемыми:
sudo chmod a+x /etc/acpi/actions/wireless-toggle.sh
sudo chmod a+x /etc/acpi/eeepc-hotkeys.sh

И создаем файл /etc/acpi/events/hotkey, в который записываем:
event=hotkey ATKD
action=/etc/acpi/eeepc-hotkeys.sh %e

Все, теперь Wi-Fi и кнопка его включения/выключения должны работать. В принципе, для подключения к Wi-Fi точке вы можете использовать графические утилиты, но лично мне гораздо удобнее набрать пару слов в консоли, чем щелкать по множеству кнопок. Поэтому:
# Устанавливаем пакет для работы с WPA шифрованием
sudo apt-get install wpasupplicant

Создаем файл /etc/wpa_supplicant/wpa_supplicant.conf следующего содержания:
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
ap_scan=1
fast_reauth=1
eapol_version=1
network={
ssid="ROUTER_ID"
psk="PASSWORD"
priority=5
}
где ROUTER_ID - имя точки доступа, а PASSWORD - пароль для доступа к ней.

Добавляем в /etc/network/interfaces строки:
iface ath0 inet dhcp
wpa-driver wext
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Все, теперь для подключения к точке доступа необходимо выполнить команду
sudo ifup ath0

Если вы используете Wi-Fi точку с открытым доступом, то устанавливать wpasupplicant и создавать файл /etc/wpa_supplicant/wpa_supplicant.conf не нужно - достаточно только добавить в /etc/network/interfaces строки
iface ath0 inet dhcp
pre-up ifconfig ath0 up
pre-up iwconfig ath0 essid "ROUTER_ID"

Разорвать уже установленное соединение можно командой
sudo ifdown ath0

В принципе, можно прописать команды ifup/ifdown в скрипт /etc/acpi/actions/wireless-toggle.sh, чтобы при нажатии на кнопку включения/выключения Wi-Fi автоматически происходило подключение к Wi-Fi точке.


Экономим электроэнергию

Чтобы посмотреть, какие приложения/сервисы заставляют процессор чаще всего переходить из спящего состояния в рабочее, а следовательно, увеличивать расход электроэнергии, воспользуйтесь утилитой powertop.

У меня самыми активными оказались Wi-Fi, USB и Ethernet. Поэтому я добавил в /etc/rc.local следующие строки, которые отключают на этапе загрузки все эти интерфейсы:
# Отключаем Ethernet
/sbin/ifconfig eth0 down

# Отключаем USB
rmmod ehci-hcd
rmmod uhci-hcd

# Отключаем Wi-Fi
/sbin/ifconfig ath0 down

Включаю я их только тогда, когда они мне нужны. Включается они следующими командами:
# Ethernet
sudo ifup eth0

# USB 
sudo modprobe ehci-hcd
sudo modprobe uhci-hcd

# Wi-Fi
sudo ifup ath0

Если нет желания набирать каждый раз все эти команды в консоли, то можно поставить программу Eee PC sm-Control, написанную товарищем Serge_RUS, которая позволяет производить те же действия через графический интерфейс.



SD/SDHC карты

Пока что мне вполне хватает встроенного SSD диска, и покупать дополнительную флэш память я к своему Eee PC не думаю. Но, читая различные HowTo и форумы, я заметил, что у многих возникают проблемы с некоторыми картами памяти. Т. к. у меня пока такой проблемы нет, я не особо интересовался, какие карты лучше покупать и как бороться с проблемами, если они вдруг возникнут. В конце статьи я привел пару ссылок на эту тему, если она для вас актуальна.


Увеличение срока службы SSD

Чтобы уменьшить количество операций записи на SSD, добавьте в /etc/fstab следующие строки, чтобы все временные файлы и логи писались в оперативную память:
tmpfs /tmp tmpfs defaults,noatime,nodiratime 0 0
tmpfs /var/tmp tmpfs defaults,noatime,nodiratime 0 0
tmpfs /var/log tmpfs defaults,noatime,nodiratime 0 0

Внимание! Если вы используете программы, которые создают временные файлы очень большого размера в /tmp, то первую строку добавлять не стоит во избежании нехватки оперативной памяти при создании таких файлов.

В параметрах монтирования раздела SSD диска укажите опции noatime и nodiratime. Т. е. если раздел у вас монтируется строкой
UUID=79d788c4-a8fb-4f03-92c2-e90d4c26b51b    /    ext2    defaults,errors=remount-ro    0    1
то замените ее на
UUID=79d788c4-a8fb-4f03-92c2-e90d4c26b51b    /    ext2    defaults,noatime,nodiratime,errors=remount-ro    0    1
Включение этих опций запрещает обновление времени последнего доступа каждый раз, когда вы обращаетесь к какому-либо файлу или папке на этом разделе.

Если вы не пользуетесь командой locate, то можете удалить (или просто поставить exit 0 после строки #!/bin/sh) файл /etc/cron.daily/mlocate. Этот скрипт запускается каждый день и обновляет базу locate, содержащую пути всех файлов в системе (очень удобно использовать locate, если необходимо быстро найти какой-нибудь файл по имени - каманда find работает значительно медленнее, т. к. использует не готовую базу данных, а каждый раз просматривает все дерево каталогов). Если же вы пользуетесь locate'ом, то можно переместить /etc/cron.daily/mlocate в /etc/cron.weekly/, чтобы база обновлялясь раз в неделю.

Также, чтобы уменьшить количество операций записи на SSD, отключаем все логи (имхо, на карманном ноутбуке они не нужны):
sudo apt-get remove klogd sysklogd logrotate


Экономим место на SSD

Установите пакет localepurge. Он запросит у вас список локалей, которые вам нужны, и удалит все остальные. localepurge также будет автоматически запускаться при каждом запуске apt.

Запустите Synaptic, зайдите в меню Settings->Preferences, перейдите на вкладку Columns and Fonts и поставьте флажок напротив поля Installed Size. Теперь в списке пакетов появится еще одна колонка - Size. Если пакет установлен, то в этой колонке будет отображен размер, который занимают файлы данного пакета. Отсортируйте список пакетов по этой колонке и удаляйте все ненужные пакеты, которые занимают много места.


Компактная тема

Чтобы увеличить количество полезной информации, отображаемой на относительно небольшом экране Eee PC, рекомендую вам установить компактную тему для GTK - Human Compact.





Чтение книг

Для чтения книг могу порекомендовать FBReader.




Ссылки по теме

DebianEeePC/HowTo/Wifi
Ubuntu 8.04 (Hardy Heron) on the Asus Eee PC
(Un)supported Hardware
Проблемы с SDHC и их решение
Установка Ubuntu на Eee PC
Установка и настройка Ubuntu

22 комментария:

Анонимный комментирует...

Очень интересный и подробный обзор! Спасибо :-)

Анонимный комментирует...

Круто! Очень подробно и хорошо написано. Может кросспост на хабрахабр?

Dmitry Konishchev комментирует...

Спасибо за отзывы. Рад, что не зря старался. :)

A.I., а почему бы и нет... Сделал кросспост.

Анонимный комментирует...

А почему не попробывать готовые решения?
http://www.eeebuntu.org/

Dmitry Konishchev комментирует...

Анонимный, ну хотя бы потому, что эти решения рассчитаны на среднестатистического пользователя, а, следовательно, их настройки не оптимальны. Например, судя по скриншотам, eeebuntu разгоняет процессор до 900 Мгц, что явно уменьшит время автономной работы. В итоге после установки такого специализированного дистрибутива придется искать в интернете HowTo на тему "как отключить такую-то функцию в дистрибутиве XXX" - думаю, таких HowTo будет гораздо меньше. :)

К тому же, насколько я понимаю, значительная часть нововведений в таких дистрибутивах приходится на графические утилиты для установленной по умолчанию среды окружения (в eeebuntu это Gnome). Я же предпочитаю графическим средам оконный менеджер IceWM, поэтому в итоге, например, Wi-Fi мне все равно придется настраивать руками.

Да и в конце концов не так уж и много надо сделать для адаптации Ubuntu под Eee PC, чтобы стоило ставить другой дистрибутив и получать от него дополнительные баги. Тут же, если я чего и делаю, то делаю собственными руками, и если что-нибудь сломается, буду хотя бы примерно представлять, кого винить...

Имхо. :)

Анонимный комментирует...

Ненавязчиво попрошу указать автора этой программы для off/on оборудования на Eee PC... ;)

Dmitry Konishchev комментирует...

Анонимный, ммм... Ни сайта, ни автора мне найти не удалось - единственное упоминание есть в исходных текстах программы - псевдоним Serge_RUS и email адрес.

Псевдоним я указал. Email адрес не стал указывать, дабы не добавить автору проблем со спамом. Если Вы - Serge_RUS и одобряете выкладывание вашего email'a в открытом виде, то приведу и его.

Анонимный комментирует...

Дельная статья. Но дизайн очень неудобный. Или он тоже для eeePC рассчитан?

Dmitry Konishchev комментирует...

> Дизайн очень неудобный. Или он тоже для eeePC рассчитан?

Анонимный, дизайн чего? Блога? Это стандартный Blogger'овский шаблон. Если вы про ширину - то мне тоже не очень нравится, что он такой узкий. Но, как правило, для Blogger'а существуют 2 вида шаблонов: узкие и "резиновые", которые растягиваются на весь экран. Я бы себе давно поставил "резиновый", если бы не один, на мой взгляд, довольно существенный недостаток - как правило, в "резиновых" шаблонах все поля делаются "резиновыми", т. е. задаются в процентах, хотя, на мой взгляд, такие элементы как колонки по бокам стоит делать фиксированной ширины, т. к., например, на моем широкоэкранном мониторе они растягиваются до слишком больших размеров и портят весь дизайн.

Самому же писать свой шаблон или дорабатывать чужой ну уж очень не хочется. :) Хотя, может быть, и правда стоит задуматься о смене шаблона, чтобы не отпугивать читателей. :)

Спасибо большое за отзыв!

Анонимный комментирует...

(Я-Другой Анонимный:)
Наоборот, очень хорошо что
блог узкий - меньше режет глаза.
Будет еще лучше, если и
по высоте ограничить (то есть
выводить текст в маленьком окне,
которое прокручивать).
Кстати справа фон приятный зеленый.
Да и статья интересная, хотя
я и не линуксоид.

Dmitry Konishchev комментирует...

Да, сколько людей, столько и мнений. :)

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

Спасибо за отзыв!

Анонимный комментирует...

Прекрасная статья, спасибо
Я как раз хотела попробовать убунту. Вот на http://osnavigator.narod.ru нашла подробный материал по установка на виртуальную машину и на жесткий диск, а теперь вот еще и на ASUS Eee PC.
Я его собиралась покупать.
Надо попробовать

Tay комментирует...

спасибо большое очень помог материал, тока вчера приобрел сей девайс и думал буду мучаться настраивать. еще раз спасибо хороший материал

Анонимный комментирует...

когда редактирую файл

You do not have the permissions necessary to save the file. Please check that you typed the location correctly and try again.
какие права ? что значит не там ?

Dmitry Konishchev комментирует...

Анонимный, для редактирования системных файлов необходимо иметь привилегии пользователя root. Откройте файл командой
sudo gedit filename
sudo даст gedit'у привилегии пользователя root, и вы сможете сохранить файл.

Анонимный комментирует...

Wi-fi

cd madwifi-nr-r3366+ar5007
дает результат
bash: cd: madwifi-nr-r3366+ar5007: No such file or directory

какая директория имелась ввиду?

+

chmod a+x /etc/acpi/actions/wireless-toggle.sh
chmod: changing permissions of `/etc/acpi/actions/wireless-toggle.sh': Operation not permitted

chmod a+x /etc/acpi/eeepc-hotkeys.sh
chmod: changing permissions of `/etc/acpi/eeepc-hotkeys.sh': Operation not permitted

что делать ?

Dmitry Konishchev комментирует...

> какая директория имелась ввиду?
Та, которая появляется в результате распаковки архива madwifi-nr-r3366+ar5007.tar.gz с Wi-Fi модулем командой tar zxvf madwifi-nr-r3366+ar5007.tar.gz. Проблема у вас возникла потому, что данный модуль больше не доступен по адресу http://snapshots.madwifi.org/special/madwifi-nr-r3366+ar5007.tar.gz, но вы можете скачать его тут: http://ifolder.ru/6966234.

> chmod a+x /etc/acpi/actions/wireless-toggle.sh
> chmod: changing permissions of `/etc/acpi/actions/wireless-toggle.sh': Operation not permitted
>
> chmod a+x /etc/acpi/eeepc-hotkeys.sh
> chmod: changing permissions of `/etc/acpi/eeepc-hotkeys.sh': Operation not permitted

Вам опять не хватает привилегий для выполнения команд. Запустите их через sudo:
sudo chmod a+x /etc/acpi/actions/wireless-toggle.sh
sudo chmod a+x /etc/acpi/eeepc-hotkeys.sh

Анонимный комментирует...

Присоединяюсь к благодарностям! отличный и простой для восприятия материал! Являясь новичком Linux системах нашел все что мне на данный момент было необходимо! еще раз спасибо!

Nigger комментирует...

Хорошая статья. Аффтару огромное человеческое спасибо =)

Анонимный комментирует...

спасибо огромное...так обрадовалась когда нашла статью...тк не грузится с флешки....асус думает и не пускает линукс утанавливаться....проработаю по советам...спасиб ещё раз!!!

Анонимный комментирует...

Добрый день!
Отличная инструкция! Большое спасибо!
Не могли бы вы поделится нынешним местоположением архива madwifi-nr-r3366+ar5007.tar.gz ?
На ifolder он более не доступен.
Заранее большое спасибо!

Dmitry Konishchev комментирует...

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