Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
ru:handbook:hacklivecd [2010/07/26 09:49] lexeii created |
ru:handbook:hacklivecd [2010/10/01 01:01] (current) lexeii tiny edits |
||
---|---|---|---|
Line 1: | Line 1: | ||
======Модификация SliTaz Live CD====== | ======Модификация 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// для тестирования оперативной памяти. Теми же способами можно даже изменить файловую систему — правда, для этого потребуется чуть больше команд и времени. | //Модификация 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/// и выполним команды: | Для начала определим место для проведения наших экспериментов, создав папку и несколько подпапок для файлов. Изменять ISO-образ можно как из самого SliTaz, так и из любого другого дистрибутива Linux, например, Debian, Fedora, PCLinuxOS и др. Если вы загружаете SliTaz в режиме Live CD, при котором можно извлечь диск после загрузки SliTaz в память, советуем использовать флешку для проведения всех действий, иначе все изменения пропадут при выключении компьютера. Прежде всего, создадим папку внутри ///home/slitaz// в нашей файловой системе. В ней будем хранить исходный ISO-образ и создадим папку src/, куда будем класть архивы с исходниками нужных программ. Все действия можно осуществлять как в командной строке Х-терминала (Xterm), так и в текстовом режиме, в терминале Linux. Советуем запускать все команды из-под root во избежание проблем с правами доступа. Чтобы перейти к учетной записи root (администратора), создадим папку ///home/slitaz/// и выполним команды: | ||
- | |||
- | |||
<code> | <code> | ||
- | |||
$ su | $ su | ||
- | |||
# mkdir -p /home/slitaz/hacked | # mkdir -p /home/slitaz/hacked | ||
- | |||
(# mkdir -p /home/slitaz/src) | (# mkdir -p /home/slitaz/src) | ||
- | |||
# cd /home/slitaz/hacked | # cd /home/slitaz/hacked | ||
- | |||
</code> | </code> | ||
- | |||
- | |||
- | |||
===Извлекаем содержимое ISO-образа=== | ===Извлекаем содержимое ISO-образа=== | ||
- | |||
- | |||
Теперь, когда мы в рабочей папке, мы должны создать папку, которая будет представлять содержимое корневого каталога CD-ROM, и извлечь файлы из образа, а именно — ядро Linux (bzImage), сжатую файловую систему (rootfs.gz) и файлы загрузчика isolinux. Извлечь эти файлы можно двумя способами — взять с самого диска или из ISO-образа. Чтобы создать папку для корневого каталога CD rootcd и скопировать файлы с CD-ROM устройства ///dev/cdrom//, которое смонтировано как ///media/cdrom//, выполним команды: | Теперь, когда мы в рабочей папке, мы должны создать папку, которая будет представлять содержимое корневого каталога CD-ROM, и извлечь файлы из образа, а именно — ядро Linux (bzImage), сжатую файловую систему (rootfs.gz) и файлы загрузчика isolinux. Извлечь эти файлы можно двумя способами — взять с самого диска или из ISO-образа. Чтобы создать папку для корневого каталога CD rootcd и скопировать файлы с CD-ROM устройства ///dev/cdrom//, которое смонтировано как ///media/cdrom//, выполним команды: | ||
- | |||
- | |||
<code> | <code> | ||
- | |||
# mount -t iso9660 /dev/cdrom /media/cdrom | # mount -t iso9660 /dev/cdrom /media/cdrom | ||
- | |||
# mkdir rootcd | # mkdir rootcd | ||
- | |||
# cp -a /media/cdrom/* rootcd | # cp -a /media/cdrom/* rootcd | ||
- | |||
</code> | </code> | ||
- | |||
- | |||
Чтобы смонтировать образ во временную папку ///tmp/loop// (допустим, он называется slitaz-cooking.iso), создать папку //rootcd//, скопировать все файлы и отмонтировать образ, введем: | Чтобы смонтировать образ во временную папку ///tmp/loop// (допустим, он называется slitaz-cooking.iso), создать папку //rootcd//, скопировать все файлы и отмонтировать образ, введем: | ||
- | |||
- | |||
<code> | <code> | ||
- | |||
# mkdir /tmp/loop | # mkdir /tmp/loop | ||
- | |||
# mount -o loop slitaz-cooking.iso /tmp/loop | # mount -o loop slitaz-cooking.iso /tmp/loop | ||
- | |||
# mkdir rootcd | # mkdir rootcd | ||
- | |||
# cp -a /tmp/loop/* rootcd | # cp -a /tmp/loop/* rootcd | ||
- | |||
# umount /tmp/loop | # umount /tmp/loop | ||
- | |||
</code> | </code> | ||
- | |||
- | |||
Готово — теперь все необходимые файлы находятся в папке rootcd/. Чтобы в этом убедиться, выведем весь список файлов командой ls: | Готово — теперь все необходимые файлы находятся в папке rootcd/. Чтобы в этом убедиться, выведем весь список файлов командой ls: | ||
- | |||
- | |||
<code># ls -R rootcd</code> | <code># ls -R rootcd</code> | ||
- | |||
- | |||
- | |||
=====Добавляем файлы в ISO-образ===== | =====Добавляем файлы в ISO-образ===== | ||
- | |||
- | |||
Добавить файлы и папки в образ — значит скопировать их в папку rootcd и собрать новый образ. Эти файлы можно поместить в одну или две папки, созданные в корневом каталоге CD. Как только образ будет записан на CD-R или CD-RW, SliTaz можно будет использовать по-прежнему, смонтировав как ///media/cdrom// и работая с файлами с помощью emelFM2, Clex или командной строки. Ваши данные будут доступны из любой системы Linux, BSD или даже Windows. | Добавить файлы и папки в образ — значит скопировать их в папку rootcd и собрать новый образ. Эти файлы можно поместить в одну или две папки, созданные в корневом каталоге CD. Как только образ будет записан на CD-R или CD-RW, SliTaz можно будет использовать по-прежнему, смонтировав как ///media/cdrom// и работая с файлами с помощью emelFM2, Clex или командной строки. Ваши данные будут доступны из любой системы Linux, BSD или даже Windows. | ||
- | |||
- | |||
- | |||
===Создадим папки и скопируем данные=== | ===Создадим папки и скопируем данные=== | ||
- | |||
- | |||
Чтобы создать и скопировать файлы, можно начать с командной строки, а затем перейти в графический режим как пользователь по умолчанию. Создадим папку //images// от имени root и изменим права доступа, предоставим всем пользователям разрешение на запись: | Чтобы создать и скопировать файлы, можно начать с командной строки, а затем перейти в графический режим как пользователь по умолчанию. Создадим папку //images// от имени root и изменим права доступа, предоставим всем пользователям разрешение на запись: | ||
- | |||
- | |||
<code> | <code> | ||
- | |||
# mkdir rootcd/images | # mkdir rootcd/images | ||
- | |||
# chmod 777 rootcd/images | # chmod 777 rootcd/images | ||
- | |||
</code> | </code> | ||
- | |||
- | |||
Теперь, когда существует папка, в которой любой пользователь может размещать файлы, можем начать заполнять ее и в конце создадим загрузочный ISO-образ, как показано ниже. | Теперь, когда существует папка, в которой любой пользователь может размещать файлы, можем начать заполнять ее и в конце создадим загрузочный ISO-образ, как показано ниже. | ||
- | |||
- | |||
- | |||
=====Изменяем конфигурацию isolinux===== | =====Изменяем конфигурацию isolinux===== | ||
- | |||
- | |||
Изменение конфигурации isolinux позволяет создавать новые пункты загрузочного меню с другими параметрами загрузки. Например, можно запускать SliTaz с русской локализацией и раскладкой клавиатуры опциями //lang=ru// и //kmap=ru//. В плане дизайна можно изменить загрузочную картинку. | Изменение конфигурации isolinux позволяет создавать новые пункты загрузочного меню с другими параметрами загрузки. Например, можно запускать SliTaz с русской локализацией и раскладкой клавиатуры опциями //lang=ru// и //kmap=ru//. В плане дизайна можно изменить загрузочную картинку. | ||
- | |||
- | |||
Приложение isolinux управляет загрузкой с Live CD и также входит в состав пакета Syslinux. Из исходного файла Syslinux можно запускать несколько приложений, назначение которых — запустить систему Linux. Двоичный файл //isolinux.bin// контролирует непосредственно процесс загрузки. Сам же загрузчик простой и быстрый, и его можно легко настраивать в графическом режиме или через текстовый редактор. В синтаксисе конфигурационного файла //isolinux.cfg// совсем несложно разобраться — чтобы добавить новые записи, просто копируйте и вставляйте записи исходного файла. Для изменения файла в графическом режиме с помощью Leafpad введем: | Приложение isolinux управляет загрузкой с Live CD и также входит в состав пакета Syslinux. Из исходного файла Syslinux можно запускать несколько приложений, назначение которых — запустить систему Linux. Двоичный файл //isolinux.bin// контролирует непосредственно процесс загрузки. Сам же загрузчик простой и быстрый, и его можно легко настраивать в графическом режиме или через текстовый редактор. В синтаксисе конфигурационного файла //isolinux.cfg// совсем несложно разобраться — чтобы добавить новые записи, просто копируйте и вставляйте записи исходного файла. Для изменения файла в графическом режиме с помощью Leafpad введем: | ||
- | |||
- | |||
<code># leafpad rootcd/boot/isolinux/isolinux.cfg &</code> | <code># leafpad rootcd/boot/isolinux/isolinux.cfg &</code> | ||
- | |||
- | |||
- | |||
===Конфигурационный файл isolinux.cfg=== | ===Конфигурационный файл isolinux.cfg=== | ||
- | |||
- | |||
В начале файла //isolinux.cfg//, находящемся на стандартном Live CD SliTaz, следует параметр **display**, который управляет выводом на экран текстового файла или же файла под названием //isolinux.msg//. Последний использует 24 символа ASCII и загрузочную картинку. | В начале файла //isolinux.cfg//, находящемся на стандартном Live CD SliTaz, следует параметр **display**, который управляет выводом на экран текстового файла или же файла под названием //isolinux.msg//. Последний использует 24 символа ASCII и загрузочную картинку. | ||
- | |||
- | |||
Параметр **default** определяет, какой пункт меню будет загружен по умолчанию по истечении отсчета времени (timeout). | Параметр **default** определяет, какой пункт меню будет загружен по умолчанию по истечении отсчета времени (timeout). | ||
- | |||
- | |||
Параметр **timeout** содержит время в секундах до запуска системы; можно поставить 0 для мгновенной загрузки или указать, скажем, 80 сек. | Параметр **timeout** содержит время в секундах до запуска системы; можно поставить 0 для мгновенной загрузки или указать, скажем, 80 сек. | ||
- | |||
- | |||
Наконец, присвоив параметру **prompt** значение 0, можно отключить приглашение //boot://. | Наконец, присвоив параметру **prompt** значение 0, можно отключить приглашение //boot://. | ||
+ | Клавиши F1, F2 и F3 выводят файлы справки, а F4 — текстовый файл (в нашем случае — //display.txt//). Пример конфигурации: | ||
- | + | <file> | |
- | Клавиши F1, F2 и F3 выводят файлы справки, а F4 — текстовый файл (в нашем случае — //display.txt//): | + | |
- | + | ||
- | + | ||
- | + | ||
- | <code> | + | |
display isolinux.msg | display isolinux.msg | ||
- | |||
default slitaz | default slitaz | ||
- | |||
label slitaz | label slitaz | ||
- | |||
kernel /boot/bzImage | kernel /boot/bzImage | ||
- | |||
append initrd=/boot/rootfs.gz rw root=/dev/null vga=788 | append initrd=/boot/rootfs.gz rw root=/dev/null vga=788 | ||
- | |||
implicit 0 | implicit 0 | ||
- | |||
prompt 1 | prompt 1 | ||
- | |||
timeout 80 | timeout 80 | ||
- | |||
F1 help.txt | F1 help.txt | ||
- | |||
F2 options.txt | F2 options.txt | ||
- | |||
F3 isolinux.msg | F3 isolinux.msg | ||
- | |||
F4 display.txt | F4 display.txt | ||
- | + | </file> | |
- | </code> | + | |
- | + | ||
К примеру, создадим пункт меню //slitaz-ru//, в котором укажем язык системы — русский, а раскладку клавиатуры — английскую: | К примеру, создадим пункт меню //slitaz-ru//, в котором укажем язык системы — русский, а раскладку клавиатуры — английскую: | ||
- | + | <file> | |
- | + | ||
- | <code> | + | |
label slitaz-ru | label slitaz-ru | ||
- | |||
kernel /boot/bzImage | kernel /boot/bzImage | ||
- | |||
append initrd=/boot/rootfs.gz rw root=/dev/null lang=ru kmap=en | append initrd=/boot/rootfs.gz rw root=/dev/null lang=ru kmap=en | ||
- | + | </file> | |
- | </code> | + | |
- | + | ||
Закончив править файл конфигурации, не забудьте сохранить изменения и создать новый загрузочный ISO-образ вместе с isolinux. | Закончив править файл конфигурации, не забудьте сохранить изменения и создать новый загрузочный ISO-образ вместе с isolinux. | ||
- | |||
- | |||
- | |||
=====Устанавливаем и используем Memtest86===== | =====Устанавливаем и используем Memtest86===== | ||
- | |||
- | |||
Приложение //memtest86// (размером 92 Кб) служит для тестирования оперативной памяти (RAM). Memtest86 проводит серьезные тесты, которые в случае ошибок непосредственно указывают на их источник в аппаратуре. Эта программа будет находиться в папке //boot//, ее можно будет запустить, набрав //memtest// в строке приглашения isolinux. | Приложение //memtest86// (размером 92 Кб) служит для тестирования оперативной памяти (RAM). Memtest86 проводит серьезные тесты, которые в случае ошибок непосредственно указывают на их источник в аппаратуре. Эта программа будет находиться в папке //boot//, ее можно будет запустить, набрав //memtest// в строке приглашения isolinux. | ||
- | |||
- | |||
Для установки memtest86 перейдем в папку ///home/slitaz/src// (если такой папки нет: //mkdir -p /home/slitaz/src//), скачаем и распакуем архив с исходниками программы: | Для установки memtest86 перейдем в папку ///home/slitaz/src// (если такой папки нет: //mkdir -p /home/slitaz/src//), скачаем и распакуем архив с исходниками программы: | ||
- | |||
- | |||
<code> | <code> | ||
- | |||
# cd /home/slitaz/src | # cd /home/slitaz/src | ||
- | |||
# wget http://www.memtest86.com/memtest86-3.3.tar.gz | # wget http://www.memtest86.com/memtest86-3.3.tar.gz | ||
- | |||
# tar xzf memtest86-3.3.tar.gz | # tar xzf memtest86-3.3.tar.gz | ||
- | |||
</code> | </code> | ||
- | |||
- | |||
После распаковки можно будет изучить файл README, содержащий информацию о программе. Теперь установим ее в наш будущий ISO-образ. Учитывая то, что мы собираем образ в папке ///home/slitaz/hacked//, скопируем прекомпилированный бинарник в папку //boot// корневого каталога будущего CD: | После распаковки можно будет изучить файл README, содержащий информацию о программе. Теперь установим ее в наш будущий ISO-образ. Учитывая то, что мы собираем образ в папке ///home/slitaz/hacked//, скопируем прекомпилированный бинарник в папку //boot// корневого каталога будущего CD: | ||
- | |||
- | |||
<code> | <code> | ||
- | |||
# cp memtest86-3.3/precomp.bin \ | # cp memtest86-3.3/precomp.bin \ | ||
- | |||
/home/slitaz/hacked/rootcd/boot/memtest | /home/slitaz/hacked/rootcd/boot/memtest | ||
- | |||
</code> | </code> | ||
- | |||
- | |||
Теперь же, когда бинарник включен в состав CD, добавим пункт меню для memtest86 в конфигурационный файл isolinux и создадим загрузочный ISO. Перейдем в папку ///home/slitaz/hacked// и отредактируем //isolinux.cfg// в Leafpad: | Теперь же, когда бинарник включен в состав CD, добавим пункт меню для memtest86 в конфигурационный файл isolinux и создадим загрузочный ISO. Перейдем в папку ///home/slitaz/hacked// и отредактируем //isolinux.cfg// в Leafpad: | ||
- | |||
- | |||
<code> | <code> | ||
- | |||
# cd /home/slitaz/hacked | # cd /home/slitaz/hacked | ||
- | |||
# leafpad rootcd/boot/isolinux/isolinux.cfg & | # leafpad rootcd/boot/isolinux/isolinux.cfg & | ||
- | |||
</code> | </code> | ||
- | <code> | + | Добавьте следующие строки: |
+ | <file> | ||
label memtest | label memtest | ||
- | |||
kernel /boot/memtest | kernel /boot/memtest | ||
- | + | </file> | |
- | </code> | + | |
- | + | ||
Официальный сайт [[http://www.memtest86.com/|Memtest86]]. | Официальный сайт [[http://www.memtest86.com/|Memtest86]]. | ||
- | |||
- | |||
- | |||
=====Изменяем корневую систему===== | =====Изменяем корневую систему===== | ||
- | |||
- | |||
Модифицируя корневую систему, можно, к примеру, добавить нового пользователя и придумать ему пароль, изменить графические объекты или прописать те или иные команды в автозапуск. Для этого необходимо: | Модифицируя корневую систему, можно, к примеру, добавить нового пользователя и придумать ему пароль, изменить графические объекты или прописать те или иные команды в автозапуск. Для этого необходимо: | ||
- | |||
- | |||
- распаковать файл сжатой файловой системы //rootfs.gz//; | - распаковать файл сжатой файловой системы //rootfs.gz//; | ||
- | |||
- внести необходимые изменения; | - внести необходимые изменения; | ||
- | |||
- пересобрать этот файл; | - пересобрать этот файл; | ||
- | |||
- создать новый ISO. | - создать новый ISO. | ||
- | |||
- | |||
Предположим, мы уже создали рабочую папку ///home/slitaz/hacked//. Тогда создадим в ней еще одну папку, куда будем распаковывать содержимое //rootfs.gz//, и назовем ее //rootfs// для удобства. Скопируем в нее //rootfs.gz// из папки //rootcd/boot//: | Предположим, мы уже создали рабочую папку ///home/slitaz/hacked//. Тогда создадим в ней еще одну папку, куда будем распаковывать содержимое //rootfs.gz//, и назовем ее //rootfs// для удобства. Скопируем в нее //rootfs.gz// из папки //rootcd/boot//: | ||
- | |||
- | |||
<code> | <code> | ||
- | |||
# cd /home/slitaz/hacked | # cd /home/slitaz/hacked | ||
- | |||
# mkdir rootfs | # mkdir rootfs | ||
- | |||
# cp rootcd/boot/rootfs.gz rootfs | # cp rootcd/boot/rootfs.gz rootfs | ||
- | |||
</code> | </code> | ||
- | |||
- | |||
Итак, теперь у нас есть сжатый вариант системы, распакуем его при помощи cpio. С технической точки зрения //rootfs.gz// является cpio-файлом, сжатым с использованием алгоритма lzma или gzip. Ядро Linux распознаёт его как образ файловой системы, загружаемой в оперативную память (initramfs). При запуске системы ядро загружается в память, распаковывает образ системы и выполняет загрузочные скрипты. | Итак, теперь у нас есть сжатый вариант системы, распакуем его при помощи cpio. С технической точки зрения //rootfs.gz// является cpio-файлом, сжатым с использованием алгоритма lzma или gzip. Ядро Linux распознаёт его как образ файловой системы, загружаемой в оперативную память (initramfs). При запуске системы ядро загружается в память, распаковывает образ системы и выполняет загрузочные скрипты. | ||
- | |||
- | |||
Чтобы распаковать файловую систему в папку //rootfs// и удалить сам архив (помните, что вы можете копировать приведенные здесь команды и вставлять их в терминал), выполним команды: | Чтобы распаковать файловую систему в папку //rootfs// и удалить сам архив (помните, что вы можете копировать приведенные здесь команды и вставлять их в терминал), выполним команды: | ||
- | |||
- | |||
<code> | <code> | ||
- | |||
# cd rootfs | # cd rootfs | ||
- | |||
# (zcat rootfs.gz 2>/dev/null || lzma d rootfs.gz -so) | cpio -id | # (zcat rootfs.gz 2>/dev/null || lzma d rootfs.gz -so) | cpio -id | ||
- | |||
# rm rootfs rootfs.gz | # rm rootfs rootfs.gz | ||
- | |||
</code> | </code> | ||
- | |||
- | |||
Теперь можно вносить изменения в систему. Если понадобится вывести список файлов полученной корневой системы, это можно сделать командой //ls//. | Теперь можно вносить изменения в систему. Если понадобится вывести список файлов полученной корневой системы, это можно сделать командой //ls//. | ||
- | |||
- | |||
- | |||
===Вносим изменения в произвольный файл=== | ===Вносим изменения в произвольный файл=== | ||
- | |||
- | |||
Чтобы придерживаться принципа простоты и помочь вам понять основы, мы изменим файл скрипта, чтобы автоматически выполнить некоторые команды при запуске системы с CD. Возьмем файл ///etc/init.d/local.sh// — откройте его в своем любимом текстовом редакторе, например, в Geany: | Чтобы придерживаться принципа простоты и помочь вам понять основы, мы изменим файл скрипта, чтобы автоматически выполнить некоторые команды при запуске системы с CD. Возьмем файл ///etc/init.d/local.sh// — откройте его в своем любимом текстовом редакторе, например, в Geany: | ||
- | |||
- | |||
<code># geany /etc/init.d/local.sh &</code> | <code># geany /etc/init.d/local.sh &</code> | ||
- | |||
- | |||
Добавим две команды, первая выводит строку с сообщением, а вторая останавливает систему на 4 секунды: | Добавим две команды, первая выводит строку с сообщением, а вторая останавливает систему на 4 секунды: | ||
- | + | <file> | |
- | + | ||
- | <code> | + | |
echo "* Hacked SliTaz version booting..." | echo "* Hacked SliTaz version booting..." | ||
- | |||
sleep 4 | sleep 4 | ||
- | + | </file> | |
- | </code> | + | |
- | + | ||
- | + | ||
===Заново собираем образ сжатой файловой системы=== | ===Заново собираем образ сжатой файловой системы=== | ||
- | |||
- | |||
Произведя все необходимые изменения, соберем образ файловой системы, используя команды //find// для поиска файлов, //cpio// для архивации, //lzma// и //gzip// для сжатия и вертикальную черту **|**, чтобы свести все команды воедино. Запустим эти команды из папки //rootfs// и создадим файл //rootfs.gz// в папке уровнем выше: | Произведя все необходимые изменения, соберем образ файловой системы, используя команды //find// для поиска файлов, //cpio// для архивации, //lzma// и //gzip// для сжатия и вертикальную черту **|**, чтобы свести все команды воедино. Запустим эти команды из папки //rootfs// и создадим файл //rootfs.gz// в папке уровнем выше: | ||
- | |||
- | |||
<code># find . -print | cpio -o -H newc | lzma e -si -so > ../rootfs.gz</code> | <code># find . -print | cpio -o -H newc | lzma e -si -so > ../rootfs.gz</code> | ||
- | |||
- | |||
Или через gzip: | Или через gzip: | ||
- | |||
- | |||
<code># find . -print | cpio -o -H newc | gzip -9 > ../rootfs.gz</code> | <code># find . -print | cpio -o -H newc | gzip -9 > ../rootfs.gz</code> | ||
- | |||
- | |||
Наконец, скопируем полученный файл в папку //rootcd/boot// и соберем загрузочный ISO-образ. Для проведения первой операции выполним: | Наконец, скопируем полученный файл в папку //rootcd/boot// и соберем загрузочный ISO-образ. Для проведения первой операции выполним: | ||
- | |||
- | |||
<code> | <code> | ||
- | |||
# cd ../ | # cd ../ | ||
- | |||
# cp -a rootfs.gz rootcd/boot | # cp -a rootfs.gz rootcd/boot | ||
- | |||
</code> | </code> | ||
- | |||
- | |||
- | |||
=====Создаем загрузочный ISO-образ===== | =====Создаем загрузочный ISO-образ===== | ||
- | |||
- | |||
Следующие команды создают образ с загрузчиком //isolinux//, используя приложение //genisoimage// с несколькими параметрами. Вначале указываем имя образа укажем вначале, после ключа -o, а корневой каталог CD (//rootcd//) — в конце, после ключа //-boot-info-table//: | Следующие команды создают образ с загрузчиком //isolinux//, используя приложение //genisoimage// с несколькими параметрами. Вначале указываем имя образа укажем вначале, после ключа -o, а корневой каталог CD (//rootcd//) — в конце, после ключа //-boot-info-table//: | ||
- | |||
- | |||
<code> | <code> | ||
- | |||
# genisoimage -R -o slitaz-hacked.iso -b \ boot/isolinux/isolinux.bin \ | # genisoimage -R -o slitaz-hacked.iso -b \ boot/isolinux/isolinux.bin \ | ||
- | |||
-c boot/isolinux/boot.cat \ -no-emul-boot -boot-load-size 4 \ | -c boot/isolinux/boot.cat \ -no-emul-boot -boot-load-size 4 \ | ||
- | + | -V "SliTaz-Hacked" -input-charset iso8859-1 \ | |
- | -V "SliTaz-Hacked" -input-charset iso8859-1 -boot-info-table rootcd | + | -boot-info-table rootcd |
</code> | </code> | ||
- | |||
- | |||
Если вы хотите проверить содержимое образа перед прожигом, смонтируйте его через loop и выведите список файлов. В SliTaz и большинстве Linux-систем записать образ в формате ISO на диск можно утилитой //wodim//. | Если вы хотите проверить содержимое образа перед прожигом, смонтируйте его через loop и выведите список файлов. В SliTaz и большинстве Linux-систем записать образ в формате ISO на диск можно утилитой //wodim//. | ||
- | |||
- | |||
- | |||
===Создаем ISO при помощи скрипта=== | ===Создаем ISO при помощи скрипта=== | ||
- | |||
- | |||
Если у вас много творческих планов и вы хотите создать множество ISO-образов, вам, вероятно, захочется автоматизировать этот процесс, написав простой скрипт. Такой скрипт можно написать прямо в командной строке или в графическом режиме, не забудьте лишь сделать его исполнимым. К примеру, создать скрипт можно командой //cat//; EOF здесь означает End Of File — конец файла. Создадим скрипт //gen_hacked_iso.sh//, включающий две переменные — имя образа и путь к папке rootcd: | Если у вас много творческих планов и вы хотите создать множество ISO-образов, вам, вероятно, захочется автоматизировать этот процесс, написав простой скрипт. Такой скрипт можно написать прямо в командной строке или в графическом режиме, не забудьте лишь сделать его исполнимым. К примеру, создать скрипт можно командой //cat//; EOF здесь означает End Of File — конец файла. Создадим скрипт //gen_hacked_iso.sh//, включающий две переменные — имя образа и путь к папке rootcd: | ||
- | |||
- | |||
<code> | <code> | ||
- | |||
# cat > gen_hacked_iso.sh << "EOF" | # cat > gen_hacked_iso.sh << "EOF" | ||
- | |||
- | |||
#!/bin/sh | #!/bin/sh | ||
- | |||
# Создание измененного ISO-образа. | # Создание измененного ISO-образа. | ||
- | |||
# | # | ||
- | |||
ISO_NAME="slitaz-hacked.iso" | ISO_NAME="slitaz-hacked.iso" | ||
- | |||
ROOTCD="rootcd" | ROOTCD="rootcd" | ||
- | |||
- | |||
genisoimage -R -o $ISO_NAME -b boot/isolinux/isolinux.bin \ | genisoimage -R -o $ISO_NAME -b boot/isolinux/isolinux.bin \ | ||
- | |||
-c boot/isolinux/boot.cat -no-emul-boot -boot-load-size 4 \ | -c boot/isolinux/boot.cat -no-emul-boot -boot-load-size 4 \ | ||
- | + | -V "SliTaz-Hacked" -input-charset iso8859-1 \ | |
- | -V "SliTaz-Hacked" -input-charset iso8859-1 -boot-info-table $ROOTCD | + | -boot-info-table $ROOTCD |
- | + | ||
EOF | EOF | ||
- | |||
</code> | </code> | ||
- | |||
- | |||
Теперь делаем скрипт исполняемым и запускаем: | Теперь делаем скрипт исполняемым и запускаем: | ||
- | |||
- | |||
<code> | <code> | ||
- | |||
# chmod +x gen_hacked_iso.sh | # chmod +x gen_hacked_iso.sh | ||
- | |||
# ./gen_hacked_iso.sh | # ./gen_hacked_iso.sh | ||
- | |||
</code> | </code> | ||
+ | ---- | ||
+ | Статью перевел [[http://forum.slitaz.org/index.php/profile/1273/Cyril|Cyril]] | ||