Показаны сообщения с ярлыком ubuntu. Показать все сообщения
Показаны сообщения с ярлыком ubuntu. Показать все сообщения

четверг, 10 декабря 2009 г.

Setup Ruby Enterprise Edition, nginx and Passenger (aka mod_rails) on Ubuntu

The following is a very short guide on setting up Ruby Enterprise Edition (REE), nginx and Passenger, for serving Ruby on Rails applications on Ubuntu. It also includes a few quick and easy optimization tips.

We start with setting up REE (x64), using the .deb file provided by Phusion:

wget http://rubyforge.org/frs/download.php/66163/ruby-enterprise_1.8.7-2009.10_amd64.deb
sudo dpkg -i ruby-enterprise_1.8.7-2009.10_amd64.deb
ruby -v

In output you should see “ruby 1.8.7 (2009-06-12 patchlevel 174)…” or similar. If this is the case, good; while you are there, update RubyGems and the installed gems:

sudo gem update --system
sudo gem update

Next, you’ll need to install nginx, which is a really fast web server. The Phusion team has made it very easy to install, but if you simply follow most instructions found elsewhere, you’ll get the following error:

checking for system md library ... not found
checking for system md5 library ... not found
checking for OpenSSL md5 crypto library ... not found

./configure: error: the HTTP cache module requires md5 functions
from OpenSSL library. You can either disable the module by using
--without-http-cache option, or install the OpenSSL library in the
system,
or build the OpenSSL library statically from the source with nginx by
using
--with-http_ssl_module --with-openssl=
options.

Instead, we are going to install libssl-dev first and then nginx and its Passenger module:

sudo aptitude install libssl-dev
sudo passenger-install-nginx-module

Follow the prompt and accept all the defaults (when prompted to chose between 1 and 2, pick 1).

Before I proceed with the configuration, I like to create an init script and have it boot at startup (the script itself is adapted from one provided by the excellent articles at slicehost.com):

sudo vim /etc/init.d/nginx

The content of which needs to be:

#! /bin/sh

### BEGIN INIT INFO
# Provides: nginx
# Required-Start: $all
# Required-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts the nginx web server
# Description: starts nginx using start-stop-daemon
### END INIT INFO

PATH=/opt/nginx/sbin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/opt/nginx/sbin/nginx
NAME=nginx
DESC=nginx

test -x $DAEMON || exit 0

# Include nginx defaults if available
if [ -f /etc/default/nginx ] ; then
. /etc/default/nginx
fi

set -e

. /lib/lsb/init-functions

case "$1" in
start)
echo -n "Starting $DESC: "
start-stop-daemon --start --quiet --pidfile /opt/nginx/logs/$NAME.pid \
--exec $DAEMON -- $DAEMON_OPTS || true
echo "$NAME."
;;
stop)
echo -n "Stopping $DESC: "
start-stop-daemon --stop --quiet --pidfile /opt/nginx/logs/$NAME.pid \
--exec $DAEMON || true
echo "$NAME."
;;
restart|force-reload)
echo -n "Restarting $DESC: "
start-stop-daemon --stop --quiet --pidfile \
/opt/nginx/logs/$NAME.pid --exec $DAEMON || true
sleep 1
start-stop-daemon --start --quiet --pidfile \
/opt/nginx/logs/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS || true
echo "$NAME."
;;
reload)
echo -n "Reloading $DESC configuration: "
start-stop-daemon --stop --signal HUP --quiet --pidfile /opt/nginx/logs/$NAME.pid \
--exec $DAEMON || true
echo "$NAME."
;;
status)
status_of_proc -p /opt/nginx/logs/$NAME.pid "$DAEMON" nginx && exit 0 || exit $?
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart|reload|force-reload|status}" >&2
exit 1
;;
esac

exit 0

Change its permission and have it startup at boot:

sudo chmod +x /etc/init.d/nginx
sudo /usr/sbin/update-rc.d -f nginx defaults

From now on, you’ll be able to start, stop and restart nginx with it. Start the server as follows:

sudo /etc/init.d/nginx start

Heading over to your server IP with your browser, you should see “Welcome to nginx!”. If you do, great, we can move on with the configuration of nginx for your Rails app.

Edit nginx’ configuration file:

sudo vim /opt/nginx/conf/nginx.conf

Adding a server section within the http section, as follows:

server {
listen 80;
server_name example.com;
root /somewhere/my_rails_app/public;
passenger_enabled on;
rails_spawn_method smart;
}

The server name can also be a subdomain if you wish (e.g., blog.example.com). It’s important that you point the root to your Rails’ app public directory.

The rails_spawn_method directive is very efficient, allowing Passenger to consume less memory per process and speed up the spawning process, whenever your Rails application is not affected by its limitations (for a discussion about this you can read the proper section in the official guide).

If you have lots of RAM (e.g., more than 512 MB) on your server, you may want to consider increasing you maximum pool size, with the directive passenger_max_pool_size from its default size of 6. Conversely, if you want to limit the number of processes running at any time and consume less memory on a small VPS (e.g., 128 to 256MB), you can decrease that number down to 2 (or something in that range). (Always test a bunch of configurations to find one that works for you). You can read more about this directive, in the official guide.

While you are modifying nginx’ configuration, you may also want to increase the worker processes (e.g., to 4, on a typical VPS) and add a few more tweaks (such as enabling gzip compression):

