Где прячутся далеко нелишние гигабайты?

11:20

Seagate_FDE


Заполнение дискового раздела на 100% – далеко не самое приятное, что может произойти с вашей системой.
Когда демоны и другие приложения не могут сохранить свои журналы или файлы состояний в /var – жди беды.
Потерпев неудачу при записи данных, программы просто прекращают работу, а иногда даже рушатся!
Чтобы предотвратить такой сценарий, файловые системы ext2 и ext3 резервируют 5% от общего пространства для приложений, выполняющихся от имени root.

Это правильный подход, но 5% на большом диске – это достаточно много: например, из 500 ГБ в резерв уйдут 25!
Кроме того, нет смысла бронировать место там, где не может быть файлов root, например, разделе /home.
Хорошая новость – величина 5% не является жестко зашитой в код ОС, и вы можете менять ее на лету, не рискуя потерять файлы с данными.

Для подстройки параметров файловых систем ext2 и ext3 используется утилита tune2fs.
Она позволяет менять метку тома или порог числа монтирований, после которого автоматически будет запускаться fsck, а также более экзотические настройки.
Нам помогут опции -m и -r.
Первая устанавливает процент блоков ФС, резервируемых для пользователя root, а вторая задает их абсолютное количество.
Поэтому tune2fs -m 2 /dev/sda1 сокращает «бронь root» до 2%, что может оказаться полезным, если у вас объемный раздел / или /var.

Рекомендуем к использованию, если у вас жесткий диск на 500 ГБ или больше.   
Другая команда, tune2fs -r 0 /dev/sda1 отменяет резервирование блоков в файловой системе, а потому подойдет для /home, где не может быть файлов суперпользователя.

(c)

Далее

Gnome 2.28 won't shutdown if other users are logged in

12:51

shitz

 

If I have my user logged in to Gnome and my wife switches users and then wants to shutdown the box, Gnome 2.28 does not allow this giving the following box, "System policy prevents stopping the system when other users are logged in."

Thanks for the reply. Here's what I did:

# nano /var/lib/polkit-1/localauthority/50-local.d/shutdown.pkla

[system shutdown privs]
Identity=unix-group:users
Action=org.freedesktop.consolekit.system.stop-multiple-users
ResultAny=no
ResultInactive=no
ResultActive=yes
# nano /var/lib/polkit-1/localauthority/50-local.d/restart.pkla

[system restart privs]
Identity=unix-group:users
Action=org.freedesktop.consolekit.system.restart-multiple-users
ResultAny=no
ResultInactive=no
ResultActive=yes

After a restart of hal everything works!  THANKS AGAIN!  I added this great information to the Gnome 2.28 Changes wiki article.  Hopefully others will find it useful.

(c)

Далее

VirtualBox. Создание и управление виртуальными машинами из консоли.

11:19

Имеем сервер, на котором нет графической среды, есть задача развернуть на нем несколько виртуальных серверов

 

устанавливаем Virtualbox

Для Ubuntu документацией рекомендовано иметь Dynamic Kernel Module Support (DKMS)

apt-get install dkms

Скачиваем с http://www.virtualbox.org/ наиболее подходящий пакет. Для 10.10 virtualbox-3.2_3.2.10-66523~Ubuntu~maverick_i386.deb

dpkg -i /путь/virtualbox-3.2_3.2.10-66523~Ubuntu~maverick_i386.deb

он скажет что надо доустановить и пометит для установки пакеты

apt-get -f install

установит все пакеты

 

создаем гостя с именем ubuntu_srv001

VBoxManage createvm --name "ubuntu_srv001" --register

Конфигурация гостя

VBoxManage modifyvm "ubuntu_srv001" --memory 256 --acpi on --boot1 dvd --nic1 bridged

тип ОС — Ubuntu Линукс (смотреть типы VBoxManage list ostypes )

VBoxManage modifyvm "ubuntu_srv001" --ostype ubuntu

Создаем фиксированный жесткий диск 7Гб для гостя

VBoxManage createhd --filename "ubuntu_srv001.vdi" --size 7000 --variant fixed --remember

Установим созданный файл ubuntu_srv001.vdi первым виртуальным жестким диском SATA

VBoxManage modifyvm "ubuntu_srv001" --sata on --sataportcount 30 --sataport1 "ubuntu_srv001.vdi"

Зарегистрируем контроллер IDE для DVD

VBoxManage storagectl "ubuntu_srv001" --name IDE0 --add ide

Зарегистрируем ISO файл с устанавливаемой ОС

VBoxManage openmedium dvd /export/distrib/OS/Ubuntu/ubuntu-10.10-server-i386.iso

Подключим этот ISO к виртуальной машине

VBoxManage storageattach "ubuntu_srv001" --storagectl "IDE0" --port 1 --device 0 --type dvddrive --medium /export/distrib/OS/Ubuntu/ubuntu-10.10-server-i386.iso

Включаем доступ к экрану виртуальной машины по RDP (стандартный порт 3389 поменяем, если виртуальных машин несколько, надо для каждой свой порт)

VBoxManage modifyvm "ubuntu_srv001" --vrdp on --vrdpport 3390

Пришло премя стартовать установку гостевой ОС

VBoxHeadless -startvm "ubuntu_srv001"

срочно включаем терминальную RDP сессию

В windows mstsc /v:host:port в linux rdesktop host:port

Все работаем …....................

