пятница, 10 октября 2008 г.

Slax

Собственно, о Slax знают все. Это еще один live-cd/usb дистрибутив Linux.

В этой статье я кое-что расскажу о скриптах проекта linux-live (с помощью которых и создан Slax), опишу процесс создания своих собственных модулей для Slax и процесс получения своей версии Slax со своими модулями внутри, после чего я покажу, как создать несколько "специальных" модулей (с руссификацией и настройками пользователя), а в конце приведу полезные ссылки (для "почитать").

Плюсы и минусы Slax

Плюсы Slax'а (собственно, за что его стоит использовать):

  • Slax очень легко масштабируется - вы можете быстро и просто включить в вашу копию программы нужные вам файлы (к примеру - установки программ)

  • В 189 мегабайт (версия 6.0.7) входит много чего - KDE 3.5.9, KOffice, gcc, perl, mplayer

  • Поскольку Slax, все же, легко масштабируется, вы легко сможете выкинуть ненужный софт (KOffice, например, или сразу всю KDE)

  • Slax построен на основе самого последнего релиза Slackware - и значит относительно устойчив

  • Slax позволяет целиком загрузить себя в оперативную память

Минусы:

  • Отсутствие некоторых важных программ все-таки вынуждает "допиливать" дистрибутив под себя

  • Отсутствие python'а, консольного клиента для ftp и vim'а (см. предыдущий пункт :-) )

  • KDE. Для mini-cd - слишком тяжело

  • Отсутствие руссификации (я покажу, как это исправить)


linux-live

Проект linux-live живет здесь.

Собственно, он нацелен на быстрое и простое получение своего собственного live-cd из любой установки linux.

Каким образом это происходит? Собственно, процесс описан в тамошнем howto, вкратце все просто:

  1. Загружаем linux

  2. Включаем поддержку aufs и squashfs (возможно, еще и LZMA) в ядре с помощью патчей от linux-live (кстати, можно использовать precompiled ядро, скачиваемое с сайта проекта)

  3. Расспаковываем пакет со скриптами, правим конфиг

  4. Запускаем скрипт build

  5. Запускаем соотв. скрипт для получения ISO или bootable usb disk



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

Slax

Отсюда вы сможете скачать текущую (6.0.7) версию Slax'а (скачайте cd версию).

* Я думаю, понадобится какой-нибудь эмулятор для тестирования. VirtualBox там или Qemu.

Последовательность приготовлений такая:


mkdir my_slax
cd my_slax
wget -c http://www.slax.org/get_slax.php?download=iso
#Предполагается, что образ называется slax-6.0.7.iso - текущая версия
mkdir bla-bla-bla
su
mount slax-6.0.7.iso bla-bla-bla -o loop
cp -R bla-bla-bla disk
chown -R ВАШ_ПОЛЬЗОВАТЕЛЬ.users disk
umount bla-bla-bla
exit
rmdir bla-bla-bla
ls


Итого получим:


  • disk - содержимое образа

  • slax-6.0.7.iso - оригинальный образ



Добавляем модули

Собственно, теперь добавим пару чужих модулей.

Здесь находится официальный репозиторий. Модулей там маловато, но кое-что есть.

К примеру, python и telnet:

Скачаем модуль с python-2.5.2 и модуль с telnet-1.5 - получаем python-2.5.2-i486-1.lzm и telnet-1.5.lzm (модули slax'а имеют расширение lzm).

Теперь сделаем:


cd disk/slax
ls


Получим:


amv@amv:~/trash/my_slax/disk/slax$ ls
base/ cheatcodes.txt LICENSE make_iso.bat* modules/ requirements.txt slaxsave.zip
changelog.txt GNU_GPL livecd.sgn make_iso.sh* optional/ rootcopy/ tools/


Здесь:


  • base - содержит базовые модули slax'а (к примеру, для удаления koffice - достаточно удалить модуль base/005-koffice.lzm)

  • cheatcodes.txt - опции загрузки slax'а (бывает полезно)

  • make_iso.* - скрипты для создания iso из текущего "дерева" (собственно, они создадут live-cd bla-bla-bla.iso из нашего каталога my_slax/disk)

  • modules - это пользовательские модули, которые будут загружены при загрузке системы

  • optional - модули, загружаемые по выбору пользователя с помощью специального менеджера после загрузки системы

  • tools - скрипты из проекта linux-live - именно с их помощью происходит создание пользовательских модулей



Поместим python-2.5.2-i486-1.lzm в modules/ (чтобы python был всегда с нами :-) ), а telnet-1.5.lzm в optional (кому как, а я telnet'ом, чаще всего, звездные войны смотрю).

Соберем нашу версию slax'а:


./make_iso.sh ../../my_slax_1.iso
cd ../../
ls


Имеем:


amv@amv:~/trash/my_slax$ ls
disk/ linux-live-6.2.4/ my_slax_1.iso python-2.5.2-i486-1.lzm slax-6.0.7.iso telnet-1.5.lzm


Здесь, собственно, my_slax_1.iso - это наш live-cd. На очереди - тестирование. Кто как, а я призову на помощь qemu:


qemu -m 512 -boot d -cdrom my_slax_1.iso


* "-m 512" - это объем оперативки, который я выделил для виртуальной машины. Можете опустить этот параметр, но на объеме, меньшем 256M, Slax и Qemu чувствуют себя плохо
** По субъективным ощущениям, VirtualBox с Slax'ом работает быстрее уже на 256-и мб. оперативной памяти у виртуального компьютера. Причина неизвестна.

Когда Slax загрузится, откройте konsole (на панели ее значок - второй справа) и запустите в ней python. Он должен заработать.

Каким образом подключить optional-модули? Все просто! Менеджер модулей здесь: "K/System/Slax Module manager". Запустите его: перед вами появится окно, содержащее список всех загруженных модулей. Внизу справа - кнопка "Add a new module" - добавление новых модулей (модуль telnet-1.5.lzm лежит в /mnt/live/mnt/hdc/slax/optional/). Внизу слева - кнопка "Remove selected modules" - позволяет выгрузить выбранный модуль.

* После загрузки модуля telnet-1.5.lzm попробуйте запустить telnet в konsole
** Как вы понимаете, подключаемые модули могут лежать на другом носителе - вам необходимо просто смонтировать носитель и подключить модуль с помощью менеджера. Кстати, Slax можно целиком загрузить в ОП (если ее объем позволяет) и тогда cd-привод будет свободен.

Закройте qemu.

Создание своих собственных модулей

Теперь давайте самостоятельно создадим пару модулей для Slax.

Модуль - это некоторый файл с расширением lzm. Файл этот - архив и содержит в себе что-то вроде "патча" на корневую систему (при загрузке lzm-файл распаковывается в "/", при этом новые файлы добавляются, а существующие заменяются). По большому счету lzm-модуль не отличается от rpm, deb, tgz пакетов. Важно, что происходит только распаковка - и более никаких действий.

Сделайте (мы находимся в my_slax):


ls disk/slax/tools


Должно получится:


amv@amv:~/trash/my_slax$ ls disk/slax/tools/
activate* deactivate* deb2lzm* dir2lzm* liblinuxlive lzm2dir* mksquashfs* tgz2lzm* unsquashfs* WIN/


Нас интересуют:


  • deb2lzm - утилита получения модуля из deb'а

  • dir2lzm - утилита получения модуля из произвольного каталога (к примеру, файлы из bla-bla-bla/bin при загрузке модуля пойдут в /bin)

  • tgz2lzm - утилита получения модуля из tgz-пакета (для Slackware)

  • lzm2dir - утилита распаковки модуля в произвольный каталог



tgz2lzm

Сделаем модуль из какого-нибудь полезного Slackwar'ного пакета.

! Важно! Вам понадобится набор утилит для управления пакетами Slackware. Способ получения этого набора утилит, если у вас не Slackware, описан в следующем пункте.

Скачайте ncftp-3.2.1.

Теперь сделаем:


su -c 'disk/slax/tools/tgz2lzm ncftp-3.2.1-i486-1.tgz ncftp-3.2.1-i486-1.lzm && chown ВАШ_ПОЛЬЗОВАТЕЛЬ'


В итоге получим ncftp-3.2.1-i486-1.lzm - модуль с отличным ftp-клиентом.

* Мы можем свободно пользоваться пакетами для Slackware 12.1, поскольку Slax 6.0.7 построен на основе 12.1-й версии.

dir2lzm

Теперь попробуем сделать модуль из произвольного каталога. Для экспериментов возьмем ht-2.0.14 (это шестнадцатеричный редактор и не только). Приступим (текущий каталог - "my_slax"):


mkdir env
wget -c http://prdownloads.sourceforge.net/hte/ht-2.0.14.tar.gz
tar xzf ht-2.0.14.tar.gz
cd ht-2.0.14
./configure --prefix=`pwd`/../env/
make && make install
cd ..
disk/slax/tools/dir2lzm env ht.lzm


В итоге - на выходе мы получили модуль ht.lzm своего собственного приготовления. Теперь, после загрузки этого модуля в Slax'е, в каталоге "/bin" появится файл "ht" - исполняемый бинарик программы.

Вы можете напихать много разного мусора в "env/" и получить на выходе модуль. Чем мы и займемся, собственно.

* Кстати, попробуйте ncftp...lzm и ht.lzm в работе.

Кое-какие модули "специального" приготовления

Руссификация Slax

Она предельно проста - и основана на моем опыте внедрения ru_RU.UTF-8 в моей установке Slackware.

Для начала обзаведемся системой управления пакетами от Патрика. В предыдущем разделе я говорил, что не пользователи Slackware могут не делать пакета из ncftp...tgz, но теперь сделать пакет из tgz'шки нам придется.

Страница загрузки pkgtools-12.1.0

Итак, имеем пакет pkgtools-12.1.0-noarch-7.tgz. "Установим" его (мы находимся в каталоге "my_slax/"):


mkdir pkgtool
cd pkgtool
cp ../pkgtools-12.1.0-noarch-7.tgz ./
tar xzf pkgtools-12.1.0-noarch-7.tgz
rm -Rf bin usr var install pkgtools-12.1.0-noarch-7.tgz
tree
cd ..
export PATH="`pwd`/pkgtool/sbin/:"$PATH
echo $PATH


Получим:


amv@amv:~/trash/my_slax/pkgtool$ tree
.
`-- sbin
|-- explodepkg
|-- installpkg
|-- makebootdisk
|-- makepkg
|-- pkgtool
|-- removepkg
`-- upgradepkg
1 directory, 7 files
...
amv@amv:~/trash/my_slax$ echo $PATH
/home/amv/trash/my_slax/pkgtool/sbin/:/usr/local/bin:/usr/bin:/bin:/usr/games:/usr/lib/java/bin:/usr/lib/java/jre/bin:/usr/lib/qt/bin:/usr/share/texmf/bin:.:/home/amv/env/bin/


Нужно, чтобы installpkg находился в одном из каталогов переменной PATH (что, собственно, и происходит).

Теперь скачиваем отсюда локализацию для kde и делаем (мы находимся в каталоге "my_slax"):


disk/slax/tools/tgz2lzm kde-i18n-ru-3.5.9-noarch-1.tgz kde-i18n-ru-3.5.9-noarch-1.lzm


На выходе получим kde-i18n-ru-3.5.9-noarch-1.lzm.

Отлично. Теперь нужно добавить поддержку ru_RU.UTF-8 в консоле. Это тема для отдельной статьи, поэтому я просто приведу ссылку на мой модуль, который, собственно, это и делает.

Поместите оба полученных модуля в disk/slax/modules и пересоберите образ - русский язык должен появится.

Настройки пользователя

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

Выход прост: загрузите Slax в эмуляторе (обязательно необходимо подключение по сети), настройте DE должным образом, после чего загрузите на свою основную машину каталог "/root" из Slax'а (например, в наш каталог "env/") - вам останется только собрать новый модуль, в котором будет только домашний каталог Slax'овского root'а со всеми сделанными вами изменениями.

Почитать

источник
Отправить комментарий

Неактивный атрибут "скрытый" или как снять атрибут скрытый после вируса

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