# ...
http {
passenger_root /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.5;
passenger_ruby /usr/local/bin/ruby;

include mime.types;
default_type application/octet-stream;

access_log logs/access.log;

sendfile on;
keepalive_timeout 65;
tcp_nodelay on;

gzip on;
gzip_comp_level 2;
gzip_proxied any;

server {
#...

When you are happy with the changes, save the file, and restart nginx:

sudo /etc/init.d/nginx restart

If you wish to restart Passenger in the future, without having to restart the whole web server, you can simply run the following command:

touch /somewhere/my_rails_app/tmp/restart.txt

Passenger also provides a few handy monitoring tools. Check them out:

sudo passenger-status
sudo passenger-memory-stats

That’s it, you are ready to go! I hope that you find these few notes useful.

суббота, 14 ноября 2009 г.

PXE: теперь не только для серверов

PXE: теперь не только для серверов

Оригинал: PXE: Not Just for Server Networks Anymore!
Автор: Bill Childers
Дата: 1 апреля 2009
Перевод: Александр Тарасов aka oioki
Дата перевода: 7 ноября 2009

В апрельском выпуске 2008 года Linux Journal была напечатана статья Кайла Ранкина (Kyle Rankin) "PXE Magic", описывающая способ работы PXE (Preboot eXecution Environment, Среда предзагрузочного исполнения), инструкцию по установке своего собственного PXE-сервера и включению аварийных средств вроде Knoppix в PXE-установщик Kickstart. Мне эта статья очень помогла, однако теперь у меня встала задача обслуживания не только сети Linux-серверов, а всей сети, состоящей из ноутбуков, рабочих станций и серверов с установленными Ubuntu и Windows. Я представил, как было бы здорово иметь сервер, с помощью которого можно было бы устанавливать не только сервера и загружать по сети аварийные средства, но также создавать временные рабочие окружения для пользователей, в том случае, если что-нибудь сломается. Было бы идеально, если бы с помощью этого PXE-сервера можно было бы по сети устанавливать Windows. Через несколько часов проб и ошибок, я, наконец, создал рецепт и, по странному стечению обстоятельств, я сумел наладить сетевую установку Windows... сперва разворачивая Linux.

Установка терминального сервера Ubuntu

Одной из моих целей при создании такой системы была возможность предоставления пользователям такой среды, которую они могли бы быстренько загрузить, чтобы она была привычна для них, и позволяла бы выполнять простейшие действия - проверить почту, зайти на сайт, отправить мгновенное сообщение и т.п. К счастью, большинство персонала в моей компании пользуется на рабочих компьютерах системой Ubuntu, поэтому ясно вырисовалось решение установить и настроить терминальный сервер Ubuntu на основе проекта Linux Terminal Server Project (LTSP).

Как любая реализация PXE, сервер LTSP требует наличия TFTP-сервера, правильно настроенного DHCP-сервера и программы syslinux. Если объяснять простыми словами, то процесс происходит так. Пользователь загружает свой компьютер, сетевой адаптер выполняет PXE-код, компьютер получает с помощью DHCP свой IP-адрес и IP-адрес сервера, на котором хранится код syslinux. Затем запускается TFTP-клиент, код syslinux скачивается и исполняется, таким образом начинается процесс загрузки. Благодаря кропотливому труду разработчиков Ubuntu LTSP, установка такого сервера происходит быстро и легко.

Есть два способа установки LTSP-сервера: обычный и самостоятельный. В первом случае предполагается, что у вас в сети уже есть существующий DHCP-сервер; а самостоятельный способ подразумевает отсутствие DHCP-сервера. В случае самостоятельной установки в вашей сети будет установлен DHCP-сервер с последующей автоматической интеграцией с LTSP-сервером. В моей сети уже был DHCP-сервер, поэтому я выбрал обычную установку с интеграцией с нашим существующим Windows Server DHCP.

Замечания по DHCP

Я упомянул интеграцию LTSP-сервера с сервером DHCP для Microsoft Windows, но отнюдь несложно заставить работать LTSP в связке с любым другим DHCP-сервером. Если у вас DHCP стандартной реализации (от Internet Software Consortium), тогда обратитесь к уже упоминавшейся статье Кайла "PXE Magic" (см. источники информации в конце статьи). В этой статье приведен пример необходимых настроек и объяснения, как они работают. Если ваш сервер - dnsmasq (он популярен в OpenWRT и других легковесных Linux-дистрибутивах для встраиваемых систем), то нужно добавить в файл dnsmasq.conf опции dhcp-option=66, и dhcp-option=pxe,67,pxelinux.0. Именно такая конфигурация работает у меня дома.

Я начал с установки стандартной десктопной Ubuntu 8.04 на сервер Dell 1950, ведь LTSP-сервер должен предоставлять пользователям рабочее окружение GNOME. После этого назначил серверу статический IP-адрес из диапазона адресов нашей сети (в той же подсети, что и рабочие станции и ноутбуки). Установка LTSP-сервера происходит проще некуда - просто наберите в терминале GNOME команду sudo apt-get install ltsp-server openssh-server, и он будет установлен. Последним шагом, относящимся к LTSP-серверу, является построение системы "тонких клиентов". Просто скомандуйте в терминале sudo ltsp-build-client, и остальные настройки и построение LTSP-окружения chroot будет выполнено автоматически.

Теперь, когда сам LTSP-сервер готов, нужно включить поддержку PXE-загрузки в нашей сети, а это означает дополнительное конфигурирование Windows DHCP-сервера. Потребовалось достаточно много времени и сил, но как и в статье Кайла, на стороне DHCP-сервера потребовалось изменить всего лишь две настройки. В Microsoft DHCP-сервере этими настройками были "066 Boot Server Host Name", которой я присвоил значение IP-адреса LTSP-сервера и настройка "067 Bootfile Name", значение которой нужно присвоить "ltsp/i386/pxelinux.0". Это значение поначалу казалась непонятным, пока я не уяснил, что корневым каталогом TFTP-сервера Ubuntu является /var/lib/tftpboot. Если у вас стоит какой-нибудь другой DHCP-сервер, тогда вам может помочь врезка "Замечания по DHCP", либо обратитесь к документации по вашему DHCP.


Рисунок 1. Окно входа в Ubuntu LTSP

На данный момент можно загрузить компьютер в нашей сети, нажать F12, выбрать в качестве загрузочного устройства сетевую карту и через 30 секунд вы получите окно входа GDM. У меня получилось бы войти, но я бы сделал это как один из пользователей на самом Ubuntu-сервере. Близко, но не совсем то, что мне нужно. В идеале, нужно настроить так, чтобы LTSP-сессию мог открыть любой пользователь из Windows-домена. Таким образом, нужно добавить этот сервер в Active Directory моего предприятия. Сама по себе эта задача не проста, но в системе Ubuntu 8.04 и выше, это можно сделать с помощью apt-get и пары других команд.

Пакет, который все это делает, называется likewise-open. Сначала нужно скомандовать:

sudo apt-get install likewise-open

И пакет likewise будет установлен. После этого нужно включить Ubuntu-сервер в Windows-домен. Для этого командуйте:

sudo domainjoin-cli join  

Если требуется, чтобы likewise запускался при загрузке компьютера, тогда нужно выполнить такую команду:

sudo update-rc.d likewise-open defaults

Также я хотел, чтобы логины проверялись в домене по умолчанию, для этого я добавил эту строку в файл /etc/samba/lwiauthd.conf:

winbind use default domain = yes

Наконец, запускаем демон likewise-open с помощью:

sudo /etc/init.d/likewise-open start

Теперь мои PXE LTSP клиенты могут аутентифицировать себя в корпоративной Active Directory. Первый шаг нашей задачи выполнен!


Рисунок 2. Рабочий стол Ubuntu - работает!

Настройка установки Windows по PXE через Unattended

Следующий шаг в моих приключениях с PXE - переустановка Windows на 30 ноутбуках. Старый системный администратор устанавливал Windows через образы. К сожалению, мне не удалось найти эти файлы образов. Из-за некоторых нюансов и нехватки времени для пересоздания правильных образов для каждой аппаратной платформы, я выбрал проведение установки Windows через Unattended.

Мне известно, что вместе с Windows поставляется Remote Installation Service (RIS, Сервис удаленной установки), но так как у меня не было времени, мне не хотелось изучать полностью новую технологию. Однако у меня был другой выбор: открытый проект Unattended. Unattended попалась мне на глаза примерно год назад, и хотя я пробовал ее дома, но никогда не задействовал в корпоративных условиях. Как и многие администраторы Linux, когда я слышу слово "Windows", у меня мурашки бегут, но так как мне поручили это задание, то его нужно сделать. Я понял, что лучше решать эту задачу наиболее умным способом - не терять времени зря и автоматизировать установку Windows.

Работа Unattended основана на том факте, что первый шаг в установке Windows 2000/XP - это по сути DOS-программа. Процессы, происходящие при PXE-загрузке через Unattended, довольно запустанны, но зато это дает большую гибкость. В простейшем случае, компьютер загружает ядро Linux и оболочку, далее вступают в действие скрипты Unattended. Скрипт разбивает системный диск на разделы и создает базовую структуру FAT, затем вы выбираете операционную систему (например, тип Windows-системы), настройки конфигурации и дополнительные программы. Когда вы устанавливаете Windows по-обычному, вам задают много вопросов о серийном номере, имени пользователя, к какой рабочей группе или домену присоединять, и о пользователях с правами администратора. Скрипты Unattended автоматически собирают эти данные воедино и создают файл unattend.txt, который складывается на свежесозданной файловой системе FAT. Затем запускается сессия FreeDOS, в которой с Samba-ресурса на сервере Unattended копируются установщик Windows и части операционной системы, и, наконец, запускается установщик, задействующий файл unattend.txt. После этого установка будет происходить самостоятельно, без вмешательства администратора. Разработчики из команды Unattended пошли еще дальше и создали разные скрипты, устанавливающие дополнительные программы (к примеру, автоматизированная VPN или Microsoft Office). Эти скрипты можно включить в свою конфигурацию.

По причине отсутствия такого понятия, как "пакет Unattended", процесс установки значительно отличается от стандартных ./configure && make install, и пришлось усердно штудировать документацию на сайте. Вкратце, система Unattended использует PXE и Linux, а также Samba для передачи установочных данных, также в ней содержится набор Perl, shell и batch-скриптов, которые выполняют всю установочную "магию".

В документации предполагается, что у вас есть рабочие DHCP- и DNS-серверы, а также Samba-сервер. У меня уже был установлены DHCP- и DNS-сервер, а Samba-сервер я установил с помощью команды sudo apt-get install samba. Потом я скачал дистрибутив Unattended с веб-сайта и распаковал его в /opt/unattended. Далее, создал CNAME-запись на нашем DNS-сервере, который отображал имя ntinstall на реальное имя хоста - установочного сервера. После этого я настроил Samba-сервер, файл конфигурации /etc/samba/smb.conf выглядит примерно следующим образом (некоторые части файла опущены):

[global]
...
guest account = guest
unix extensions = off
...
[install]
comment = Unattended
writable = no
locking = no
path = /path/to/unattended/install
guest ok = yes

Наконец, пришло время заполнить место, предназначенное для дистрибутива ОС, данными Windows. Мы создаем подкаталог в каталоге корень_unattended/install/os с именем вашего дистрибутива. В моем случае я создал каталог /opt/unattended/install/os/winxp и примонтировал этот каталог через Samba на свой рабочий стол. Затем я вставил установочный диск Windows в CD-привод и скопировал с диска каталог /i386 в каталог /install/os/winxp на моем сервере. Теоретически, теперь мой сервер Unattended был готов к предоставлению установки системы... но пока не было способа выбрать установку Unattended из загрузочного меню.

Тут мне опять помогла статья Кайла. Мне нужно было не что иное, как загрузочное меню PXE, и благодаря статье Кайла, мне удалось быстренько его создать. Нужно было взять файлы bzImage и initrd из каталога tftpboot, хранящегося в zip-файле linuxboot на сайте Unattended. Эти файлы нужно поместить в каталог /var/lib/tftpboot/ltsp/i386/ (я переименовал файл bzImage в unat, а файл intird - в unatin.img, чтобы лучше их различать).

Затем я создал на сервере файл /var/lib/tftpboot/ltsp/i386/pxelinux.cfg/default (см. листинг 1). В нем содержится набор загрузочных аргументов syslinux, соответствующий конфигурациям серверов LTSP и Unattended. Нужно обратить особое внимание на директивы DISPLAY и LABEL. Директива DISPLAY означает, что при загрузке компьютера будет отображено содержимое файла pxemenu.msg, в котором содержится текст меню. Директива LABEL - это то, что нужно ввести, чтобы произошла загрузка определенного вида. В данном случае, если пользователь введет "1", система загрузит Ubuntu LTSP сессию (кстати, это вариант по умолчанию), а если введет "2", то сможет установить Windows.

Листинг 1. Пример файла pxelinux.cfg/default

default 1
serial 0,9600n8
timeout 300
prompt 1
DISPLAY pxemenu.msg
F1 pxemenu.msg

LABEL 1
KERNEL vmlinuz
APPEND ro initrd=initrd.img quiet splash

LABEL 2
KERNEL unatµ
APPEND initrd=unatin.img z_user=guest z_password=guest z_path=//192.168.1.20/install

Теперь при загрузке PXE-клиента у меня есть выбор - загрузить сессию Ubuntu LTSP или провести Unattended-установку. На данный момент установка Windows через Unattended мной протестирована и работает - установка базовой Windows происходит хорошо, но при этом не устанавливаются никакие драйверы, и не накладываются патчи. Я понял, как сильно я прикипел к менеджеру обновлений Ubuntu, но мне пришлось смириться с этим и искать способ довести систему полностью до рабочего состояния, чтобы установка драйверов и обновлений происходила без моего вмешательства.


Рисунок 3. Какую программу запустим?

Мне не пришлось изобретать колесо, потому что проблема с драйверами и обновлениями адресована на самом деле ребятам из Unattended. Существует способ встроить DriverPacks (это большой сжатый архив с драйверами) в систему Unattended. Описание этого метода уже выходит за рамки данной статьи, но если вам понадобится, обратитесь к соответствующей ссылке в конце статьи.

Что касается автоматической установки обновлений, то ребята из Unattended выбрали Linux-подобный подход. В каталоге Unattended есть два каталога - /install/scripts и /install/tools. Каталог scripts содержит Windows batch-файлы (с расширением .bat), они используются для проведения автоматической установки различного программного обеспечения, а также некоторых обновлений. Каталог tools содержит набор скриптов, которые будут получать текущую конфигурацию с вашего Unattended-сервера и содержимое scripts на сервере и сравнивать его с содержимым CVS-хранилища, поддерживаемого командой Unattended. Затем скрипты скачают последние bat-файлы и разместят их в соответствующем месте каталога scripts. На данный момент при установке Windows через систему Unattended также автоматически скачиваются все патчи и устанавливаются без вмешательства пользователя. После очередной перезагрузки система возьмет следующий неустановленный патч, установит его и так продолжится до полного обновления системы. Обновление вашей системы Unattended до актуального состояния происходит с помощью трех последовательных команд ./script-update; ./check; ./prepare, выполненных из каталога /install/tools из корня Unattended.


Рисунок 4. Windows устанавливается! Быстрее и надежней - вот это спорно.

CVS-архив скриптов, как и архив скриптов на вики - бесценны. Эти ресурсы помогли мне выстроить автоматизированную систему установки, и теперь у меня есть конфигурация, которая полностью удовлетворяет потребности моей компании в Windows. Теперь я могу ввести данные, относящиеся к компьютеру (буквально несколько секунд), и я могу спокойно гулять по своим делам, зная, что Windows, Office, Cisco VPN client, Symantec Anti-Virus и многие другие программы будут установлены автоматически без моего присутствия и без присутствия вообще кого-либо.

В заключение я хотел бы сказать, что благодаря усилиям разработчиков Ubuntu и LTSP, теперь у меня есть окружение, позволяющее пользователям работать даже при поломанной основной системе. И благодаря разработчикам Unattended, мне не приходится каждый раз нянчиться с установкой Windows, либо ставить Windows через полуготовые образы или другие странные способы. У меня уже есть идеи, как еще больше расширить эту систему.

Источники информации

"PXE Magic: Flexible Network Booting with Menus" от Кайла Ранкина (Выпуск журнала LJ от апреля 2008): www.linuxjournal.com/article/9963

Ubuntu Wiki - Установка LTSP: https://help.ubuntu.com/community/UbuntuLTSP/LTSPQuickInstall

Аутентификация Active Directory в Ubuntu 8.04 и 8.10: anothersysadmin.wordpress.com/2008/04/06/howto-active-directory-authentication-in-ubuntu-804

Unattended: система развертывания Windows: unattended.sourceforge.net

Пошаговые инструкции Unattended: unattended.sourceforge.net/step-by-step.php

Unattended Wiki: ubertechnique.com/unattended/FrontPage

Использование DriverPacks с Unattended: ubertechnique.com/unattended/BTS_Driver_Packs

Архив скриптов Unattended: ubertechnique.com/unattended/Scripts

Билл Чайлдерс (Bill Childers) - IT-менеджер из Силиконовой долины, где он живет со своей женой и двумя детьми. Ему слишком нравится Linux, возможно, ему нужно почаще выходить на солнышко. В свое свободное время посещает фестиваль чеснока в Гилрое, но он вовсе не пахнет чесноком.


понедельник, 8 июня 2009 г.

Менеждер обновлений в Ubuntu 9.04 и его раздражающее поведение

отсюда взято

В прошлый раз мы остановились на том, что после установки системы сразу же появилось свернутое окно менеджера обновлений. Именно о его поведении и пойдёт речь в этой статье.

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

Внезапно появляется окно со списком обновлений

Внезапно появляется окно со списком обновлений

К счастью есть возможность вернуть способ уведомления об обновлениях так, как это происходило в 8.10 или 8.04 (на панели просто появлялся желтый значок, сообщающий об обновлениях программ).

Всё что для этого нужно, это программа Терминал и пару команд. Только не нужно пугаться и убегать. Это можно сделать и через графическую систему, но через Терминал намного быстрее.

Запускаем Терминал:

Запускаем Терминал

Запускаем Терминал

Эта команда как раз и отключает внезапное появление окна со списком доступных обновлений (просто скопируйте эту команду в Терминал и нажмите Enter):

gconftool -s --type bool /apps/update-notifier/auto_launch false

На этом можно было бы и остановиться, но есть ещё парочка полезных опций, включать их или нет – решать Вам.

Следующая команда задаёт интервал проверки доступных обновлений. По-умолчанию он равен 7 дней, мы же поставим 1 день (просто скопируйте эту команду в Терминал и нажмите Enter):

gconftool -s --type int /apps/update-notifier/regular_auto_launch_interval 1

И ещё одна полезная опция, которая будет отображать с какой и на какую версию будут обновлены пакеты (просто скопируйте эту команду в Терминал и нажмите Enter):

gconftool -s --type bool /apps/update-manager/show_versions true

У меня это выглядит так:

После ввода команд

После ввода команд

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

Для чистоты эксперимента я перезагружу Ubuntu (хотя это делать не обязательно, это не Windows).

Перезагружаю компьютер

Перезагружаю компьютер

После загрузки системы и прошествии нескольких минут, на панели возле часов появился значок, показывающий о наличии обновлений. Никаких внезапно появляющихся окон. Что и требовалось показать:

Значок – красный, а не жёлтый – т.к. имеются критические обновления системы

Значок, уведомляющих об обновлениях

Значок, уведомляющих об обновлениях

Если щелкнуть по этому значку левой кнопкой мыши, то появиться окно со списком доступных обновлений:

Список доступных обновлений

Список доступных обновлений

Рассмотрим, например, пакет apport-gtk:

Пакет apport-gtk

Пакет apport-gtk

Видите подпись под пакетом?:

С версии … на … (Размер: …)

Именно для отображения этой информации и вводилась последняя команда в терминале. Иногда эта информация бывает полезной.

Надеюсь эта статья будет полезной для вас. До встречи!

понедельник, 9 февраля 2009 г.

установка ruby on Rails в Ubuntu 8.10


# General/Pre-requisite packages
aptitude install \
build-essential \
screen \
subversion \
mysql-client \
telnet \
meld \
vim \
vim-gnome \
exuberant-ctags \
tk8.5 \
apache2-prefork-dev \
rcov

# mysql server
# use apt-get to avoid installing exim4
DEBIAN_FRONTEND=noninteractive apt-get install --assume-yes \
mysql-server mysql-client \
libmysqlclient15-dev libmysql-ruby1.8


# git
mkdir gitcore
cd gitcore
wget http://kernel.org/pub/software/scm/git/git-1.6.0.3.tar.gz
apt-get build-dep git-core --assume-yes
tar xzvf git-1.6.0.3.tar.gz
cd git-1.6.0.3/
./configure
make
make install
cd

# Ruby
aptitude --assume-yes install ruby1.8-dev ruby1.8 ri1.8 rdoc1.8 \
irb1.8 libreadline-ruby1.8 libruby1.8 libopenssl-ruby
ln -s /usr/bin/ruby1.8 /usr/local/bin/ruby;
ln -s /usr/bin/ri1.8 /usr/local/bin/ri;
ln -s /usr/bin/rdoc1.8 /usr/local/bin/rdoc;
ln -s /usr/bin/irb1.8 /usr/local/bin/irb;
ln -s /usr/local/bin/ruby /usr/bin/ruby

# Rubygems. You REALLY don't want to let aptitude install rubygems.
wget http://rubyforge.org/frs/download.php/45905/rubygems-1.3.1.tgz
cd rubygems-1.3.1
ruby setup.rb
ln -s /usr/bin/gem1.8 /usr/bin/gem
for g in rails rake capistrano capistrano-ext hpricot treetop ruby-debug term-ansicolor mongrel cheat passenger annotate-models rak; do gem install $g; done

среда, 1 октября 2008 г.

TimeMachine для ubuntu

FlyBack программа повторяющая функционал эпловской программы бакупов

До установки проверяем установку питоновских пакетов
sudo apt-get install python python-glade2 python-gnome2 python-sqlite python-gconf rsync
Затем загружаем
svn checkout http://flyback.googlecode.com/svn/trunk/ flyback
и запускаем скрипт
python flyback.py

Делаем свой дистрибутив

C помощью Remastersys можно сделать две вещи:

  1. Полный бекап своей системы, включая персональные данные,и создать его в виде LiveCD или DVD для последующей инсталляции.
  2. Сделать свой дистрибутив на основе Ubuntu для себя или поделиться им с кем-нибудь.

Установка Remastersys в Ubuntu

Добавляем репозиторий в /etc/apt/sources.list
sudo gedit /etc/apt/sources.list
и вносим следующую строчку:
# Remastersys
deb http://www.remastersys.klikit-linux.com/repository remastersys/
Сохраняем файл.

Обновляем source list
sudo apt-get update
Устанавливаем
sudo apt-get install remastersys
Дожидаемся полной инсталляции.

Запуск Remastersys
sudo remastersys

Remastersys команды
sudo remastersys backup|clean|dist [cdfs|iso] [filename.iso]

Remastersys примеры

1) создаем livecd/dvd бекап нашей системы
sudo remastersys backup

2) создаем livecd/dvd бекап и образ диска custom.iso
sudo remastersys backup custom.iso