установили систему с образа, делаем загрузку гостя с жесткого диска

VBoxManage modifyvm "ubuntu_srv001" --boot1 disk

диск с VboxGuestAdditions лежит здесь /usr/share/virtualbox/VBoxGuestAdditions.iso. Нужен он при установке графической среды.

 

Клонирование Виртуальных серверов VirtualBox .

 

У нас есть виртуальная машина ubuntu_srv001 с виртуальным диском ubuntu_srv001.vdi

Клонируем диск с системой.

VBoxManage clonehd ubuntu_srv001.vdi ubuntu_srv002.vdi

Регистрируем новую машину с аналогичными параметрами

VBoxManage createvm --name "ubuntu_srv002" -register
VBoxManage modifyvm "ubuntu_srv002" --memory 256 --acpi on --boot1 disk --nic1 bridged
VBoxManage modifyvm "ubuntu_srv002" --ostype ubuntu
VBoxManage modifyvm "ubuntu_srv002" --sata on --sataportcount 30 --sataport1 "ubuntu_srv002.vdi"

 

( VBoxManage storagectl ubuntu_srv002 --name SATA —remove если ошибся виртуальный диск всегда можно отцепить.)

 

VBoxManage modifyvm "ubuntu_srv002" --vrdp on --vrdpport 3391 (порт у каждой машины свой)

VBoxHeadless -startvm ubuntu_srv002 --vrdp=on > /dev/null 2>&1 &

 

зайдем на клона (оригинал пока выключен) mstsc /v:host:3391

/nano /etc/network/interfaces

меняем параметры tcpip у машин не должны совпадать ip

командой hostname newname меняем имя сервера, имена не должны повторятся

/etc/init.d/networking restart перезапустит сеть

Все . Можно использовать два виртуальных сервера.

Посмотреть список запущенных виртуальных машин VBoxManage list runningvms

 

Виртуальные машины в качестве службы

 

Для корректного вызова завершения работы виртуальной машины с консоли хоста я сначала пользовался VBoxManage controlvm ubuntu_srv001 poweroff лишь спустя время я вычитал, что способ аналогичен обрыву питания на реальном компьютере.

 

Другой способ, более надежный требует установки пакета управления питанием на виртуальную машину apt-get install acpid.

Старт службы acpid start.

 

Если мы автоматически стартуем эту службу на виртуальной машине, то имеем возможность корректно завершить ее работу нажав виртуальную кнопку выключения c машины хоста.

VBoxManage controlvm ubuntu_srv001 acpipowerbutton

 

Теперь хочется рассказать о процессе регистрации виртуальных машин в качестве службы.

Я делаю через webmin, потому, что очень быстро и просто.(Webmin не панацея для всего,не все можно быстро настроить через webmin)

Заходим на хост сервер через https://хост:10000/ рутом.

Раздел System → Bootup and Shutdown → Create a new bootup and shutdown action.

Придумаем имя службы

Bootup commands (в качестве запуска)VBoxHeadless -startvm ubuntu_srv001 --vrdp=on > /dev/null 2>&1 &

Shutdown commands (остановка) VBoxManage controlvm ubuntu_srv001 acpipowerbutton

в конце кнопка Create

Все проверяйте /etc/init.d/имя_службы start запуск виртуальной машины /etc/init.d/имя_службы stop остановка.

 

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

(c)

Далее

Правильно настроенная система + торрент + роутер/модем

20:10

Предыстория: пользовался Utorrent 2.0 Lineage2 от Инновы и НЕ БЫЛО НИ ЕДИНОГО РАЗРЫВА -> было Ого8 стало Ого Ultra –> появилось: при использовании Utorrent без ограничения приема ОБРЫВЫ таки появились. Командой ping 192.168.0.1 диагностировался отказ в обслуживании роутером ASUS WL-600g (DLINK в серии 2600 вроде использует те же микросхемы только веб-интерфейс другой.. да по большому счету эта проблема касается ВСЕХ бюджетных роутеров класса SOHO (small office home office)

Теперь представим себе интернет какой он есть сейчас… конечное оборудование в виде кампов соединенное массой проводов и роутеров.. роутеров.. роутеров.. и вспомним 90-ые и мифы о вирусах которые прожигают мониторы и выводят оборудование из строя… бррр… мракобесие. А что вы скажете о вирусах которые вы принимаете за обычные программы? Ну может просто плохо написанные программы.


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

Другой штрих маслом.. представьте себе инженера проектирующего НЕДОРОГОЙ роутер, ADSL модем со встроенным роутером ну и прочую недорогую дрянь.. что от него требуется? Правильно удовлетворить ТЗ (тех.задание) уложившись в скромный бюджет.. Оборудование то для вас и вы не потратите 700 баксов на хрень в коробке.. вы потратите максимум 100. Вот он (инженер) и засовывает в коробку с надписью МАРШРУТИЗАТОР (ROUTER) комплектующие из самого низкого ценового диапазона… но не сссыте.. коробка то используется классная.. белая, с антенкой и вся вообще зае*ическая.. )) Короче внутри коробки комплектующие и микропрограмма с заявленной поддержкой ADSL 2+ что подразумевает работу на 24 мегабитах.. ан нет у вас не работает.. волнами идет торрент… (кстати попробуйте объяснить как волнами идет тех поддержке.. и не забудьте добавить что не было ни единого разрыва.. ну для антуража ))

