воскресенье, 15 июня 2008 г.

Установка ubuntu 8.04 на eePC

отсюда


Когда я покупал себе 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

Делаем эти файлы исполняемыми:
chmod a+x /etc/acpi/actions/wireless-toggle.sh
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
ifup eth0

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

# Wi-Fi
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, отключаем все логи (имхо, на карманном ноутбуке они не нужны):
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.




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

linux-on-laptops

Linux Laptop & Notebook Installation Guides


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

1 комментарий:

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

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

Можно просто нажимать Esc при загрузке и без всякого Bios