SliTaz GNU/Linux official and community documentation wiki.
.png
This translation is older than the original page and might be outdated. See what has changed.
Translations of this page:

Модификация SliTaz Live CD

Введение

Модификация SliTaz Live CD, или как получить удовольствие от ISO-образа Live CD. Обратите внимание, что вы также можете создать свою вариацию дистрибутива (flavor) при помощи Tazlito. Создать свой собственный загрузочный ISO-образ очень легко, что подробно описано ниже. При манипуляциях с ISO-образом можно добавлять новые файлы или изменять существующие, находящиеся на Live CD. Размер ISO-образа SliTaz менее 30 Мб, а на CD-R или CD-RW примерно 700 Мб места, так что есть где развернуться. Например, вы можете поместить туда свои фотографии и устроить слайдшоу при помощи Gqview. Модификация ISO-образа позволяет изменить конфигурационные файлы загрузчика, стартовую картинку и непосредственно сам GRUB. Также можно добавить утилиту Memtest86 для тестирования оперативной памяти. Теми же способами можно даже изменить файловую систему — правда, для этого потребуется чуть больше команд и времени.

Начальная подготовка

Для начала определим место для проведения наших экспериментов, создав папку и несколько подпапок для файлов. Изменять ISO-образ можно как из самого SliTaz, так и из любого другого дистрибутива Linux, например, Debian, Fedora, PCLinuxOS и др. Если вы загружаете SliTaz в режиме Live CD, при котором можно извлечь диск после загрузки SliTaz в память, советуем использовать флешку для проведения всех действий, иначе все изменения пропадут при выключении компьютера. Прежде всего, создадим папку внутри /home/slitaz в нашей файловой системе. В ней будем хранить исходный ISO-образ и создадим папку src/, куда будем класть архивы с исходниками нужных программ. Все действия можно осуществлять как в командной строке Х-терминала (Xterm), так и в текстовом режиме, в терминале Linux. Советуем запускать все команды из-под root во избежание проблем с правами доступа. Чтобы перейти к учетной записи root (администратора), создадим папку /home/slitaz/ и выполним команды:

$ su
 # mkdir -p /home/slitaz/hacked