Я своему другу кстати который работает в Укртелекоме проблему изложил, но он простой монтер который меряет затухание меняет розетки, настраивает роутеры.. но теперь если к нему обратятся абоненты с жалобами что торрент на ваших новых тарифах НЕ КАЧАЕТ ответит грамотно.. а не*уй качать нелицензиооный контент.. ах хахаха..
Ладно вернемся к проблеме.. коробка с логотипом ADSL 2+ не работает на заявленных скоростях.
Можно обвинить Укртелеком.. попробуйте позвоните и скажите, что вас наЫбали. Вас вежливо попросят не расстраиваться сейчас мир такой..

Но кто-то же вас наи.. кто-то сделал это с вами.. коробка ведь упорно не работает и сбоит.
Мой вам совет не качайте нелицензионный контент… ну или думайте.
Вернемся к инженеру который собирает коробку.. ТЗ выполнил в бюджет уложился, а коробка не работает на 24 мегабитах.. а на 8 работает.. значит инженер сделал с нами это ужасное, он нас отимел за наши же 100 $ прекрасный ход.. но не он. Сейчас мы разберемся кто.

Вернемся к интернету. Что такое это интернет.. пользователи рас..(рас рас рас).. провайдеры два.. контент (то к чему стремятся пользователи) три ну если вспомнить еще то: производители кабельного оборудования, маршрутизаторов (серьезных.. не тех что стоят у вас под диваном)

Производители Серверов, и производители ПО последние по большому счету делятся на производителей сервисного ПО которое обслуживает маршрутизаторы и серверы и прикладного ПО - то что крутится у вас на компьютерах..
Те что пишут программки для серверов и маршрутизаторов обычно десятилетиями работают на одну контору в одной области.. примеры CISCO JUNIPER HUAWEI IBM и т.д. это суровые ребята творящие код по гостам и правилам..
Те что пишут прикладные программы в том числе и те которые требуют сетевого взаимодействия часто самоучки осененные гениальными идеями.. нет я не спорю и среди них есть профессионалы но довольно часто это сумасброды.. оставим штрих про программистов и вернемся к интернету..

Кабеля роутеры компьютеры.. все это хозяйство работает вместе благодаря сетевому взаимодействию, а именно обмену так называемыми «сетевым пакетами» набору битов с «заголовком». Заголовок составлен по определенным правилам, что бы не вдаваться в подробности примерно так <как:куда:кому:> .. и далее сама информация. Правила составления и обработки сетевых пакетов конечным оборудованием (на пример компьютерами) и промежуточным оборудованием (чаще всего это спец компьютеры называемые роутерами на англ манер или маршрутизаторами) называются ПРОТОКОЛОМ. В интернете ПРОТОКОЛ взаимодействия строго говоря не один и потому набор протоколов (правил обработки пакетов напоминаю) называется СТЕКОМ ПРОТОКОЛОВ и тот что сейчас широко распространен и является стандартом де-факто носит название TCP\IP поподробней советую прочитать тут http://ru.wikipedia.org/wiki/TCP/IP.