3) чистим временные файлы remastersys
sudo remastersys clean

4) создаем дистрибутив livecd/dvd из нашей системы
sudo remastersys dist

5) создаем дистрибутив livecd/dvd только из файловой системы
sudo remastersys dist cdfs

6) создаем дистрибутив с именем custom.iso, если cdfs уже сделали
sudo remastersys dist iso custom.iso

Создание ISO образа
sudo remastersys dist

Эта команда создаст образ iso с называнием customdist.iso в каталоге / home / remastersys .
Опция dist позволяет не включить в образ ваши личные папки (например, / home / user).
Возможно в ходе процесса вам придется вставить установочный диск Ubuntu.

процесс создания образа идет примерно так:

[…]
92.16% done, estimate finish Wed DEC 28 15:31:25 2007
93.39% done, estimate finish Wed DEC 28 15:31:25 2007
94.62% done, estimate finish Wed DEC 28 15:31:24 2007
95.85% done, estimate finish Wed DEC 28 15:31:24 2007
97.08% done, estimate finish Wed DEC 28 15:31:25 2007
98.31% done, estimate finish Wed DEC 28 15:31:25 2007
99.54% done, estimate finish Wed DEC 28 15:31:25 2007
Total translation table size: 2048
Total rockridge attributes bytes: 3950
Total directory bytes: 9094
Path table size(bytes): 54
Max brk space used 0
406890 extents written (794 MB)

