Diff: [root] @ ba076b5fe6f | faq | css

Deleted wtd

File deleted: 33188 wtd/f [Diff]

diff --git a/wtd/f b/wtd/f
deleted file mode 100644
index e69de29..0000000
-- a/wtd/f
++ /dev/null

File deleted: 33188 wtd/slax [Diff]

diff --git a/wtd/slax b/wtd/slax
deleted file mode 100644
index 3688288..0000000
-- a/wtd/slax
++ /dev/null
@@ -1,287 +0,0 @@
h1. Доводим live-usb до ума

p. Статья спасена из "блога на вордпрессе":http://apsheronets.wordpress.com/tag/slax/.

h2. Часть 1: Почему SLAX?

Моей задачей было создание портативной домашней системы. Я не хотел делать никакой служебный дистрибутив или что-то в этом роде. Для восстановления системы у меня есть SystemRescueCD, для проверки сетей — замечательный BackTrack, поэтому мне такое не нужно. Мне хотелось сделать так. чтобы на чужом компьютере всё было как дома.

За время моего использования GNU/Linux я совсем отвык от windows-интерфейса. Теперь я переключаю раскладку клавишей CapsLock, использую compose key, настраиваю систему через консоль, держу SSH на сервере, набираю код в VIM'е, управляю программами при помощи мышиных жестов, шифрую переписку, пользуюсь Jabber'ом... Мелочи, но их много.

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

В качестве дистрибутива я выбрал SLAX, потому что он:

* маленький, простой, лёгкий и быстрый;
* изначально создавался как live-дистрибутив и прекрасно выполняет эту роль;
* придерживается "принципа KISS":http://en.wikipedia.org/wiki/KISS_principle;
* имеет немалочисленное сообщество;
* построен на основе замечательной системы модулей, отдельно сохраняет изменения в файловой системе;
* может быть установлен на файловую систему FAT;
* поставляется со средой KDE, моей любимой.

h2. Часть 2: Как работает?

Чтобы всем было непонятно, я расскажу, откуда в слаксе файлы берутся.

В директории @slax/base/@ лежат LZM-модули, из которых вылупляется базовая система. Сам модуль напоминает пакет, только с одним отличием — он никогда не распаковывается на физический носитель, а просто подключается к файловой системе. И не нужно никаких процедур установок или удалений: модуль либо подключён, либо нет. Для подключения стороннего модуля к системе достаточно набрать @activate "имя_модуля"@ или положить его в директорию @slax/modules/@, откуда он сам подключится после запуска системы.

А как быть с данными, которые накапливаются в процессе работы? Они все складываются в директорию @slax/changes/@ на флеш-носителе. Например, если вы набрали документ и сохранили его по адресу @/home/user/document.odf@, то физически система положит его в @slax/changes/home/user/document.odf@. При следующем запуске так же загрузится базовая система из модулей, директория @slax/changes/@ подключится к корню и всё станет так, как было за сеанс предыдущей работы.

Следует отметить, что многие конфигурационные файлы (директория @/etc@) создаются live-скриптами каждый раз заново, поэтому бесполезно, например, редактировать @/etc/X11/xorg.conf@ по своему вскусу — он всё равно будет стёрт после перезагрузки.

Но самое интересное — это возможность оверлея. В @slax/changes/@ хранятся не только данные о пользовательских файлах, но и данные об изменении уже существующих файлов из модулей! Допустим, мы хотим заменить утилиту @ls@ своей версией, более продвинутой, с возможностью грабить караваны. Для этого нам нужно просто переместить её в директорию @/bin/@, заменив оригинальный файл. Разумеется, изменения вступят в силу немедленно: набрав @ls@ в консоли, мы получим "продвинутую" версию. Тем временем на физический носитель запишется файл @slax/changes/bin/ls@, который после перезагрузки "перекроет" оригинальную версию из модуля. С оригинальной же версией ничего не происходит. То есть модули доступны только для чтения, но есть возможность изменения файлов, находящихся в них.

Таким образом, если новая версия @ls@ окажется нестабильной, всё, что нам нужно для восстановления былой работоспособности — это удаление @slax/changes/bin/ls@. Так как система не найдёт утилиту @ls@ в папке @slax/changes/@, она пойдёт за ней в модуль, где утилита оставалась без изменений всё это время. Как вы уже могли догадаться, "поломать" оригинальные системные файлы становится невозможно, а для ремонта нам всего лишь нужно почистить @slax/changes/@. Чего хочешь, то и твори.

Кстати, есть возможность не только изменять файлы из базовой системы, но и «удалять» их. Попробуйте разобраться, как это работатет.

Также сводится до банальности процесс обновления системы. Старые файлы просто заменяются файлами нового релиза, а @slax/modules/@ и @slax/changes/@ остаются нетронутыми. Поэтому все изменения за время жизни системы сохраняются, и никаких вам пакетных менеджеров и конфликтов.