ТCP\IP разрабатывается уже более 30 лет (точную цифру не помню) и все дополнения к первоначальной версии протокола носят вид RFC (Request for Comments) “ запрос на обсуждение» т.е. кто-то (человек либо организация) вносят предложение, заинтересованные стороны (разработчики маршрутизаторов, ПО к ним, сетевых плат, операционных систем и т.д.) обсуждают его и приходят к единому решению, которое затем находит воплощение в разрабатываемой продукции и на продукции появляется логотип а-ля «к чему-то там READY» (подробно читать тут http://ru.wikipedia.org/wiki/RFC)

Так вот протокол TCP\IP прошел долгий путь и оброс массой дополнения в виде RFC большинство из которых реализовано в современных роутерах, сетевых платах и операционных системах.

Но развитие ИНТЕРНЕТА как среды обмена идеями и реализацией идей в виде программ и медиа продукции (фильмы, музыка и т.д.) наткнулось на обычную человеческую жадность, которая к слову сказать так же как и лень является двигателем прогресса.. ведь если кто-то снял хороший фильм потратив на это либо деньги либо время (кстати я ведь сейчас тоже составляю хорошее медиа что бы вы прочли и сэкономили десятки и то и сотни часов на изучение вопроса) получили с этого отдачу, моральную либо материальную.. но моральную никто не хочет т.к. не ликвид, в холодильник не положишь, и предпочитают материальную.. т.к. на тэньге легко купить себе отдых развлечение или сэкономить время.. и ЭТИ ПРАВООБЛАДАТЕЛИ стали бороться с (нет не с интернетом он им самим нужен для рекламы своей продукции) с теми кто размещал на своих серверах ворованное видео, программы .. сначала это носило стихийный характер, но со временем почти все государства на законодательном уровне промаркировали незаконные действия в интернете и приравняли часть из них к нарушению авторских прав за что светят или космические штрафы или отсидка за решеткой… государственные машины многих стан реорганизовались и появились такие как отдел К в России кибервойска в США и т.д. то есть за интернтом стали пристально следить и скачать откуда-нибудь файлик стало делом опасным.

Народ вообще быстро реагирует на всяческие ограничения физического или морального плана, т.к. народы стран и особо грамотные индивиды это и есть цивилизация человеческая, и уж точно не госаппарат представляет цивилизацию. Так вот группа индивидов объединенная интернетом выдумала TORRENT протокол, который позволял обмениваться файлами находящимися на компьютерах пользователей. Опущу то что было до торрентов, типа Edonkey и других, но они явились лишь ступенькой к технологии которую все знают сейчас как торрент.

В общем по мере развития провайдеров и борьбы за пользователей скорости на которых эти самые пользователи стали быть подключены к интернету стали стремительно увеличиваться, количество нелегального контента и его объемы так же стали стремительно увеличиваться.. и вот уже для высоких скоростей обмена информацией по технологии торрент программам (в частности Utorrent установленной не менее чем на двух третях пользователей технологии) стало откровенно неуютно в рамках протокола TCP\IP разработчики Utorrent так и предложили давайте РАДИКАЛЬНО изменим TCP\IP, но с этим не согласились ни производители маршрутизаторов ни операционных систем.. да и вообще радикально сейчас что-то менять в интернете опасно, т.к. инфраструктура многих стран НЕ СМОЖЕТ ФУНКЦИОНИРОВАТЬ без интернета.. начнутся сбои в работе самых различных предприятий и «институтов государственности» человечество подсадило себя на иглу электричества нефти и интернета.. короче разрабов Utorrent послали с их революцией подальше практически все..

Ребята не расстроились и смастерили свой прикладной протокол uTP который работал поверх протокола UDP, так же входящего в стек TCP\IP . Плохой стороной реализации явилось то, что велосипед изобретался второй раз.. разработчики изобретали TCP\IP но без тех недостатков, которые они считали недостатками. Усилий они приложили откровенно мало.
Не буду копипастить, а дам просто две ссылки на описание проблем протокола uTP http://nuclight.live...com/125372.html
http://torrentblog.r...oix-obeshhanij/

если эти ссылки не читать, то коротко я вам скажу что в результате работы протокола uTP в течении 2-5 минут размер передаваемого пакета уменьшается до 200-300 байт при максимальном разрешенном размере для PPP соединений в 1492 байта и таким образом например на полтора мегабайта информации приходится уже не 1000 пкетов, а 5000 пакетов. С увеличением пропускной способности на тарифе Ultra возросло количество преобразований NAT когда ваш и мой в том числе ADSL роутер откидывает серый IP адрес внутреннего интерфейса и подставляет реальный IP адрес внешнего интерфейса..
ТАКИМ ОБРАЗОМ критичным параметром для роутера становится количество пакетов в секунду PPS (packets per second) и в результате работы Utorrent 2.0 этот параметр прыгает до небес, конечно в случае перехода на новый тариф от Укртелекома, на 8 мегабитах мой ASUS WL-600g еще справлялся а на 24 уже нет… ситуация банально просто.. малое ОЗУ и низкое быстродействие процессора установленного в красивую белую коробку.. ОЗУ переполняется очередью пакетов на NAT преобразование и роутер переходит на 1-2 сек в режим так называемой блокировки (отказа в обслуживании) пока не разгребет очередь.. кстати даже промышленные дорогие роутеры в важных узлах интернета не избежали этой участи и многие зимой жаловались на потери пакетов то в амстердаме то в лондоне то в москве… все это работа ребят из Utoreent
Вот и ответили мы на главный вопрос, кто нас отимел.. составитель ТЗ на красивую коробку с антенкой который или занизил или вообще не учел такой параметр как PPS.

Отсюда вывод который серьезные пользователи и администраторы систем знают давно не введитесь на рекламу и коробку… ни на бренд… доверяйте только информации что может устройство и из чего сделано.. скока ОЗУ какой процессор.. и т.д. удачи.

З.Ы. Если кому то покажется многа букаф то ПНХ, я старался )) пусть поддержка УТК попробует напишет что-то подобное..
З.Ы.2 совес забыл решение проблемы копеечное описано в последней ссылке

(c)

Далее

Перенос /home на другой диск

00:12

после прочтения статьи об оптимальной разметке диска http://ubuntologia.ru/partitioning-recommendations, решил вынести /home на отдельный диск. Немного погуглив, напоролся на 2 статьи http://www.ubuntu4life.com/node/30 и http://www.psychocats.net/ubuntu/separatehome, которые были взяты мной за основу. Ниже, непосредственно, описан мой личный опыт, поэтому что то может не совпадать с исходными статьями. И так начнем:
Каким образом выделить диск и отформатировать в нужную вам файловую систему я пропущу, об этом есть статья на убунтологии http://ubuntologia.ru/prepare-computer.

Диск создан. Теперь создадим папку, в которую будем копировать наши файлы и примонтируем туда наш новосозданный диск. Для себя я выбрал ext3, а вы выбирайте на свой вкус. Соответственно, если вы выберете ext4 или что либо другое, то, необходимо будет внести соответствующие правки в команду.

$sudo mkdir /mnt/newhome
$sudo mount -t ext3 /dev/sda4 /mnt/newhome


ВНИМАНИЕ, у вас диск (sda4) может иметь другое название.
Перейдем в нашу домашнюю директорию и скопируем все содержимое

$cd /home/
$find . -depth -print0 | sudo cpio --null --sparse -pvd /mnt/newhome/


Обязательно убедитесь, что все скопировано правильно.
Теперь размонтируем диск

$sudo umount /mnt/newhome


Создадим бэкап, путем переноса всего содержимого.

$sudo mv /home /old_home


И так как папка перенеслась, создадим папку home по новой.

$sudo mkdir /home


Монтируем новый home

$sudo mount /dev/sda4 /home


