Поиск по блогу :

    29 февраля 2008 г.

    Установка и настройка Virtualbox

    Часто, мне по работе, необходимо тестировать различные вебпроекты на совместимость с различными браузерами. Если с Firefox и Opera все понятно, то для проверки в IE6 и IE7 мне приходится обращаться к ЗлоОС. Ясно дело ставить ее, как вторую систему, на свой комп я не собираюсь, для этого я воспользовался помощью виртуальных машин. После проверки различных виртуалок, остановился на VirtualBox, так как, по моему мнению, она довольно шустрая и справляется со своими обязанностями на ура.



    Приступим к установке.

    1. Добавляем оф. репозиторий программы
    deb http://download.virtualbox.org/virtualbox/debian non-free
    в файл '/etc/apt/sources.list'
    $ #

    #


    sudo -s
    echo deb http://download.virtualbox.org/virtualbox/debian non-free >> /etc/apt/sources.list
    wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- | sudo apt-key add -

    2. Устанавливаем Virtualbox
    $
    sudo apt-get install virtualbox

    Иногда может выскочить сообщение, что у вас есть несколько кандидатов на установку. Используем самую последнюю версию.
    3. Добавляем себя в группу vboxusers
    $
    sudo usermod -a -G vboxusers $USER

    4. Запускаем VirtualBox ('Приложения' -> 'Системные утилиты' -> 'Sun VirtualBox')

    5. Создаем новую виртуальную машину (нажимаем Создать).
    Тут, думаю, никаких трудностей у вас возникнуть не должно. Введете название виртуальной машины, выберите ТипОС (например: Windows XP). Оперативной памяти выставьте по своему желанию. При выборе загрузочного жесткого диска выберите Создать. Размер образа диска, лучше поставить: Динамически расширяющийся образ, это избавит вас от зря занятого свободного места, так как такой образ будет весить столько, сколько занято места внутри образа (например вы зададите для виртуальной машины 10Gb памяти, то она не будет занимать эти 10GB на жестком диске, так как будет весить примерно столько сколько весит ваша виртуальная система с установленными приложениями, и расширяться по мере установки новых приложений в виртуальной ОС)

    6. Настроим свойства новой виртуальной машины (нажимаем: Свойства).
    Здесь вы можете изменить настройки, которые применяли при создании виртуальной машины (guest), а также изменить другие. Здесь же можно подключить нужные устройства основной машины (host). Что подключить, зависит только от вас.
    Тут же можно настроить Общие папки для обоих систем. При добавлении новой папки вы выбираете папку у вас на host-машине, которая в последствии будет отображаться в сети в guest-машине.
    Все свойства я описывать не буду, так как мне они не особо нужны, с этим можете поэксперементировать сами.
    6.1. Нас интересует настройка 'CD/DVD-ROM'. Если вы будете ставить операционную систему с сд или двд диска, то выберите 'Физический CD/DVD привод' и вставьте диск с ОС в привод, если собираетесь ставить с образа .iso, то соответственно активируете пункт 'Файл ISO образа' и выберите iso-файл с ОС.
    Внимание! если вы, при настройке свойств виртуальной машины, включили поддержку 'Устройства USB', то при старте системы - может выскочить ошибка связанная с USB устройствами. Для решения этой проблемы редактируем файл /etc/fstab:
    $
    sudo nano /etc/fstab

    и вставляем в конец файла строку:
    none /proc/bus/usb usbfs devgid=124,devmode=664 0 0
    Для версии Ubuntu 9.10 нужно добавить своего пользователя в группу 'lp'
    $
    sudo usermod -a -G lp $USER

    после этого может потребоваться перезагрузка(или релогин) системы.
    7. Запускаем виртуальную машину (нажимаем: Старт)
    Первым делом вы увидите предупреждение о том, что, передача управления клавиатурой между host и guest системами, осуществляется с помощью спецклавиши (по умолчанию: Правый Ctrl). Эту клавишу можно сменить в настройках программы.
    Внимание! если при запуске у вас вылетает ошибка связанная с правами, проделайте следующее:
    $
    sudo chmod 666 /dev/vboxdrv

    7.1. Дальше вас ждет стандартная установка ОС, так если бы вы делали ее на обычном компе.

    8. После установки и входа в систему, первым делом следует установить virtualbox дополнения, которые очень сильно облегчат нам жизнь. Устройства -> Установить Дополнения гостевой ОС.
    После установки и перезагрузки guest-системы нам больше нет необходимости использовать спецклавишу 'Правый Ctrl', так как теперь окно получает фокус при наведении курсора мыши в область рабочего стола guest-системы. Плюс ко всему для нас открывается еще одна фича - режим Seamless. С помощью этого режима, guest-система (в моем случае WinXP) интегрируется в host-систему Ubuntu. Это очень прикольная вещь, теперь вы можете работать с окнами винды, так же, как вы работаете с окнами Gnome. Попробуйте, оно того стоит.
    Режим Seamless...
    . В ролике конечно не ахти видно, но все же...
    9. Приступим к настройки сети.
    Чаще всего, после создания виртуальной машины, VirtualBox автоматом создает в guest-системе сетевое соединение NAT, чтобы у guest-системы был доступ к интернету.
    Дальше описаны мои действия по настройки сети, так, чтобы виртуальная машина была видна, как отдельный комп, в моей домашней сетке.
    В кратце опишу мою конфигурацию сети:
    Есть два сетевых интерфейса eth0 и eth1.
    eth0 подключен к моей домашней сетке (в этой сети пара компов). на eth0 установлен dhcp сервер. eth0 имеет статический адрес 192.168.0.1 .
    eth1 подключен к внешней локальной сети моего района, по которой я получаю интернет через впн подключение.
    До версии 2.0...

    9.1. Установил необходимый софт для создания моста:
    $
    sudo apt-get install bridge-utils

    9.2. Отредактировал файл /etc/network/interfaces:
    $
    sudo nano /etc/network/interfaces

    добавив туда описание моста br0 :
    auto br0
    iface br0 inet static
    address 192.168.0.1
    netmask 255.255.255.0
    bridge_ports eth0
    и не забыв закомментировать (или удалить) данные про eth0 интерфейс.
    9.3. Перезагрузил сеть (чтобы применились изменения):
    $
    sudo /etc/init.d/networking restart

    9.4. Создал интерфейс vbox0, который будет использовать виртуальная машина:
    $
    sudo VBoxAddIF vbox0 (user) br0

    где (user) - это имя user'а который запускает VirtualBox, в моем случае этой был мой логин.
    9.5. Запустил VirtualBox и в Свойствах guest-системы зашел в раздел 'Сеть', отключил, созданный по умолчанию, NAT интерфейс и создал новый интерфейс с такими параметрами:
    Присоединен к: Хост-интерфейс
    MAC-адрес: сгенерируйте
    Имя интерфейса: vbox0
    9.6. Поправил настройки своих dhcp-сервера и firehol-файервола, заменив везде etho на br0.
    9.7. Стартовал guest-систему.
    Вот и все, сетевуха в виртуалке автоматом получила IP с dhcp-сервера, и теперь WinXP guest-машина - стала полноправным членом моей домашней сети.
    С версии 2.0 до 3.0...

    9.1. Установил необходимый софт для создания моста:
    $
    sudo apt-get install bridge-utils

    9.2. Перезагрузил сеть (чтобы применились изменения):
    $
    sudo /etc/init.d/networking restart

    появится новый интерфейс br0.
    9.3. Запустил VirtualBox и в Свойствах guest-системы зашел в раздел 'Сеть', отключил, созданный по умолчанию, NAT интерфейс и создал новый интерфейс с такими параметрами:
    Присоединен к: Хост-интерфейс
    MAC-адрес: сгенерируйте
    Хост-интерфейс: br0

    9.4. Стартуем guest-систему и видим, что она получила ip-адрес из той же подсети, что и мой компьютер.
    С версии 3.0:
    9.1. В 'Свойствах' гостевой системы в разделе 'Сеть', меняем 'Тип подключения' сетевого интерфейса с NAT на 'Сетевой мост'.
    9.2. Все, теперь после запуска гостевой системы, она будет как отдельный компьютер в сети.
    P.S. Если у вас нет сервера dhcp, то в гостевой системе пропишите ip вручную.

    Обновлено 09.11.2009г.

    18 февраля 2008 г.

    Оптимизация загрузки и работы системы

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



    Начнем с оптимизации скорости загрузки.

    Чтобы точно узнать сколько у нас на данный момент длится загрузка системы, воспользуемся программой bootchart:
    #
    apt-get install bootchart

    Теперь после каждой перезагрузки системы, в папке /var/log/bootchart, появляются графики загрузки (в виде .png картинок). Открыв их, вы сможете посмотреть, сколько длилась ваша загрузка и какие программы и демоны запускались дольше всего. В дальнейшем, сравните графики начальной скорости загрузки системы и после оптимизации описанной ниже. Если вам временно надо отключить создание графиков, то надо просто отключить демон программы:
    #
    /etc/init.d/stop-bootchart

    Пример графика...
    1. Этот способ актуален только для тех, у кого двухядерный процессор или процессор поддерживает технологию hyperthreading. Этот способ называется "Параллельная загрузка".
    1.1. Редактируем файл:
    #
    nano /etc/init.d/rc

    1.2. Ищем строку:
    CONCURRENCY=none
    и заменяем ее на строку:
    CONCURRENCY=shell
    1.3. Перезагружаемся.
    Сразу скажу - данный способ дает реальное уменьшение времени загрузки системы (по крайней мере у меня - загрузка уменьшилась на 30 секунд)
    Если после перезагрузки системы у вас появилось сообщение о том, что произошла ошибка HAL, надо сделать следующее:
    # # # #
    mv /etc/rc2.d/S12hal /etc/rc2.d/S13hal
    mv /etc/rc3.d/S12hal /etc/rc3.d/S13hal
    mv /etc/rc4.d/S12hal /etc/rc4.d/S13hal
    mv /etc/rc5.d/S12hal /etc/rc5.d/S13hal

    и все станет на свои места.

    2. Этот способ заключается в отключении запуска не нужных программ и демонов.
    2.1. Поотключайте не нужные программы с помощью Система -> Параметры -> Сеансы
    2.2. Поотключайте не нужные демоны через
    #
    /etc/init.d/(название программы) stop

    2.3. Покопайтесь в файлах rc.* в папке /etc
    Данный способ, в зависимости от вашей системы и вашей очистки, может ускорить загрузку системы на 3 - 20 секунд.
    ВНИМАНИЕ! Действия, приведенные в данном способе, вы выполняете на свой страх и риск.

    3. Этот способ заключается в отключении проверки fat32 разделов диска при каждой загрузке системы.
    3.1. Редактируем файл /etc/fstab
    #
    nano /etc/fstab

    3.2. Находим строку(и) в которой(ых) происходит подключение fat32 раздела(ов) и в конце этих строк заменяем последние две цифры на нули. Должно получиться, примерно, следующее:
    /dev/hdc1 /mnt/E vfat iocharset=utf8,umask=000 0 0
    После перезагрузки - постоянная проверка fat32 разделов вас не потревожит. Теперь можете делать проверку сами, вручную, с помощью команды fsck.

    Оптимизация работы системы.

    1. Настройка /proc/sys/vm/swappiness и /proc/sys/vm/vfs_cache_pressure.
    В псевдофайле swappiness хранится значение (в целых процентах), это уровень свободной памяти, при котором система начнет активно сбрасывать память в своп. Значение по умолчанию: 60. Изменяется значение от 0 до 100.
    В псевдофайле vfs_cache_pressure хранится значение - уровень выделяемой памяти под кэш. Значение по умолчанию: 100. Пределов значения, к сожалению не знаю.
    1.1. Если вы хотите ускорить работу системы (особенно те, кому жалко не задействованой оперативки во время работы системы), то измените значение системы, примерно, так:
    swappiness = 10 , vfs_cache_pressure = 1000 :
    # #
    echo 10 > /proc/sys/vm/swappiness
    echo 1000 > /proc/sys/vm/vfs_cache_pressure

    1.2. Если вы хотите больше использовать своп и кэширование файлов (актуально, например, при просмотре мелких картинок и т.п., а так же тем у кого оперативки меньше 128Мб), то измените значение системы, примерно, так:
    swappiness = 100 , vfs_cache_pressure = 10 :
    # #
    echo 100 > /proc/sys/vm/swappiness
    echo 10 > /proc/sys/vm/vfs_cache_pressure

    1.3. Теперь сделаем, чтобы эти параметры применялись при загрузке системы.
    Редактируем файл /etc/sysctl.conf
    #
    nano /etc/sysctl.conf

    добавим в конец файла строки
    vm.swappiness = 10
    vm.vfs_cache_pressure = 1000
    или
    vm.swappiness = 100
    vm.vfs_cache_pressure = 10

    2. Настройка CFQ IO Shedule.
    Так как в Ubuntu этот параметр, по умолчанию, работает как надо, то приведу этот способ для ознакомления.
    CFQ IO Shedule - шедулер ввода-вывода, старающийся выделить временные интервалы для каждого процесса. При используемом, на многих дистрибутивах по умолчанию, методе anticipatory, процесс, начавший интенсивно работать с диском, может не отдавать временные интервалы другим процессам. На десктопе это приводит к сильным тормозам. Пока какой-то процесс активно работает с диском, перерисовка GUI тормозит, программы запускаются по минуте и т.д. CFQ IO Shedule при значении cfg делает более равномерную загрузку.
    2.1. Проверяем какой метод использует CFQ IO Shedule:
    #
    cat /sys/block/hda/queue/scheduler

    если выбран метод anticipatory, то на выводе будет показано следующее:
    noop [anticipatory] deadline cfq
    2.2. Чтобы заменить его на cfg, делаем следующее:
    #
    echo cfq > /sys/block/hda/queue/scheduler

    и если мы еще раз выведем содержимое файла, то увидим:
    noop anticipatory deadline [cfq]
    После этого, система начинает более равномерно выделять доступ к диску всем фоновым процессам. Фактически это выражается в том, что система совершенно перестаёт тормозить при 100% загрузке IO Wait (интенсивная работа с винтом, копирование больших файлов и т.п.)

    3. Выключаем поддержку IPv6
    Этот способ нужен тем, кто совершенно не использует протокол IPv6 (как показывает моя практика - большинству). Отключение IPv6 влияет на скорость отображения сетевых шар, да и вообще скорость работы в сети.
    3.1. Редактируем файл /etc/modprobe.d/aliases:
    #
    nano /etc/modprobe.d/aliases

    3.2. Находим строку:
    alias net-pf-10 ipv6
    и заменяем ее на строки:
    alias net-pf-10 off
    alias ipv6 off

    4. Настройка /etc/hosts.
    Этот способ ускоряет запуск и работу программ, которые любят обращаться через loopback (например, гномовский терминал).
    4.1. Редактируем /etc/hosts
    #
    nano /etc/hosts

    4.2. Ищем строку:
    127.0.0.1 localhost
    добавляем в конец строки, через пробел имя своего пользователя, под которым вы сидите в системе, в моем случае, получилось так:
    127.0.0.1 localhost leolik

    5. Настройка java.
    По умолчанию в системе используется java 1.5, из-за этого многие java-приложения ужасно тормозят. Исправляем это положение, заставляя все приложения работать на версии java 1.6. Если у вас не установлена версия java 1.6, установите ее через Synaptic.
    5.1. Вводим в консоль:
    #
    update-alternatives --config java

    5.2. В появившемся списке ищем строку: /usr/lib/jvm/java-6-sun/jre/bin/java
    и применяем ее, введя номер этой строки.

    Оптимизация файловой системы.

    1. Этот способ предназначен, только для систем с фс EXT3 и ReiserFS.
    1.1. Редактируем файл /etc/fstab :
    #
    nano /etc/fstab

    1.2. Ищем строку корневой системы, пример:
    UUID=1592eed8-e490-4839-98cb-e4cd4d4f9200 / ext3 defaults,errors=remount-ro 0 1
    Изменяем ее на такую, пример:
    UUID=1592eed8-e490-4839-98cb-e4cd4d4f9200 / ext3 defaults,errors=remount-ro,noatime,data=writeback 0 1
    1.3. Редактируем файл /boot/grub/menu.lst
    #
    nano /boot/grub/menu.lst

    1.4. Ищем строки, начинающиеся на: # defoptions и # altoptions и добавляем в конец этих строк: rootflags=data=writeback
    Должно получиться:
    # defoptions=quiet splash rootflags=data=writeback
    и
    # altoptions=(recovery mode) single rootflags=data=writeback
    1.5. Вводим команду для обновления файла menu.lst:
    #
    update-grub

    ВНИМАНИЕ! Это привет к обновлению файла menu.lst, также, как если бы вы обновили ядро системы, перепишет файл с дефолтными настройками, но добавит введенные выше изменения.

    2. Этот способ предназначен, только для систем с фс EXT3 и применяется после первого способа.
    2.1. Вводим в терминале (замените /dev/hdd1 на ваш диск с корневой системой / ):
    #
    tune2fs -o journal_data_writeback /dev/hdd1

    2.2. Перезагрузитесь.
    Должна возрасти скорость при работе с видео, изображениями и аудио файлами.

    3. Этот способ предназначен для дисков с фс EXT3 и 4. С помощью этого способа, мы освободим зарезервированное системой пространство жесткого диска под свои нужды.
    Дело в том, что система автоматически резервирует на дисках с фс EXT - 5% дискового пространства на случай, если вдруг у вас закончится место на диске и тогда система не сможет сохранить системную информацию, что может привести к плачевным последствиям. Не спорю, что это оправдано для корневого раздела "/", но вот для других разделов это не критично, а свободного места теряется много, особенно на больших, по объему дисках.
    3.1. Вводим в терминале следующее (замените /dev/sdb1 на ваш диск)
    #
    tune2fs -r 0 /dev/sdb1

    где 0 - это процент зарезервированного места.
    Если у вас под корневой раздел выделен объемный диск, то можете спокойно уменьшить процент до 2 или 3, зато сэкономите порядочно места под другие нужды.

    6 февраля 2008 г.

    Настройка framebuffer в Ubuntu

    Для чего я себе ставил framebuffer? Объясню он мне нужен для консоли (та которая открывается по Ctrl+Alt+F(1-6)), во-первых для того чтобы поменять там разрешение на 1280х1024 (по умолчанию там 640х480), а во-вторых для просмотра фильмов именно в консоли (многие назовут это извращением, но до сих пор есть такие люди которые умудряются работать только в консоли и им этого хватает с головой) и т.п.



    В версии Ubuntu 7.10 настройка отличается от предыдущих версий. Чем же?
    А вот чем...

    В предыдущих версиях - framebuffer был включен по умолчанию и нам оставалось лишь добавить параметр vga=xxx в строку загрузки kernel в файле /boot/grub/menu.lst . Где xxx=цифра - специальное сочетание разрешения экрана и глубины цвета, посмотреть расшифровку можно в wikipedia.

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

    1. Открываем файл /etc/modprobe.d/blacklist-framebuffer:
    #
    nano /etc/modprobe.d/blacklist-framebuffer

    теперь закомментируем строку:
    #blacklist vesafb
    и сохраняем файл.
    2. Открываем файл /etc/initramfs-tools/modules:
    #
    nano /etc/initramfs-tools/modules

    добавляем строчки:
    fbcon
    vesafb
    и сохраняем файл.
    3. Пересобираем initramfs image
    #
    update-initramfs -u

    4. Редактируем файл /etc/default/grub
    #
    nano /etc/default/grub

    В конец строки 'GRUB_CMDLINE_LINUX_DEFAULT' добавляем параметр vga=0x31b (здесь я использовал параметр для экрана 1280х1024)
    4.1. Применяем изменения для Grub:
    #
    update-grub

    Если у вас другое разрешение используйте значения из таблицы приведенной ниже:
    640x480800x6001024x7681280x1024
    2560x3010x3030x3050x307
    32 тыс0x3100x3130x3160x319
    64 тыс0x3110x3140x3170x31A
    16 млн0x3120x3150x3180x31B

    Если вашего разрешения нет в таблице (например, у вас широкоформатный монитор), то воспользуйтесь следующим способом:
    5. Устанавливаем программу hwinfo
    #
    apt-get install hwinfo

    6. Запускаем ее с ключем --framebuffer
    #
    hwinfo --framebuffer

    в появившемся списке выберите нужный Mode для вашего разрешения и добавьте его в vga= , как описано выше, в четвертом пункте.

    Теперь перегружаемся, переходим в консоль и лицезреем красоту.

    2 февраля 2008 г.

    Решение проблемы GLX на старых видеокартах Nvidia

    Некоторые из вас, у кого еще есть в наличие такие древности, как видеокарта Geforce 2 (или еще ниже), уже знают, что для видеокарт этой серии в Ubuntu идет специальный драйвер nvidia-glx-legacy, специально предназначенный для видеокарт Nvidia старого поколения. И наверное многие из вас уже столкнулись с тем, что после установки этого драйвера многие игры и некоторые приложения работающие с GLX - не запускаются

    , а при запуске, в консоли пишется следующее:
    Xlib: extension "GLX" missing on display ":0.0"
    а в логах можно увидеть это:
    (EE) GLX is not supported with the Composite extension

    Ну что же, это дело поправимое. Приступим.

    1. Открываем для редактирования файл /etc/X11/xorg.conf :
    $
    sudo nano /etc/X11/xorg.conf
    2. Находим там раздел Section "Module" (если нет, то создаем) и добавляем туда строку Load "glx" и если есть строка Load "dri" - закомментируйте ее или удалите. Должно быть примерно следующее (как пример):
    Section "Module"
    Load "bitmap"
    #Load "dri"
    Load "ddc"
    Load "extmod"
    Load "freetype"
    Load "glx"
    Load "int10"
    Load "vbe"
    EndSection
    3. Теперь находим раздел Section "Device" и заменяем там параметр Driver "nv" на Driver "nvidia", должно получиться примерно следующее (как пример):
    Section "Device"
    Identifier "nVidia Corporation NV15DDR [GeForce2 Ti]"
    Driver "nvidia"
    BusID "PCI:1:0:0"
    EndSection
    4. Идем дальше. Находим раздел Section "Screen" и добавляем туда параметр Option "AllowGLXWithComposite" "True", должно получиться примерно следующее (как пример):
    Section "Screen"
    Identifier "Default Screen"
    Device "nVidia Corporation NV15DDR [GeForce2 Ti]"
    Monitor "SyncMaster"
    Option "AllowGLXWithComposite" "True"
    Option "NoLogo" "True"
    DefaultDepth 24
    SubSection "Display"
    Depth 24
    Modes "1280x1024" "1024x768" "800x600" "640x480"
    EndSubSection
    EndSection
    5. И последнее, добавляем в конец файла следующий блок:
    Section "Extensions"
    Option "Composite" "Enable"
    EndSection
    6. Сохраняем изменения (в редакторе nano: Ctrl+O) и закрываем редактор (в редакторе nano: Ctrl+X).
    7. Перезагружаемся, чтобы изменения вступили в силу.

    Теперь можно свободно играть в игры и работать с теми приложениями, которые до этого ругались на GLX.