В каталоге /home/remastersys/ создастся образ customdist.iso, который можно буде записать на болванку.
Если размер образа более 700Мб, то его можно записать на DVD болванку

Чистим


После того как образ протестирован, записан и он больше не нужен выполняем
sudo remastersys clean
удалятся все временные файлы и образ диска в директории /home/remastersys.

среда, 24 сентября 2008 г.

Зеркалирование репозитариев Ubuntu

Команда Ubuntu apt-mirror используется для автоматического
создания зеркала репозиториев, указанных в файле /etc/apt/mirror.list.
sudo apt-get install apt-mirror
Можно закомментировать ненужные строки, поставив в их начало символ решетки (#).
Если же вы хотите загрузить только пакеты main и restricted, поместите решетку перед ‘universe’ или ‘multiverse’, чтобы закомментировать их.
С зеркала, расположенного в вашей стране, загрузка может проходить быстрее.
Отредактировав файл сохраняем его Ctrl+O Ctrl+X
Запускаем копирование выбранных репозитариев
sudo apt-mirror
В зависимости от сделанных вами изменений, размер загрузки может достигать 40 ГБ, если не больше! К счастью, apt-mirror запоминает, где остановился, если вы отменили его работу, не дождавшись конца, и вы можете выполнять загрузку несколько ночей, пока она не закончится. Все данные сохранятся в /var/spool/apt-mirror/mirror/archive.ubuntu.com/ubuntu и будут готовы к использованию.

Ubuntu уже позаботился о включении соответствующего задания Cron под названием apt-mirror, в закомментированном виде, в /etc/cron.d/.
По умолчанию установлено ежедневное обновление в 16-00, но вы можете изменить это как вам удобнее.

Теперь настраиваем Apache
Делаем ссылку
sudo ln -s /var/spool/apt-mirror/mirror/archive.ubuntu.com/ubuntu /var/www/ubuntu

рестартуем апач
sudo /etc/init.d/apache2 restart
Теперь можно использовать свой локальный репозитарий исправив /etc/apt/mirror.list на всех компьютерах локальной сети

среда, 17 сентября 2008 г.

KVM

Перед установкой виртуальной машины проверяем поддержку виртуализации процессором
В командной строке набираем
egrep '^flags.*(vmx|svm)' /proc/cpuinfo
если есть ответ то значит процессор поддерживает аппаратное ускорение
ставим kvm
apt-get install kvm
При особом желании можно поставить менеджер виртуальных машин
и работать с ним
apt-get install virt-manager
или запускать виртуальные машины консольными командами
например так
создаем файл образ hdd для виртуальной машины. ~5Gb
dd if=/dev/zero of=/tmp/disk-image count=10000000
и запускаем виртуальную машину используя созданный дисковый имедж, вставляем в cdrom загрузочный диск (да хоть ХР) и набираем
kvm -hda /tmp/disk-image -cdrom /dev/cdrom -m 512

воскресенье, 14 сентября 2008 г.

оптимизация загрузки ubuntu 8.04

Отсюда
linux @ 25 августа 2008,

Вчера собрался ускорить работу(получилось достаточно ощутимо) и загрузку системы(30 секунд, против полутора минут), почитал многие how-to.
Опишу что и где я улучшал. Итак о способах, по порядку:
1. Прописываем hostname.

sudo vim /etc/hosts
Было:
127.0.0.1 localhost
127.0.1.1 lib

Стало:
127.0.0.1 localhost lib
127.0.1.1 lib

Подписываем то, что справа от вызова консоли находится, например: lib@laptop:~$, то вписываем laptop.
Это несколько ускоряет загрузку системы, и ускоряет запуск некоторых программ.

2. Использование ядра, сконфигурированного под Вашу систему, подробнее как можно собрать ядро в Ubuntu. По ссылке написано, как собирается ядро для 6.10, однако советы справедливы и для 8.04.

3. Несколько ускоряем работу ext3 файловой системы:

sudo vim /boot/grub/menu.lst
Добавляем в существующие строки:
# defoptions=quiet splash rootflags=data=writeback
# altoptions=(recovery mode) single rootflags=data=writeback
У меня в defoptions убран quiet и splash дополнительно, и добавлен vga=0×324, для framebuffer.


Обновляем grub.

sudo update-grub
Правим fstab:
sudo vim /etc/fstab
В моём случае, добавляем data=writeback:
UUID=32903d9a-98a8-4048-8472-a0896b81b3fa / ext3 relatime,errors=remount-ro,noatime,data=writeback 0 1
Выполняем:
sudo tune2fs -o journal_data_writeback /dev/sda1
/dev/sda1 это имя раздела, на котором лежит /
Проверяем:
sudo tune2fs -l /dev/sda1
Этот метод череват тем, что можете потерять некоторые данные при неожиданном выключении системы, например если у вас неожиданно отключилось питание(мне это не грозит, поскольку у меня ещё батарея есть)

4. Несколько ускоряем сеть(отключаем IPv6):

sudo vim /etc/modprobe.d/bad_list
Добавляем:
alias net-pf-10 off

В about:config в Firefox отключаем

network.dns.disableIPv6
, ставим true.

Там же:

network.http.pipelining true
network.http.pipelining.firstrequest true
network.http.pipelining.maxrequests 8
network.http.proxy.pipelining true
nglayout.initialpaint.delay 0
browser.turbo.enabled true
network.http.max-connections-per-server 8
network.http.max-persistent-connections-per-proxy 8
network.http.max-persistent-connections-per-server 8

Это ускорит загрузку страниц.
Добавляем в /etc/environment:
MOZ_DISABLE_PANGO=1
Это позволит ускорить отрисовку страниц в Firefox.

5. Убираем ненужные консоли(которые вызываются по Ctrl+Alt+F1..8):

sudo rm /etc/event.d/tty[3-6]
6. Ускоряем загрузку системы:
sudo vim /etc/init.d/rc
Выставляем:

CONCURRENCY=shell
Это устанавливает множественную загрузку в одно и то же время, особенно хороший эффект имеет, если у Вас многоядерная система.

7. Удаляем ненужные сервисы из загрузки:

sudo aptitude install sysv-rc-conf
sudo sysv-rc-conf

Подробно о сервисах написано на ubuntuforums.org
Дополнительно я отключал apache и mysql, я их запускаю непосредственно, когда хочу поработать с локальным вебсервером.

8. Если у Вас постоянное подключение к интернету, добавляем в /etc/sysctl.conf.

# Tweaks for faster broadband...
net.core.rmem_default = 524288
net.core.rmem_max = 524288
net.core.wmem_default = 524288
net.core.wmem_max = 524288
net.ipv4.tcp_wmem = 4096 87380 524288
net.ipv4.tcp_rmem = 4096 87380 524288
net.ipv4.tcp_mem = 524288 524288 524288
net.ipv4.tcp_rfc1337 = 1
net.ipv4.ip_no_pmtu_disc = 0
net.ipv4.tcp_sack = 1
net.ipv4.tcp_fack = 1
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_ecn = 0
net.ipv4.route.flush = 1

Всё это позволило мне ускорить работу системы на порядок, однако есть ещё пара способов, которые я рекомендовать не могу, поскольку не совсем понимаю как они работают, а именно:
установленный пакет preload(sudo aptitude install preload), prelink(sudo aptitude install prelink)
Подробнее о prelink здесь.

Удачного использования!

среда, 10 сентября 2008 г.

если DVD-slideshow не работает

если ManDVD
ругаеться на ошибки
[dvd-slideshow] ###############
[dvd-slideshow] Concatenating all audio files...
[dvd-slideshow] Creating ac3 audio...
[dvd-slideshow] ERROR during ffmpeg execution!
[dvd-slideshow] see /home/sbucat/Video/dvd-slideshow.log for details
[dvd-slideshow] cleanup...

то
1. подключаем репозитарий medibuntu
sudo wget http://www.medibuntu.org/sources.list.d/hardy.list
-O /etc/apt/sources.list.d/medibuntu.list
2. ставим пакеты
sudo apt-get install sox libsox-fmt-all ffmpeg

3. и правим скрипт
sudo sed -i 's/-ab 192/-ab 192k/g' /usr/bin/dvd-slideshow

четверг, 4 сентября 2008 г.

Сортировка фотографий

ставим exiftool
sudo apt-get install libimage-exiftool-perl
и запускаем следующий скрипт
#!/bin/bash
#filename: photosort.sh
#Date: Sep 04 2008
#Author: Michail Kabanov
#License: GPL
#
#Bash script move images chronologically in dir
#

which exiftool &>/dev/null
if [ $? != "0" ];
then
echo -e "exiftool not found, please install it -> sudo apt-get install libimage-exiftool-perl ";
exit 0
fi



#parameters: from_path, to_path
PARAMSIZE=2

if [ $# -lt "$PARAMSIZE" ];
then
echo "Usage : photosort.sh from_path to_path"
else
#get first parameter
from_path=$1
#get second parameter
to_path=$2
# Move all pictures
exiftool -r '-Directory<DateTimeOriginal' -d $to_path/%Y-%m-%d $from_path

fi
exit 0

например так
photosort.sh /home/user1/unsorted_photo /home/user1/myphoto
приэтом все фото jpg,raw,tif,cr2,crw .... будут перемещены из директории /home/user1/unsorted_photo ( и рекурсивно из всех поддиректорий) в директории следующего вида
/home/user1/myphoto/2008-01-28
/home/user1/myphoto/2007-04-17
в зависимости от даты создания фотографии (exif)


вторник, 2 сентября 2008 г.

Загрузка Ubuntu 8.04 на Acer Aspire One за 14 секунд

[8.04] Boot 14 sec with custom kernel | Model ZG5, 8GB SSD

Xen на Ubuntu 8.04.1 desktop

по идее установка должна быть такой apt-get install ubuntu-xen-desktop
однако из за ошибок ругается на неудовлетворенные зависимости xenman и не ставитя.


работающий порядок установки

1. ставим xen-tools
$ apt-get install xen-tools
2. ставим руками xenman отсюда
http://launchpadlibrarian.net/11041870/xenman_0.6-5ubuntu1_all.deb
3. ставим xen
$ apt-get install ubuntu-xen-desktop
4. перезагружаемся и смотрим командой
$ uname -r
что загружено ядро XEN
если получаем черный экран вместо гнома то грузимся с обычного ядра и исправляем
/etc/X11/xorg.conf
правим секцию подставляя драйвер vesa
Section "Device"
Identifier "Configured Video Device"
Driver "vesa"
EndSection
сохраняем и перезагружаемся (это пришлось делать изза ошибок в убунтовской сборке ядра хен)

проверяно на 2.6.24-19-xen (может потом исправят)

четверг, 3 июля 2008 г.

Развертывание типового (эталонного) образа Ubuntu Linux

отсюда

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

Создание эталонного образа.

Прежде всего необходимо создать эталонный образ Ubuntu. Для этого нам потребуется эмулятор виртуальных машин, например VirtualBox или VMWare. Далее:

  1. Устанавливаем Ubuntu в виртуальной машине.
  2. Настраиваем установленную операционную систему. Например так:

    • включить основные и дополнительные репозитарии и произвести обновление пакетов;
    • установить полную локализацию системы;
    • установить мультимедийные кодеки;
    • установить пакеты с драйверами для видео карт nvidia и ati;
    • установить flash плугин для браузера;
    • установить плугин для открытия документов MSOffice 2007 (*.docx и др.) в OpenOffice;
    • установить необходимые программы и утилиты: ssh сервер, vnc сервер, unrar, wine, virtualbox и много чего ещё...;
    • указать сетевые настройки, например адреса dns и ntp серверов, маршруты;
    • отключить загрузку не нужных демонов;
    • отключить запуск не нужных заданий по расписанию cron;
    • любые другие программы и/или настройки.
  3. Настройка профиля пользователя по умолчанию. Для этого создаем пользователя, например testuser, логинимся под ним и производим настройку. Например:

    • отключить эффекты рабочего стола;
    • разрешить удаленный доступ к рабочему столу (vnc) и задать пароль для него;
    • прописать настройки соединения в браузере: проски-сервер и прочее;
    • в редакторе меню отключить запуск некоторых программ, например подменю "Игры";
    • в настройках сеанса, отключить запуск не нужных программ;
    • любые другие настройки.

    После завершения настройки профиля, копируем содержимое /home/testuser в /etc/skel. Делаем владельцом пользователя root:

    sudo chown -R root:root /etc/skel

    Просматриваем директорию /etc/skel, удаляем все лишнее, заменяем в файлах абсолюный путь /home/testuser на относительный ~/.

    Теперь при создании нового пользователя в его домашнюю директорию будет копироваться содержимое /etc/skel.

  4. Для создания образа будем использовать livecd дистрибутив System Rescue CD.

    После загрузки, поднимаем сеть:

    sysresccd ~ # net-setup

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

    sysresccd ~ # mkdir /mnt/etalon

    пример для sftp:

    sysresccd ~ # mount -t fuse sshfs#login@192.168.0.1:/etalon /mnt/etalon

    пример для smb:

    sysresccd ~ # mount -t cifs -o user=login //192.168.0.2/etalon /mnt/etalon

    Далее, монтируем жесткий диск виртуальной машины:

    sysresccd ~ # mkdir /mnt/sda1
    sysresccd ~ # mount /dev/sda1 /mnt/sda1

    Создаем образ обычной утилитой tar:

    sysresccd ~ # cd /mnt/sda1
    sysresccd sda1 # tar cvzf /mnt/etalon/etalon-ubuntu8.04-20080704.tar.gz *

Образ операционной системы создан. У меня файл образа занимает около 1,5 Гб. Остается только записать его на dvd болванку.

Развертывание эталонного образа на новом компьютере

Развертывание образа эта операция ради которой и затевалось создание самого образа. Здесь нас снова поможет незаменимый инструмент системного администратора System Rescue CD. Загружаем новый компьютер с его помощью, при загрузке вводим опции, чтобы после можно было освободить dvd привод:

rescuecd docache doeject

Вытаскиваем livecd, устанавливаем в привод болванку с образом. Далее:

  1. Разметка диска. Например: все место под корневой раздел, файловая система reiserfs, под swap 2ГБ:

    sysresccd ~ # сfdisk /dev/sda
    sysresccd ~ # mkfs.reiserfs /dev/sda1
    sysresccd ~ # mkswap /dev/sda2
  2. Монтируем диски и разворачиваем эталон:

    sysresccd ~ # mkdir /mnt/sda1
    sysresccd ~ # mount /dev/sda1 /mnt/sda1
    ...
    sysresccd ~ # mkdir /mnt/etalon
    sysresccd ~ # mount /dev/cdrom /mnt/etalon
    ...
    sysresccd ~ # tar -С /mnt/sda1 xvzf /mnt/etalon/etalon-ubuntu8.04-20080704.tar.gz
  3. Правим файлы /mnt/sda1/etc/fstab и /mnt/sda1/boot/grub/menu.lst чтобы UUID метки дисков соответствовали новым томам. UUID метки можно узнать с помощью команды:

    sysresccd ~ # blkid
  4. Устанавливаем загрузчик grub в mbr область нового диска:

    sysresccd ~ # grub-install --root-directory=/mnt/sda1 /dev/sda

Если все прошло успешно, то мы уже можем загрузить с операционную систему с жесткого диска. Дальше:

  1. Сконфигурируем видео драйвер (в эталоне должен быть установлен универсальный драйвер vesa):

    administrator@etalon:~# sudo dpkg-reconfigure -phigh xserver-xorg

    После перезапуска иксов (Ctrl-Alt-Backspace) должен подняться нормальный видео драйвер.

  2. Сменим имя хоста и сетевые настройки:

    administrator@etalon:~# sudo gedit /etc/hostname
    administrator@etalon:~# sudo gedit /etc/network/interfaces

Компьютер готов к работе. После установки на рабочее место пользователя ещё потребуется настроить принтера, но это уже отдельная история.

После приобретения некоторого опыта установка операционной системы на новый компьютер занимает около 20 минут. Конечно предварительно должно быть потрачено время на создание эталонного образа и периодическое его обновление, но при больших количествах новых компьютеров оно окупается. Данный способ успешно применяется уже 1,5 года.

воскресенье, 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

среда, 21 мая 2008 г.

Дрова для Realtek 8185

Дрова для Realtek 8185
wiki

official drivers page

Опыт настройки USB-адаптера D-Link DWL-G122 в Ubuntu

отсюда

Мой опыт настройки USB-адаптера D-Link DWL-G122 в Ubuntu 7.10 Linux, но думаю что методика применима для большинства дистрибутивов (аналогичным методом точно можно настроить в Ubuntu 7.04)

Предисловие

Будем настраивать соединение Wi-Fi USB-адаптера D-Link DWL-G122 rev.C с точкой доступа в Ubuntu 7.10 Linux

Будем пользоваться windows-драйверами через ndiswrapper. Соответственно предполагается что ndiswrapper уже установлен в системе. Для Ubuntu 7.10 это пакеты ndiswrapper-common и ndiswrapper-utils-1.9 Естественно понадобятся и windows-драйвера.

В рассматриваемом адаптере используется чипсет производства Ralink. Проблема в том, что Linux считает, что он умеет работать с данным чипсетом. Соответственно при загрузке ОС мы с большой долей вероятности в выводе команды 'ifconfig -a' увидим сетевой интерефейс 'rausb0'

Все операции должны выполняться с правами пользователя root

Естественно, я снимаю с себя всякую ответственность за результат Ваших действий в системе :-(


Тактика и стратегия

1. Найти ...

Находим модули ядра, которые нам мешают.

lsmod | grep rt7

lsmod | grep rt2

Вывод данных команд будет зависеть от версии дистрибутива Linux. В моем случае это были rt73usb, rt2x00usb и rt2x00lib

2. ... и обезвредить

modprobe -l

показывает где находятся модули ядра. В моем случае все 3 модуля (rt73usb, rt2x00usb и rt2x00lib) находились в каталоге /lib/modules/2.6.22-14-generic/ubuntu/wireless/rt2x00/

Чтобы данные модули больше не подгружались, их нужно либо удалить, либо переименовать. Я выбрал второе.

cd /lib/modules/2.6.22-14-generic/ubuntu/wireless/rt2x00/

mv rt2x00usb.ko rt2x00usb.ko.old

mv rt2x00lib.ko rt2x00lib.ko.old

mv rt73usb.ko rt73usb.ko.old

Все. После перезагрузки системы эти модули не будут загружены.

3. "Заграница" нам поможет

Сначала проинсталлируем драйвера адаптера. Для этого перейдем в каталог где они лежат и выполним команду:

ndiswrapper -i Dr71WU.inf

где Dr71WU.inf inf-файл драйвера нашего адаптера. Данная команда копирует нужные ей файлы в каталог /etc/ndiswrapper. Оттуда модуль ядра ndiswrapper и будет брать их в дальнейшем.

Теперь скажем ядру что оно должно использовать модуль ndiswrapper, для этого:

modprobe -i ndiswrapper

depmod -a

Теперь проверим что в файле /etc/modprobe.d/aliases отсутствует запись для rausb0

Далее создаем интерфейс wlan0

vi /etc/modprobe.d/ndiswrapper

с такой записью:

alias wlan0 ndiswrapper

Теперь можно перезагрузить систему и если все было правильно, то вывод команды 'ifconfig -a' покажет наличие в системе интерфейса wlan0.

Если этого не произошло, попробуйте еще раз сделать

modprobe -i ndiswrapper

depmod -a

это должно помочь.

4. "Полная тайна вкладов... то есть организации"

Дальше рассказ о том как настроить WPA-шифрование. Для этого в системе должен быть wpa_supplicant (пакет wpasupplicant в Ubuntu 7.10)

Предположения относительно точки доступа:

- SSID = testnet

- сеть "скрытая", т.е. не анонсирует своего имени

- адрес сети 00:11:22:33:44:55

- используются протоколы WPA-PSK, WPA2-PSK, TKIP, AES

- пароль PSK = 1234567890axcvf

- на точке доступа настроена динамическая раздача адресов

Двоичный пароль запрашиваем командой:

wpa_passphrase testnet 1234567890axcvf

и получаем от него нечто вроде:

network={
ssid="testnet"
#psk="1234567890axcvf"
psk=95d5e79040c1da5c70981fbc51679331b53245e923b7dc62f0621826d529abfa
}

Вариантов два.

Вариант 1

Если беспроводная сеть является постоянной, то в файле /etc/network/interfaces прописываем:

auto wlan0
iface wlan0 inet dhcp
wpa-driver wext
wpa-ssid testnet
wpa-bssid 00:11:22:33:44:55
wpa-scan-ssid 1
wpa-ap-scan 2
wpa-proto WPA RSN
wpa-pairwise TKIP CCMP
wpa-group TKIP CCMP
wpa-auth-alg OPEN
wpa-key-mgmt WPA-PSK
wpa-psk 95d5e79040c1da5c70981fbc51679331b53245e923b7dc62f0621826d529abfa


Вариант 2

Если беспроводная сеть нужна время от времени,

то ее можно инициализировать следующим способом

wpa_supplicant -D wext -i wlan0 -c /etc/wpa_supplicant.conf -B

Содержимое файла /etc/wpa_supplicant.conf:

ctrl_interface=/var/run/wpa_supplicant
ap_scan=2
network={
ssid="testnet"
bssid=00:11:22:33:44:55
scan_ssid=1
proto=WPA RSN
key_mgmt=WPA-PSK
auth_alg=OPEN
pairwise=TKIP CCMP
group=TKIP CCMP

psk=95d5e79040c1da5c70981fbc51679331b53245e923b7dc62f0621826d529abfa
}

IP-адрес получается динамически, говорим:

dhclient wlan0

Все.

понедельник, 19 мая 2008 г.

полезные утилиты

htop - просмотр и удаление процессов
cairo-clock - прикольные гномовские часы
darkstat - статистика по трафику интерфейса ( после установки в конфиге подправить первую строку на yes
iptraf просмотр трафика с консоли

Сигнал об окончании загрузки сервера

ставим beep
apt-get install beep
и правим скрипт /etc/rc.local
nano /etc/rc.local
добавляем в скрипт строку
beep -l 900 -r 3 -f 500
теперь после загрузки сервака будет 3 раза пищать встроенный динамик

пятница, 16 мая 2008 г.

How-to Apache2 и vhost_alias

ставим Apache
# apt-get install apache2
После установки у нас появилась директория /var/www (здесь расположен сайт по умолчанию. Все документы в этой директории доступны через броузер по адресу http://localhost/ или IP адресу сервера.

ставим PHP5 и MySql
# apt-get install libapache2-mod-php5
# apt-get install mysql-server
# apt-get install php5-mysql
рестартуем apache
# /etc/init.d/apache2 restart
Проверяем работу PHP
# echo "<?php echo phpinfo() ?>" > /var/www/info.php
смотрим броузером http://localhost/info.php и видим результат работы PHP.
если предлагается загрузить файл проверяем файлы /etc/apache2/apache2.conf или /etc/apache2/mods-enabled/php5.conf на наличие строки
AddType application/x-httpd-php .php .phtml .php3
если потребовались изменения делаем рестарт апача
# /etc/init.d/apache2 restart
Настраиваем Dynamic Virtual Hosting по именам сайтов (url):
разрешаем запуск модуля vhost_alias
# a2enmod vhost_alias
для того чтобы модуль заработал правим /etc/apache2/apache2.conf
отключаем canonical name ,если нужно настраиваем логи по каждому виртуальному хосту, и указываем директорию виртуальных хостов
# берем имя сервера из Host: header
UseCanonicalName Off
# директории с виртуальными хостами
VirtualDocumentRoot /var/www/vhosts/%0
VirtualScriptAlias /var/www/vhosts/%0/cgi-bin
создаем директорию для виртуальных хостов
# mkdir /var/www/vhosts
# chown -r www-data:www-data /var/www/vhosts
Создаем темплейт виртуального хоста и копируем туда например joomla 1.5
# mkdir -p /var/www/vhosts/template/cgi-bin

Рестартуем апач
# /etc/init.d/apache2 restart
Все готово для создания виртуальных хостов.
Просто копируем темплейт хоста в директорию с именем будущего сайта например для сайта www.mysite.ru
# cp -r /var/www/vhosts/template /var/www/vhosts/www.mysite.ru
теперь все HTTP запросы к серверу с Host-header www.mysite.ru будут перенаправляться на сайт в директории /var/www/vhosts/www.mysite.ru

Для того чтоб до сайта можно было добраться правим записи DNS
или правим /etc/hosts file и добавляем запись
127.0.0.1 localhost www.mysite.ru