Не забываем изменить sda4, согласно своего диска
Проверяем, все ли в порядке с нашим новым home
Теперь укажем, системе на новый /home
Открываем файл fstab вашим любимым тестовым редактором (в моем случае gedit).

sudo gedit /etc/fstab


И добавляем в конец эту строчку (не забываем заменить sda4 на свой)

/dev/sda4 /home ext3 nodev,nosuid 0 2


Сохраняем и выходим.
Перед перезагрузкой убедитесь, что ваш новый /home примонтирован и работает.

Теперь самое время поговорить о подводных камнях.
После перезагрузки, вы столкнетесь с проблемой, права доступа будут нарушены. Ниже решение данной проблемы.
При загрузке системы, выбираем recovery mode, как на картинке

Затем

После чего вводим следующее

chown -R username:username /home/username
chmod 644 /home/username/.dmrc
chmod 644 /home/username/.ICEauthority
exit


Вместо username вводим свое имя пользователя
Последний шаг данной процедуры


Вот результат моих действий


Если все грузится нормально, и вы довольны результатом делаем последний рывок, а именно удаляем наш бэкап (но если не хотите, можете оставить все как есть)

sudo rm -rf /old_home



Все.
Еще раз обращаю внимание на то, что здесь полностью описан проделанный мною процесс. Я не испробовал на себе функцию восстановления бэкапа, который описан в конце статьи из второй ссылки.

(c)

Далее

OOO_FORCE_DESKTOP for dark themes

15:20

Hi and welcome to the forum!


See OpenOffice.org 2.4.x Dark Theme Workaround With Ubuntu 8.04.

I had to edit slightly the path and my openoffice.org3 file in /usr/bin has for second line:

exec env GTK2_RC_FILES=/usr/share/themes/Industrial/gtk-2.0/gtkrc /opt/openoffice.org3/program/soffice "$@"

Thanks to add '[Solved]' at beginning of your first post title (edit button) if your issue has been fixed.

(c)

Автоматическая преднастроенная установка Ubuntu: isolinux и preseed

21:20

Как известно, Ubuntu Linux уже давным-давно содержит полный набор инструментов, необходимых для работы большинства офисных сотрудников. А то, что не содержит, можно доустановить, либо же запустить с сервера, например, с помощью FreeRDP и Remmina. В результате — экономия средств и сильное упрощение администрирования клиентов. Многие фирмы уже начали потихоньку заменять свой парк машин на тонкие клиенты и полноценные компьютеры с Linux. И если вы тоже хотите пересадить пару отделов на Ubuntu, то возможно я смогу помочь вам сэкономить немного времени.

В этой статье я расскажу, как создать на основе Ubuntu (а так же любых её модификаций, включая Ubuntu Sever) или Debian преднастроенную, автоматически устанавливающуюся систему. Разобравшись в описанном ниже весьма несложном материале вы сможете делать свои собственные сборки Ubuntu с необходимыми вам приложениями и настройками, которые будут способны устанавливаться в полностью автоматическом режиме как с диска, так и по сети. В итоге при желании вы сможете добиться того, что вам будет достаточно просто включить компьютер и пойти пить чай, чтобы вернувшись увидеть установленную и полностью настроенную под ваши запросы систему со всем необходимым вам для работы софтом.

Начнём с того, что данная статья содержит несколько специфичных для Ubuntu вещей, однако общие положения будут верны для любых дистрибутивов, способных использовать для установки Debain Installer. Кроме того, я не буду рассказывать, как настраивать загрузку компьютеров по сети (для этого вам понадобится TFTP сервер, развернуть который — обычно дело 2-х минут) и сосредоточу своё внимание на загрузке с диска. Однако в конце всё же расскажу, как все описанные приёмы применить для сетевого запуска компьютеров.

Итак, для начала необходимо раздобыть исходный образ системы с Debain Installer. Ubuntu Desktop LiveCD использует другой установщик, поэтому нам не подойдёт. Любой же не-LiveCD диск из семейства Ubuntu можно совершенно спокойно использовать. Вся дальнейшая инструкция написана для Ubuntu Alternate, хотя вряд ли она будет хоть чем-то отличаться для других вариантов системы.

Работа с iso


После того, как вы скачаете нужный iso образ, его необходимо будет распаковать. Я использую для этого такой вот скрипт:

#!/bin/bash

BUILD=iso
IMAGE=ubuntu-10.04-alternate-i386.iso

# Распаковываем образ в директорию
rm -rf $BUILD/
mkdir $BUILD/
echo "** Mounting image..."
sudo mount -o loop $IMAGE /mnt/
echo "** Syncing..."
rsync -av /mnt/ $BUILD/
chmod -R u+w $BUILD/


После его выполнения всё содержимое образа окажется в директории iso. Дальше можно будет внести необходимые изменения и запаковать образ обратно. Сразу приведу скрипт запаковки:

#!/bin/bash

IMAGE=ubuntu-custom.iso
BUILD=iso

# Запаковываем содержимое iso/ в образ ubuntu-custom.iso
echo ">>> Calculating MD5 sums..."
rm $BUILD/md5sum.txt
(cd $BUILD/ && find . -type f -print0 | xargs -0 md5sum | grep -v "boot.cat" | grep -v "md5sum.txt" > md5sum.txt)
echo ">>> Building iso image..."