(# mkdir -p /home/slitaz/src)
 # cd /home/slitaz/hacked

Извлекаем содержимое ISO-образа

Теперь, когда мы в рабочей папке, мы должны создать папку, которая будет представлять содержимое корневого каталога CD-ROM, и извлечь файлы из образа, а именно — ядро Linux (bzImage), сжатую файловую систему (rootfs.gz) и файлы загрузчика isolinux. Извлечь эти файлы можно двумя способами — взять с самого диска или из ISO-образа. Чтобы создать папку для корневого каталога CD rootcd и скопировать файлы с CD-ROM устройства /dev/cdrom, которое смонтировано как /media/cdrom, выполним команды:

# mount -t iso9660 /dev/cdrom /media/cdrom
# mkdir rootcd
# cp -a /media/cdrom/* rootcd

Чтобы смонтировать образ во временную папку /tmp/loop (допустим, он называется slitaz-cooking.iso), создать папку rootcd, скопировать все файлы и отмонтировать образ, введем:

# mkdir /tmp/loop
# mount -o loop slitaz-cooking.iso /tmp/loop
# mkdir rootcd
# cp -a /tmp/loop/* rootcd
# umount /tmp/loop

Готово — теперь все необходимые файлы находятся в папке rootcd/. Чтобы в этом убедиться, выведем весь список файлов командой ls:

# ls -R rootcd

Добавляем файлы в ISO-образ

Добавить файлы и папки в образ — значит скопировать их в папку rootcd и собрать новый образ. Эти файлы можно поместить в одну или две папки, созданные в корневом каталоге CD. Как только образ будет записан на CD-R или CD-RW, SliTaz можно будет использовать по-прежнему, смонтировав как /media/cdrom и работая с файлами с помощью emelFM2, Clex или командной строки. Ваши данные будут доступны из любой системы Linux, BSD или даже Windows.

Создадим папки и скопируем данные

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

# mkdir rootcd/images
# chmod 777 rootcd/images

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

Изменяем конфигурацию isolinux

Изменение конфигурации isolinux позволяет создавать новые пункты загрузочного меню с другими параметрами загрузки. Например, можно запускать SliTaz с русской локализацией и раскладкой клавиатуры опциями lang=ru и kmap=ru. В плане дизайна можно изменить загрузочную картинку.

Приложение isolinux управляет загрузкой с Live CD и также входит в состав пакета Syslinux. Из исходного файла Syslinux можно запускать несколько приложений, назначение которых — запустить систему Linux. Двоичный файл isolinux.bin контролирует непосредственно процесс загрузки. Сам же загрузчик простой и быстрый, и его можно легко настраивать в графическом режиме или через текстовый редактор. В синтаксисе конфигурационного файла isolinux.cfg совсем несложно разобраться — чтобы добавить новые записи, просто копируйте и вставляйте записи исходного файла. Для изменения файла в графическом режиме с помощью Leafpad введем:

# leafpad rootcd/boot/isolinux/isolinux.cfg &

Конфигурационный файл isolinux.cfg

В начале файла isolinux.cfg, находящемся на стандартном Live CD SliTaz, следует параметр display, который управляет выводом на экран текстового файла или же файла под названием isolinux.msg. Последний использует 24 символа ASCII и загрузочную картинку.

Параметр default определяет, какой пункт меню будет загружен по умолчанию по истечении отсчета времени (timeout).

Параметр timeout содержит время в секундах до запуска системы; можно поставить 0 для мгновенной загрузки или указать, скажем, 80 сек.

Наконец, присвоив параметру prompt значение 0, можно отключить приглашение boot:.

Клавиши F1, F2 и F3 выводят файлы справки, а F4 — текстовый файл (в нашем случае — display.txt). Пример конфигурации:

display isolinux.msg
default slitaz
label slitaz
      kernel /boot/bzImage
      append initrd=/boot/rootfs.gz rw root=/dev/null vga=788
implicit 0
prompt 1
timeout 80
F1 help.txt
F2 options.txt
F3 isolinux.msg
F4 display.txt

К примеру, создадим пункт меню slitaz-ru, в котором укажем язык системы — русский, а раскладку клавиатуры — английскую:

label slitaz-ru
      kernel /boot/bzImage
      append initrd=/boot/rootfs.gz rw root=/dev/null lang=ru kmap=en

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

Устанавливаем и используем Memtest86

Приложение memtest86 (размером 92 Кб) служит для тестирования оперативной памяти (RAM). Memtest86 проводит серьезные тесты, которые в случае ошибок непосредственно указывают на их источник в аппаратуре. Эта программа будет находиться в папке boot, ее можно будет запустить, набрав memtest в строке приглашения isolinux.

Для установки memtest86 перейдем в папку /home/slitaz/src (если такой папки нет: mkdir -p /home/slitaz/src), скачаем и распакуем архив с исходниками программы:

# cd /home/slitaz/src
# wget http://www.memtest86.com/memtest86-3.3.tar.gz
# tar xzf memtest86-3.3.tar.gz

После распаковки можно будет изучить файл README, содержащий информацию о программе. Теперь установим ее в наш будущий ISO-образ. Учитывая то, что мы собираем образ в папке /home/slitaz/hacked, скопируем прекомпилированный бинарник в папку boot корневого каталога будущего CD:

# cp memtest86-3.3/precomp.bin \
  /home/slitaz/hacked/rootcd/boot/memtest

Теперь же, когда бинарник включен в состав CD, добавим пункт меню для memtest86 в конфигурационный файл isolinux и создадим загрузочный ISO. Перейдем в папку /home/slitaz/hacked и отредактируем isolinux.cfg в Leafpad:

# cd /home/slitaz/hacked
# leafpad rootcd/boot/isolinux/isolinux.cfg &

Добавьте следующие строки:

label memtest
      kernel /boot/memtest

Официальный сайт Memtest86.

Изменяем корневую систему

Модифицируя корневую систему, можно, к примеру, добавить нового пользователя и придумать ему пароль, изменить графические объекты или прописать те или иные команды в автозапуск. Для этого необходимо:

  1. распаковать файл сжатой файловой системы rootfs.gz;
  2. внести необходимые изменения;
  3. пересобрать этот файл;
  4. создать новый ISO.

Предположим, мы уже создали рабочую папку /home/slitaz/hacked. Тогда создадим в ней еще одну папку, куда будем распаковывать содержимое rootfs.gz, и назовем ее rootfs для удобства. Скопируем в нее rootfs.gz из папки rootcd/boot:

# cd /home/slitaz/hacked
# mkdir rootfs
# cp rootcd/boot/rootfs.gz rootfs

Итак, теперь у нас есть сжатый вариант системы, распакуем его при помощи cpio. С технической точки зрения rootfs.gz является cpio-файлом, сжатым с использованием алгоритма lzma или gzip. Ядро Linux распознаёт его как образ файловой системы, загружаемой в оперативную память (initramfs). При запуске системы ядро загружается в память, распаковывает образ системы и выполняет загрузочные скрипты.

Чтобы распаковать файловую систему в папку rootfs и удалить сам архив (помните, что вы можете копировать приведенные здесь команды и вставлять их в терминал), выполним команды:

# cd rootfs
# (zcat rootfs.gz 2>/dev/null || lzma d rootfs.gz -so) | cpio -id
# rm rootfs rootfs.gz

Теперь можно вносить изменения в систему. Если понадобится вывести список файлов полученной корневой системы, это можно сделать командой ls.

Вносим изменения в произвольный файл

Чтобы придерживаться принципа простоты и помочь вам понять основы, мы изменим файл скрипта, чтобы автоматически выполнить некоторые команды при запуске системы с CD. Возьмем файл /etc/init.d/local.sh — откройте его в своем любимом текстовом редакторе, например, в Geany:

# geany /etc/init.d/local.sh &

Добавим две команды, первая выводит строку с сообщением, а вторая останавливает систему на 4 секунды:

echo "* Hacked SliTaz version booting..."
sleep 4

Заново собираем образ сжатой файловой системы

Произведя все необходимые изменения, соберем образ файловой системы, используя команды find для поиска файлов, cpio для архивации, lzma и gzip для сжатия и вертикальную черту |, чтобы свести все команды воедино. Запустим эти команды из папки rootfs и создадим файл rootfs.gz в папке уровнем выше:

# find . -print | cpio -o -H newc | lzma e -si -so > ../rootfs.gz

Или через gzip:

# find . -print | cpio -o -H newc | gzip -9 > ../rootfs.gz

Наконец, скопируем полученный файл в папку rootcd/boot и соберем загрузочный ISO-образ. Для проведения первой операции выполним:

# cd ../
# cp -a rootfs.gz rootcd/boot

Создаем загрузочный ISO-образ

Следующие команды создают образ с загрузчиком isolinux, используя приложение genisoimage с несколькими параметрами. Вначале указываем имя образа укажем вначале, после ключа -o, а корневой каталог CD (rootcd) — в конце, после ключа -boot-info-table:

# genisoimage -R -o slitaz-hacked.iso -b \ boot/isolinux/isolinux.bin \
  -c boot/isolinux/boot.cat \ -no-emul-boot -boot-load-size 4 \
  -V "SliTaz-Hacked" -input-charset iso8859-1 \
  -boot-info-table rootcd

Если вы хотите проверить содержимое образа перед прожигом, смонтируйте его через loop и выведите список файлов. В SliTaz и большинстве Linux-систем записать образ в формате ISO на диск можно утилитой wodim.

Создаем ISO при помощи скрипта

Если у вас много творческих планов и вы хотите создать множество ISO-образов, вам, вероятно, захочется автоматизировать этот процесс, написав простой скрипт. Такой скрипт можно написать прямо в командной строке или в графическом режиме, не забудьте лишь сделать его исполнимым. К примеру, создать скрипт можно командой cat; EOF здесь означает End Of File — конец файла. Создадим скрипт gen_hacked_iso.sh, включающий две переменные — имя образа и путь к папке rootcd:

# cat > gen_hacked_iso.sh << "EOF"

#!/bin/sh
# Создание измененного ISO-образа.
#
ISO_NAME="slitaz-hacked.iso"
ROOTCD="rootcd"

genisoimage -R -o $ISO_NAME -b boot/isolinux/isolinux.bin \
   -c boot/isolinux/boot.cat -no-emul-boot -boot-load-size 4 \
   -V "SliTaz-Hacked" -input-charset iso8859-1 \
   -boot-info-table $ROOTCD

EOF

Теперь делаем скрипт исполняемым и запускаем:

# chmod +x gen_hacked_iso.sh
# ./gen_hacked_iso.sh

Статью перевел Cyril