h2. Часть 3: Установка

Ставим на flash-носитель. Раздел на нашей флешке можно сформатировать в любую файловую систему — хоть в FAT, хоть в Ext2, хоть в ReiserFS. Везде заработает. Никаких своп-разделов не нужно: если таковые имеются на жёстком диске, они будут подключены при загрузке системы.

p(. Несмотря на то, что SLAX, используя хитрые костыли, нормально работает в FAT'е, я НЕ рекомендую устанавливать систему на FAT-раздел. Просто потому, что в этом случае:

*( возможны потери сохранённых данных в случае некорректного завершения работы;
* права на файлы и папки, символические ссылки, а так же регистр символов в именах файлов и папок будут сохраняться необычным способом;
* вы закалебаетесь чистить флешку от вирусов с Windows-машин.

p(. Кстати, я установил SLAX именно на FAT, и мне приходится терпеть все эти неудобства.

Итак, скачиваем последнюю версию дистрибутива в формате tar с "ftp://slax.org/":ftp://slax.org/. Ещё лучше "стянуть с торрента":http://linuxtracker.org/index.php?page=torrents&search=&category=24&active=0. Когда скачали — монтируем раздел на флешке в какую-либо директорию. У меня это @/mnt/flash@:

bc. # mount /dev/sda1 /mnt/flash

Распаковываем скачанный архив в эту папку:

bc. # tar xvf slax-*.tar -C /mnt/flash

Затем делаем этот раздел загрузочным. Для этого переходим в каталог @boot/@ на нашей флешке и запускам скрипт @bootinst.sh@:

bc. # cd /mnt/flash/boot
# sh bootinst.sh

Всё. Можно перезагрузиться, настроить в BIOS'е загрузку с USB-Flash и пользоваться портативной системой.

h3. Локализация

Вообще-то на официальном FTP-сервере есть всё необходимое для русификации. Но так как идущую по умолчанию локаль iso88595 мы в гробу видели, нам придётся идти другим путём.

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

Схема русификации несложная. Скачиваем два файла — модуль с локалями и загрузочный образ:

"http://komar.bitcheese.net/lzms/russian-utf8/russian-utf8-6.0.7-i486-2.lzm":http://komar.bitcheese.net/lzms/russian-utf8/russian-utf8-6.0.7-i486-2.lzm
"http://komar.bitcheese.net/lzms/russian-utf8/initrd.gz":http://komar.bitcheese.net/lzms/russian-utf8/initrd.gz

Образ @initrd.gz@ поместите в директорию @boot/@, модуль @russian-utf8-6.0.7-i486-2.lzm@ — в @slax/modules/@. После перезапуска у вас будет полностью русифицированная система.

И не забудьте переключить кодировку в Konsole. Выбор кодировки — в меню.

h3. Языки ввода

Пожалуйста, не надо ничего ковырять в @xorg.conf@. Он всё равно будет стёрт live-скриптами после перезагрузки. Прочитайте лучше "моё руководство по переключению раскладок клавиатуры в KDE":http://apsheronets.wordpress.com/2008/05/05/kde-keyboard-layout/.

h2. Часть 4: Синхронизация

Очень удобно работать за чужим компьютером, если на нём есть копии своих данных. Если речь не идёт об их утечке, разумеется. А когда к любому компьютеру можно подцепить флешку, загрузить SLAX и работать свою работу как ни в чём не бывало, а потом ещё и перенести через ту же флешку наработанную работу к себе домой — то это вообще отпад. Как можно догадаться, для этого нужно регулярно синхронизировать данные между флеш-носителем и своим родным десктопом. О некоторых тонкостях этого дела я сейчас расскажу.

Для начала нужно решить, что мы будем синхронизировать. Это могут быть:

* программы;
* их настройки;
* создаваемые нами самими данные.

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

С настройками вроде бы всё понятно: если я отключил функцию варки кофя в emacs, то я хочу видеть эту функцию отключённой и на своей портативной системе! Синхронизируя конфигурационные файлы между системами, у меня будут одинаковые настройки и одинаковое поведение программ на обеих системах. Но и тут не всё ладно. Бестолково, например, синхронизировать файлы из каталога @/etc@, часть которых всё равно перезаписывается при каждом старте SLAX'а.

Также следует понимать, что на не все настройки мы хотим видеть одинаковыми. Запись логов в IRC-клиенте — очень полезная вещь на десктопе, но писать их на флеш-носитель неразумно: он имеет ограниченное количество циклов перезаписи и от такой эксплуатации накроется быстрее обычного. Ярлычки на панельке могут радовать глаза, но на портативной системе, где не окажется запускаемых ими программ, они окажутся совершенно бесполезными.

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

Копия наших рабочих данных на SLAX'е позволяет нам за любым компьютером скоротать время, занимаясь любимой работой. Пописать, покодить.

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

!http://img337.imageshack.us/img337/9062/basket2smallug9.png!

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

p(. Только не забывайте, что вашу флешку — и все данные на ней — могут украсть. Шифрования мы пока ещё не прикрутили.

Главным инструментом для синхронизации будет Unison.

p(. "Unison":http://ru.wikipedia.org/wiki/Unison — утилита для синхронизации файлов, написанная на языке OCaml. Она позволяет синхронизировать две копии файлов, на локальном компьютере или на двух разных хостах, обновляя каждую копию в зависимости от произведённых изменений.

*( Unison работает под Unix-подобными операционными системами и под Windows. Он также может работать с разными платформами одновременно, например, синхронизируя файлы между Windows-ноутбуком и Unix-сервером.
* В отличие от простых утилит для создания зеркал и бекапов, Unison умеет работать с изменениями в обеих копиях файлов. Неконфликтующие изменения могут вноситься автоматически, конфликтующие определяются и отображаются для ручного разрешения.
* Unison — не распределённая файловая система, а потому может работать без дополнительных модулей в ядре и прав суперпользователя.
* Unison работает между любыми компьютерами, соединёнными между собой глобальной или локальной сетью, через сокет или зашифрованное соединение. Он аккуратно относится к ширине канала и прекрасно работает даже на медленных PPP-соединениях. Передача небольших изменений больших файлов оптимизируется протоколом, похожим на rsync.
* Unison устойчив к сбоям, позволяет восстановить копии файлов после обрыва связи или некорретного завершения работы.
* Unison имеет чистую, точную спецификацию, а исходный код Unison'а доступен по лицензии GPL.

Unison нам понадобиться главным образом на нашем десктопе, так что установите его с помощью своего любимого пакетного менеджера. Иногда он будет нужным и на флешке, поэтому скачайте "мой lzm-модуль юнисона":http://komar.bitcheese.net/lzms/ и поместите его в @slax/modules@.

p(. Для любителей графических интерфейсов я специально не собрал GUI-версию unison'а — чтобы не выкабенивались и сами почувствовали удобство консольной версии.

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

!http://img135.imageshack.us/img135/7284/unisonfg9.png!

Нам будут показаны два столбика — для первой и для второй папки, справа от них — синхронизируемый файл, а так же срелки между двумя директориями. Где начало стрелки — папка, в которой было произведено изменение, а где конец — где его не было и куда нужно эти изменения внести. То есть файл как бы переносится из начала стрелки в конец. Если такая стрелка есть — значит, файл не конфликтует, и, если вы этого хотите, unison сделает действие по умолчанию. Для этого нужно нажать F. Если с действием по умолчанию вы по какой-то причине не согласны — нажмите на @<@ или @>@, «поворачивая» стрелку в ту сторону, в которую вам нравится. Если вы не хотите ничего делать с этим файлом — поставьте @/@ (слеш), и файл просто пропустится.

p(. Ещё один немаловажный момент. Перед первым боевым запуском синхронизируйте и часовые пояса на обеих системах. Проще всего это сделать кликнув правой кнопкой по «часикам» в KDE. При определённых обстоятельствах это может привести к тому, что даты изменения файлов будут различаться на несколько часов.

Подробнее о юнисоне "написано в документации на официальном сайте":http://www.cis.upenn.edu/~bcpierce/unison/download/releases/stable/unison-manual.html. Прочитайте, там всё не так страшно, как кажется. Здесь я лишь покажу, как получилось у меня.

p(. Кстати, можно избавиться от многих проблем, связанных с различием логинов, сделав на SLAX'е символическую ссылку в @/home@ на директорию @/root@. Например, @/home/user → /root@

Я сделал файл @~/.unison/slax.prf@ следующего содержания:

bc.. #
# Paths for synchronization
#

# Unison :)
path = .unison/slax.prf

# Vim
path = .vimrc

# Bash
path = .bashrc

# KWallet
path = .kde/share/apps/kwallet/
path = .kde/share/config/kwalletrc

# SSH
path = .ssh/

# Kontact
path = .kde/share/config/kontactrc
path = .kde/share/config/kontact_summaryrc
path = .kde/share/apps/korganizer/
path = .kde/share/config/kaddressbookrc
path = .kde/share/apps/kabc/
path = .kde/share/apps/kontactsummary
path = .kde/share/config/kcmkmailsummaryrc
path = .kde/share/config/kcmkorgsummaryrc
path = .kde/share/config/kcmsdsummaryrc

# My signature for emails
path = .signature

# Basket
path = .kde/share/apps/basket
path = .kde/share/config/basketrc

# Konversation
path = .kde/share/apps/konversation
#path = .kde/share/config/konversationrc # Because log settings

# Konqueror
path = .kde/share/config/konquerorrc
path = .kde/share/apps/konqueror/bookmarks.xml
path = .kde/share/apps/konqueror/konqueror.rc
path = .kde/share/apps/konqueror/profiles/
path = .kde/share/apps/kcookiejar/cookies # Konqueror's cookies
path = .kde/share/config/khtmlrc # Konqueror's AdBlock

# Kopete
path = .kde/share/apps/kopete_cryptography
#path = .kde/share/apps/kopete_history
path = .kde/share/apps/kopete
#path = .kde/share/apps/kopete_statistics
path = .kde/share/config/kopeterc

# Konsole
path = .kde/share/config/konsolerc
path = .kde/share/config/konsolepartrc
path = .kde/share/apps/konsole/

# Yakuake
path = .kde/share/config/yakuakerc
path = .kde/share/apps/yakuake # always empty?

# KDE hotkeys
path = .kde/share/config/khotkeysrc

# KWin rules
path = .kde/share/config/kwinrulesrc

# Developers! Developers! Developers!
path = devel/

#
# Ignore paths
#

# Ignore sockets
ignore = Name *socket*

# Ignore cache
ignore = Path .kde/cache-*
ignore = Path .kde/share/apps/konqueror/faviconrc

# Kopete cache too
ignore = Path .kde/share/apps/kopete/jabber-capabilities-cache.xml
ignore = Path .kde/share/apps/kopete/jabberphotos
ignore = Path .kde/share/apps/kopete/oscarpictures

# Ignore temporary files
ignore = Name lock
ignore = Name *random_seed*
ignore = Name *.new
ignore = Name std.vcf__*

# Ignore SLAX specific files
ignore = Name .pxovl*

p. И добавил в @/usr/local/bin/@ на обоих системах два похожих, но разных скрипта.

@/mnt/flash/slax/changes/usr/local/bin/slaxsync@:

bc. #!/bin/sh
# Synchronization script for SLAX.
# Version for USB-Flash.
[ "$1" = "" ] &amp;&amp; home="/mnt/hda2/home/komar/" || home=$1
unison slax \
$home \
/root/

@/usr/local/bin/slaxsync@:

bc. #!/bin/sh
# Synchronization script for SLAX.
# Version for home.
unison slax -perms 0 \ # Because I use FAT
$HOME \
/mnt/flash/slax/changes/root/

p(. В директорию @/usr/local/bin/@ сам Бог велел класть самописные скрипты, так как она во многих дистрибутивах по умолчанию включена в @$PATH@, её не тронут пакетные менеджеры и её удобно бекапить.

У меня синхронизация занимает несколько секунд. Пробуйте.

h2. Приложение

h3. Как загрузиться с флешки, если BIOS не поддерживает загрузку с USB?

Такое можно часто встретить на старых компьютерах. USB-контролёр есть, а загрузку с него BIOS не поддерживает. Дабы избежать такой несправедливости, Томас подготовил маленькие образы для CD, загружающие ядро и и загрузочный образ. Их можно найти на "ftp://slax.org":ftp://slax.org, записать на mini-cd и таскать при себе где-нибудь в кошельке.

Однако этот загрузочный образ сведёт на нет все наши старания по юникодизации системы. Если вы настраивали русский язык так, как писал я, то будет лучше записать образ с другим initrd, корректно работающим с русским языком. Такую исошку я сделал, её можно скачать под именем @slax-boot-usb-from-cd-utf8-x.x.x.iso@ здесь:

"http://komar.bitcheese.net/lzms/russian-utf8/":http://komar.bitcheese.net/lzms/russian-utf8/.

h3. Модули

Так как разработка SLAX'а сейчас фактически стоит на месте, приходится делать свои модули для необходимых программ.

Собранные мною модули в красивом каталоге со скриншотиками лежат на slax.org: "http://www.slax.org/modules.php?author=874":http://www.slax.org/modules.php?author=874.

Но, по закону мироздания, это сайт часто бывает недоступным. Поэтому я зеракалирую их здесь: "http://komar.bitcheese.net/lzms/":http://komar.bitcheese.net/lzms/.

Если интересуют только slaxbuild'ы - посмотрите здесь: "http://komar.bitcheese.net/darcs/slaxbuilds/":http://komar.bitcheese.net/darcs/slaxbuilds/.

File deleted: 33188 wtd/wtf/f [Diff]

diff --git a/wtd/wtf/f b/wtd/wtf/f
deleted file mode 100644
index e69de29..0000000
-- a/wtd/wtf/f
++ /dev/null

By Voker57 on 2010-03-21 17:00:05 +0300 Powered by bitcheese wiki engine