mkisofs -r -V "Ubuntu OEM install" \
-cache-inodes \
-J -l -b isolinux/isolinux.bin \
-c isolinux/boot.cat -no-emul-boot \
-boot-load-size 4 -boot-info-table \
-o $IMAGE $BUILD/


Пересчитывать MD5 суммы всех файлов необходимо, чтобы работала встроенная проверка целостности диска.

Автоматизация процесса установки


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

А пока пойдём по порядку. Первым делом при запуске компьютера с CD диска Ubuntu вам предложит выбрать язык. Чтобы этот запрос не появлялся необходимо создать в папке isolinux/ файл с именем lang, всё содержимое которого будет представлять буквенный код нужного языка. У меня, например, в файле lang выбран русский язык:

ru


Все доступные варианты языка можно посмотреть в файле isolinux/langlist.

Далее необходимо, чтобы загрузчик выбирал автоматически нужный пункт меню после некоторого ожидания. В нашем случае этим пунктом будет автоматическая установка. По умолчанию Ubuntu ждёт выбора пользователя и не выполняет никаких действий. Чтобы поменять такое поведение необходимо изменить значение параметра timeout в файле isolinux/isolinux.cfg на ненулевое значение. Время измеряется в десятых долях секунды, соответственно для выставления таймаута в две секунды в этом файле должна быть такая запись:

timeout 20


Осталось только выбрать, какой пункт меню будет запускаться по умолчанию. Все пункты меню задаются в файле isolinux/text.cfg, его и будем сейчас менять. Для нашей автоматической установки мы создадим свой собственный пункт меню с названием «OEM Install» для того, чтобы остались доступны обычные опции установки. Сразу надо сказать, что самим процессом установки управляют так называемые preseed файлы, которые лежат в соответствующей директории на диске. О них чуть позже, пока же можно скопировать описание любого стандартного пункта меню, поменять его имя и имя preseed файла для него, а так же сделать его запускаемым по умолчанию. Вот что в итоге получилось у меня:

default oem
label oem
menu label ^OEM install
kernel /install/vmlinuz
append file=/cdrom/preseed/oem.seed initrd=/install/initrd.gz quiet --


На этом подготовительный этап заканчивается, теперь необходимо разбираться непосредственно с технологией preseed.

Preseed


Технология preseed позволяет заранее указать ответы на вопросы, задаваемые при установке, убрав таким образом необходимость отвечать на них вручную. Это позволяет создать полностью автоматические сценарии со всеми необходимыми настройками.

Если копнуть чуть глубже, то можно выяснить, что Debian Installer использует систему debconf для управления процессом установки, а технология preseed просто заранее добавляет нужные ответы в базу данных debconf. Таким образом с помощью preseed можно настроить не только установщик, но и другие приложения, использующие debconf, хотя эта особенность вам вряд ли пригодится.

Каждая инструкция preseed состоит обычно из четырёх частей: владельца, названия параметра, типа параметра и значения. Между частями обязательно должен быть ровно один пробел. Установщик носит имя d-i, и именно это значение будет стоять в первом поле в большинстве инструкций. Существует три способа задания инструкций preseed:

  1. Через параметры запуска initrd.
  2. Через указание загружаемого по сети файла с инструкциями.
  3. Через локальный файл с инструкциями.

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

Есть и ещё одно существенное различие: инструкции, передаваемые через параметры initrd добавляются в базу до запуска установщика, инструкции из локального файла — после настройки языковых и региональных опций, а инструкции из сетевого файла — после настройки сети. Поэтому чтобы сделать полностью автоматический установщик в любом случае потребуется указывать параметры для initrd. С них и начнём.

Необходимо немного поменять файл isolinux/text.cfg, добавив несколько опций загрузки к нашему OEM Install пункту. В итоге должно получиться примерно следующее:

default oem
label oem
menu label ^OEM install
kernel /install/vmlinuz
append file=/cdrom/preseed/oem.seed debian-installer/locale=ru_RU.UTF-8 console-setup/layoutcode=ru localechooser/translation/warn-light=true localechooser/translation/warn-severe=true console-setup/toggle=Alt+Shift initrd=/install/initrd.gz quiet --


Я думаю в целом понятно, что это за параметры, и что здесь можно поменять. Теперь всего лишь осталось создать основной файл с инструкциями для preseed, который, как вы уже наверно догадались, в моём случае называется preseed/oem.seed. Сразу хочу обратить внимание, что для передачи имени файла установщику служит параметр file. Этот параметр будет работать только при загрузке с диска с помощью isolinux, и в нём для ссылки на содержимое диска можно использовать путь /cdrom.

Вот комментированное содержимое моего preseed файла:

# Locales
d-i debian-installer/locale string ru_RU.UTF-8

# Keyboard
d-i localechooser/shortlist select RU
d-i console-setup/ask_detect boolean false
d-i console-setup/layoutcode string ru
d-i console-setup/variant select Россия
d-i console-setup/toggle select Alt+Shift

# Network
d-i netcfg/choose_interface select auto
d-i netcfg/get_hostname string xubuntu
d-i netcfg/dhcp_failed note
d-i netcfg/dhcp_options select Do not configure the network at this time

# Clock
d-i clock-setup/utc boolean true
d-i time/zone string Europe/Moscow
d-i clock-setup/ntp boolean true

# Users
d-i passwd/root-login boolean true
d-i passwd/make-user boolean true
d-i passwd/root-password-crypted password $1$fbh0yv5L$qlugJUXOjNhiakQUYiJ7x0
d-i passwd/user-fullname string Ubuntu user
d-i passwd/username string ubuntu
d-i passwd/user-password-crypted password $1$fbh0yv5L$qlugJUXOjNhiakQUYiJ7x0
d-i user-setup/allow-password-weak boolean true
d-i user-setup/encrypt-home boolean false

# Partitioning
d-i partman-auto/disk string /dev/sda
d-i partman-auto/method string regular
partman-auto partman-auto/init_automatically_partition select Guided - use entire disk
partman-auto partman-auto/automatically_partition select
d-i partman-auto/purge_lvm_from_device boolean true
d-i partman/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true

# GRUB
d-i grub-installer/only_debian boolean true
d-i grub-installer/with_other_os boolean true

# APT
d-i apt-setup/restricted boolean true
d-i apt-setup/universe boolean true
d-i apt-setup/multiverse boolean true
d-i apt-setup/non-free boolean true
d-i mirror/ftp/proxy string
d-i mirror/http/proxy string

# At last
d-i finish-install/reboot_in_progress note

tasksel tasksel/first multiselect ubuntu-desktop

d-i preseed/late_command string mkdir /target/install/; cp -R /cdrom/extra/* /target/install/; chroot /target chmod +x /install/postinstall.sh; chroot /target bash /install/postinstall.sh


В целом по именам опций можно понять, за что они отвечают, однако несколько интересных моментов я всё же прокомментирую.

Во-первых имейте ввиду, что для того, чтобы писать сценарии автоматической установки, надо чётко себе представлять установку в ручном режиме, в частности, на какие вопросы, когда и в каких случаях приходится отвечать. С помощью preseed можно поставить систему ровно также, как и в ручном режиме. Единственное ограничение — в автоматическом режиме нельзя произвести установку на уже имеющиеся на компьютере разделы. В моём сценарии я использую самый простой подход к выделению места: очистку и автоматическую разметку под систему всего первого жёсткого диска.

Кроме того, при автоматической установке можно использовать многие возможности, недоступные в ручном режиме. Например, вы можете задать пароль для root и создать непривилегированного пользователя системы, как и сделано у меня, а можете использовать поведение по умолчанию и сделать первого пользователя администратором, предоставив ему доступ к настройкам системы через sudo. В первом случае необходимо присвоить параметру passwd/root-login значение true и указать пароль для root, во втором — просто не добавлять этот параметр в preseed файл. Кстати, пароль можно указывать как в явном виде (крайне не рекомендуется), так и в виде хеша, аналогичного хешу в файле /etc/shadow. Во втором случае можно задать нужный пароль какому-нибудь пользователю на работающей системе, а затем скопировать значение хеша пароля для него из файла /etc/shadow в свой preseed файл. Хеши, используемые в моём файле, соответствуют паролю Passw0rd.

Большинство полезных опций preseed можно найти в официальной документации Ubuntu. Кстати, обратите внимание: для того, чтобы указывать в сценариях preseed ответы на вопросы, в которых надо выбрать один из нескольких пунктов, достаточно всего лишь написать текст нужного пункта на английском языке (на самом деле можно только начало и можно даже не на английском, а на любом). Поэтому если вы знаете название нужной опции, то вы можете поставить систему в ручном режиме и записать текст нужного вам значения для этой опции, а потом добавить её автоматическую настройку в свой preseed файл. В моём сценарии подобным образом задано, например, значение для параметра netcfg/dhcp_options, отвечающего за действия в случае невозможности сконфигурировать сеть автоматически.

Если вы не нашли нужных вам опций в документации, то можете поставить систему вручную, а затем сразу после установки выполнить в новой системе две нижеприведённых команды:

sudo apt-get install debconf-utils
sudo debconf-get-selections --installer > seedlog.txt


В результате вы получите в файле seedlog.txt все значения из базы debconf, которые были использованы в процессе установки. Среди них вполне можно найти нужные вам параметры.

Как автоматизировать процесс установки вроде разобрались, теперь немного про то, как можно настроить саму устанавливаемую систему.

Настройка системы


Во-первых, обратите внимание, для указания инсталлятору набора пакетов для установки поверх базовой системы, используются задания tasksel. В приведённом выше сценарии я устанавливаю задание ubuntu-desktop, т.е. базовую систему Ubuntu для настольных компьютеров. Тому, как изменять списки устанавливаемых пакетов и управлять заданиями tasksel, будет посвящена следующая статья. Пока же будем считать, что нас вполне устраивает базовая Ubuntu и всё, что нам нужно — это настроить её для своих нужд. Кстати, Alternate диски различных вариаций Ubuntu содержат набор пакетов только под одно какое-то конкретное задание tasksel. То есть, например, на диске Xubuntu Alternate будут пакеты только для установки задания xubuntu-desktop, поэтому лучше скопировать название задания для своего preseed сценария из стандартного файла, находящегося в директории preseed/ вашего компакт-диска, и не пытаться его менять.

Но как же настроить устанавливаемую систему? Для этих целей в preseed предусмотрена возможность выполнения произвольной команды после завершения установки системы. Команда эта указывается в параметре preseed/late_command и может содержать вызов всех базовых утилит. При этом доступны две особенные директории — /cdrom, которая, как можно догадаться, ссылается на содержимое установочного диска, и /target, которая ссылается на корень уже установленной на жёсткий диск системы.

Для того, чтобы что-то поменять в установленной системе, можно использовать простой трюк — войти в эту систему с помощью chroot и выполнить заранее приготовленный скрипт. При этом надо учитывать, что никакие службы при входе через chroot запущены не будут. Поэтому, например, не стоит инсталлировать таким способом пакеты, требующие доступа к MySQL серверу в процессе установки.

Мой сценарий содержит такую вот команду:

mkdir /target/install/; cp -R /cdrom/extra/* /target/install/; chroot /target chmod +x /install/postinstall.sh; chroot /target bash /install/postinstall.sh


Как видно, я создаю в корне установленной системы директорию install/ и копирую в неё всё содержимое папки extra/ с моего диска, затем запускаю на выполнение скрипт postinstall.sh, предварительно войдя в новую систему с помощью chroot.

Скрипт postinstall.sh может содержать всё, что угодно, с ограничениями, описанными выше. Например:

#!/bin/bash

# Для APT. Эти переменные наследуются от инсталлятора и мешают нормальной работе.
unset DEBCONF_REDIR
unset DEBCONF_FRONTEND
unset DEBIAN_HAS_FRONTEND
unset DEBIAN_FRONTEND

# Устанавливаем немного дополнительных пакетов
dpkg -i /install/debs/*.deb

# Копируем заренее подготовленную начальную конфигурацию пользователя ubuntu
cp -R /install/home/* /home/ubuntu/
cp -R /install/home/.config /home/ubuntu/
cp -R /install/home/.local /home/ubuntu/
cp -R /install/home/.gconf /home/ubuntu/
chown -R ubuntu:ubuntu /home/ubuntu
chmod -R u+w /home/ubuntu


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

Установка по сети с использованием pxelinux


Все вышеприведённые инструкции можно использовать и для организации установки по сети с помощью загрузчика pxelinux. Однако при этом будет несколько важных отличий:

  1. В дополнение к параметрам языка и клавиатуры preseed опции настройки сети также придётся передавать как явные параметры initrd.
  2. Нельзя использовать initrd параметр file для загрузки preseed файла, вместо него нужно использовать параметр url. Кроме того можно получать имя файла по DHCP, подробней об этом в официальной документации.
  3. Нельзя использовать директорию /cdrom ни в каких preseed параметрах, в частности, в preseed/late_command. Соответственно загружать скрипт настройки и все необходимые данные для него придётся также по сети.

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

P.S. Всё писалось по памяти, возможно я о чём-то забыл упомянуть и что-то объяснил недостаточно понятно. Поэтому любые дополнения и замечания всячески приветствуются.
P.P.S. Будет и вторая статья, посвящённая модификации репозитория на CD и изменению заданий tasksel под свои нужды.



(c)

Далее

Победил apt-get в его не желании ходить через proxy

12:20

Для работы apt-get через proxy

/etc/apt/apt.conf.d/proxy

Acquire::http::Proxy "http://proxy:port/";
Acquire::ftp::Proxy "ftp://proxy:port/";

(c)

Пересборка пакетов для Ubuntu (Debian)

12:03

Думаю, практически все понимают преимущества пакетных менеджеров над установкой при помощи ./configure && make && make install.

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

  • Подготовка. Нам понадобятся следующие пакты: devscripts build-essential fakeroot.
    sudo apt-get install devscripts build-essential fakeroot
  • Скачиваем исходники. Для этого должны быть подключены соответствующие репозитории. Нам нужен libpurple0, т.к. патч относится к этой библиотеке. На самом же деле libpurple, pidgin и pidgin-data имеют общий исходник, там что мы можем написать как
    apt-get source libpurple0
    так и
    apt-get source pidgin
    Обратите внимание, что apt-get source надо делать не из под sudo. Исходники скачиваются в текущую директорию.
  • Патчим.
    wget http://launchpadlibrarian.net/15741199/pidgin-2.4.2-icq.patch
    cd pidgin-2.4.1
    patch -p0 < ../pidgin-2.4.2-icq.patch
  • Устанавливаем зависимости, необходимые для сборки:
    sudo apt-get build-dep libpurple0
  • Пересобираем пакет (из той же директории)
    debuild -us -uc
  • Получившийся пакет устанавливаем:
    cd ..
    sudo dpkg -i libpurple0_2.4.1-1ubuntu2_amd64.deb

    Если у вас i386-дистрибутив, то пакет будет называться libpurple0_2.4.1-1ubuntu2_i386.deb.

После этой операции pidgin (после перезагрузки) начинает подключаться к ICQ.

P.S. Настало время переходить на Jabber :)

UPD: Для убунты, вроде бы, уже есть пакет на ppa. Тем не менее, моей главной задачей было показать, как пересобирать пакеты.

(c)

Далее

Теория создания апплета для GNOME

09:41

Создание апплета для GNOME

Не знаю как для других языков программирования, но когда начал писать апплет для GNOME на Python, столкнулся с тем, что по этой проблеме практически отсутствует какая-либо документация. Единственное нормальное руководство, которое помогло хоть немного понять что к чему, это http://pyobject.ru/tag/gnome.

 

Этой статьёй попробую немного восполнить пробелы в теоретических основах, чтобы было ясно почему нужно делать именно так, а не иначе. Гуру GTK и GNOME могут прочесть эту статью с целью дополнить или уточнить приведённую информацию. Остальные же смогут немного глубже понять как работают апплеты в GNOME.

Далее