Как я собрал свой Debian-дистрибутив на основе Knoppix
Автор: (C) Sunil Thomas Thonikuzhiyil
Перевод: (C) Иван Песин


От переводчика: данный текст содержит много интересной и полезной информации, однако стиль изложения в оригинальной статье очень "английский" и, честно говоря, расхлябанный. Кроме того, текст содержал немалое количество "псевдо-грамматических" ошибок в именах файлов и команд, которые я счел слишком существенными. Потому приводимый перевод сильно переработан и "русифицирован". - Иван Песин.

Введение.

Knoppix -- это дистрибутив, основанный на Debian GNU/Linux. Он запускается и работает прямо с компакт диска. Содержит большое число программ, работающих на компьютере с минимальным аппаратным обеспечением. Knoppix поддерживает множество графических адаптеров, звуковых карт, SCSI и USB устройств. Он может использоваться как демонстрационный Linux, для обучения, восстановления систем или как основа демонстрационных версий коммерческого ПО для Linux. Хотя для своей работы он и не требует установки на жесткий диск, но, если вы желаете, то можете воспользоваться специальной программой для переноса системы на диск. В результате, за 20 минут, вы получаете готовую к использованию установку Debian (Правда кириллизация в нем далека от совершенства - Прим.пер.). Данный документ описывает процесс построения пользовательского дистрибутива на основе Knoppix. Моей целью было добавление некоторых программ, которыми я часто пользуюсь. Если вы обнаружите ошибки в этом документе, будьте добры, напишите мне об этом.

Требования

a) Программное обеспечение

Для начала вам необходимо загрузить образ CD Knoppix с сайта. Новая версия появляется каждые одну-две недели в двух вариантах: немецком и английском. Я работал с версией 31-10-2002-EN.

Если у вас уже есть образ, вы можете попробовать обновить его при помощи rsync, как это описано ниже. Но не надейтесь на большую экономию трафика, поскольку образ knoppix сжатый.

Если у вас есть компакт-диск с knoppix, создайте его образ на диске при помощи команды
# dd if=/dev/cdrom of=knoppix.iso

Переименуйте полученный образ Knoppix так, чтобы имя файла отражало версию дистрибутива. Например:
KNOPPIX_V3.1-23-10-2002-EN.iso
Допустим, необходимо обновить его до KNOPPIX_V3.1-31-10-2002-EN.iso

Для этого переименовываем KNOPPIX_V3.1-23-10-2002-EN.iso в KNOPPIX_V3.1-31-10-2002-EN.iso и выполняем команду:
# rsync -P --stats ftp.leo.org::Knoppix/KNOPPIX_V3.1-31-10-2002-EN.iso .
(Можно использовать любой другой сайт knoppix. Только проверяйте номер последней доступной версии.)

б) Аппаратное обеспечение

Компьютер с огромным количеством памяти и свободного места на диске. Я делал это на машине с Pentium 3 950MHZ/128 mb RAM.

На самом деле это не совсем так. Для работы дистрибутива достаточно 16 Мбайт ОЗУ. Если вы хотите запускать графику -- нужно 82 Мб ОЗУ, часть из которых может быть файлом подкачки (это будет отражаться на скорости работы). Но если вы собираетесь делать свой дистрибутив, то вам понадобится по-минимуму: 5 Гбайт свободного дискового пространства и 1 Гбайт свободной памяти (ОЗУ + своп). К процессору явных требований нет, но у меня на Athlon XP 2000+ образ диска паковался за 20 минут, а на PIII 450 около полутора часов. - Прим.пер.


Начальная настройка

Освободите как можно больше места на диске. Для создания собственной версии Knoppix вам понадобится много свободного пространства. Я создал два новых раздела на моем 20-ти Гбайтовом диске:

Загрузите машину с диска Knoppix (Настраивать свой дистрибутив можно и после установки на жесткий диск. О том, как установить knoppix на жесткий диск можно прочитать здесь.)

На приглашение начать загрузку нажмите клавишу [Enter]. Последует загрузка в графическом режиме. По умолчанию это будет KDE. Это можно изменить при загрузке, если нужно. Создание нового дистрибутива я проводил в KDE. Предполагается, что вы уже немного знакомы с Knoppix. Информация о разнообразных опциях загрузки, находится в файле cheatcodes.txt на CD.

a) Настройка сети из меню KDE

Выберите следующий пункт меню
K/Knoppix/network-Internet/Network-card-configuration

Поскольку мой компьютер подсоединен к локальной сети, я настроил IP-адрес, маску, сервер имен и шлюз. Этот шаг очень важен, поскольку нужно будет загружать программное обеспечение, расположенное на других серверах.

б) Настройка разделов

Откройте шелл с правами суперпользователя из меню KDE (K/Knoppix/Root-shell). Вы должны увидеть приглашение "# "

Запустите cfdisk

Теперь нужно определить разделы. Я создал два раздела -- hda2, размером 2 Гб и hda3, размером 5 Гб

В 2-х Гбайтовом разделе я разместил своп (/dev/hda2)
В 5-ти Гбайтовом -- создал корневую файловую систему (/dev/hda3)

Теперь нужно сохранить информацию о разделах.

Выходите из cfdisk

Для создания сжатой файловой системы необходимо много свободного места в разделе подкачки. Этот раздел инициализируется командами:

# mkswap /dev/hda2
# swapon /dev/hda2

Кроме того, можно использовать файл подкачки.

Создадим файловую систему ext2 на 5-ти гбайтовом разделе :
#mke2fs /dev/hda3
Смонтируем созданную файловую систему:
# mount /dev/hda3 /mnt/hda3
Лучше выполнять команду mount -o dev /dev/hda3 /mnt/hda3 - Прим. пер.

Основные приготовления к созданию собственного дистрибутива закончены.


Установка и удаление программного обеспечения

Приблизительная схема организация CD-диска knoppix приведена ниже (Поправьте меня, если я ошибаюсь. Она может выглядеть иначе, если смотреть из windows или другого дистрибутива Linux):

     

/--demos

|--talks

|--index.html

|--autorun.bat

|--autorun.inf

|--knoppix.ico

|--KNOPPIX

      |--KNOPPIX

      |--boot.img

      |--background.gif

      |- (некоторые другие файлы)

В каталоге /KNOPPIX расположен файл, который тоже называется KNOPPIX и занимает около 700Мб. Он содержит сжатый образ файловой системы. Нам достаточно изменить лишь этот файл, а остальное можно оставить как есть (если вам не нужно изменять файлы загрузочного образа и т.п.).

a) Копирование файла KNOPPIX на жесткий диск

При загрузке Knoppix сжатый образ монтируется в каталог /KNOPPIX. Необходимо его скопировать на диск, в рабочий раздел. Я выполнил это командой
# cp -Rp /KNOPPIX /mnt/hda3/
(Опция "-R" выполняет рекурсивное копирование, а "-p" сохраняет владельца, время доступа и пр.). В результате, все необходимые файлы для работы будут находится в каталоге /mnt/hda3/KNOPPIX/. Загляните туда.

б) Chroot

Установку и удаление ПО нужно будет проводить в этом дереве (если вы работаете не в сети, скопируйте необходимые исходники, например, в /mnt/hda3/KNOPPIX/root/. Если же в вашем распоряжении находятся не исходные тексты, а deb-пакеты -- то их нужно скопировать в каталог /mnt/hda3/KNOPPIX/var/cache/apt/archives). Теперь задать /mnt/hda3/KNOPPIX в качестве корневого каталога:

# chroot /mnt/hda3/KNOPPIX

Дальше по тексту будет неоднократно встречаться фраза "после выполнения команды chroot". Под этим подразумевается, что ранее была выполнена команда "chroot /mnt/hda3/KNOPPIX". Т.е. работа ведется в окружении с измененным корневым каталогом - Прим.пер.

В результате вы снова увидите приглашение "#" (Если будет выводится сообщение "/dev/null permission denied", просто нажмите Ctrl+C) (Лучшим решением указанной проблемы будет монтирование с опцией dev: mount -o dev /dev/hda3 - Прим.пер.)
Указанный каталог (/mnt/hda3/KNOPPIX) стал корневым (в действительности -- это /mnt/hda3/KNOPPIX).

Далее необходимо смонтировать файловую систему "proc". Это делается следующей командой

# mount -t proc /proc proc

в) Настройка сети

Добавьте в файл /etc/resolv.conf строку:

nameserver ip-адрес-вашего-сервера-имен

(У меня была смешная проблема: /etc/resolv.conf -- это символическая ссылка на /etc/dhcp/resolv.conf. Ping не работал. Я удалил ссылку, создал файл /etc/resolv.conf заново и всё заработало. Убедитесь, что вы восстановили ссылку после внесения необходимых изменений)

Проверьте свой IP-адрес с помощью команды ifconfig (он должен быть таким же, как и до применения команды chroot). Попробуйте пропинговать google.com. Если пинг проходит -- ваша сеть настроена правильно, и вы можете воспользоваться командой apt-get update.

г) Установка/удаление

Вы можете устанавливать и удалять любое программное обеспечение при помощи программ пакета APT (Advanced Packaging Tool). Поскольку оригинальный компакт содержит массу установленных программ, это может оказаться не простой задачей. Ниже приведен частичный список пакетов, которые я удалил:

Игры

falconseye-data
rocks-n-diamonds
amor
nethack-x11
gnome-games-locale
xboard
gnocatan-client
imaze
kmahjongg
gnome-gnibbles
freeciv-gtk
ktuberling
gnocatan-help
ksirtet
gnome-gnobots2
jumpnbump
ksnake
xgalaga
lskat
katomic
kshisen
konquest
chromium
ktux
moon-buggy
kmoon
ksame
gnuchess
ktron
frozen-bubblekjumpingcube
fortune-mod
kodo
gnocatan-ai
gnocatan-server-console
gnocatan-server-data
nethack
821
fortunes
searchandrescue
xbill
kspaceduel
libkdegames
tipptrainer-data-dexconq
gcompris
gnome-chess
tuxracer-data
abuse-frabs
gnome-gnotski
frotz
kblackbox
gnome-games
gnome-gtali
gnome-iagno
gnome-stones
gnocatan-server-gtk
lxdoom-x11
maelstrom
kabalone
gnome-gnotravex
fortunes-min
chromium-data
kdegames
pingus-data
task-kde-games
stax
gnome-card-games
xtris
xtux
kjezz
lxdoom

Не свободные

x3270
xanim festlex-oald
netscape-java-477
j2re1.3
3270-common
tgif
giflib-bin
frotz xfractint
giflib3g communicator-smotif-477
netscape-base-477
maelstrom communicator-base-477
gimp1.2-nonfree
acroread
lha
unarj
xsnow

Разнообразные пакеты

tetex-base
tetex-extra
j2re1.3
lyx
acroread
qcad
rocks-n-diamonds
kde-i18n-da
kde-i18n-it
kde-i18n-de
kde-i18n-fr
kde-i18n-ru (не рекомендую удалять ;-) - Прим.пер.)
kde-i18n-nl
kde-i18n-ja
kde-i18n-es
kde-i18n-cs
kde-i18n-pl
kde-i18n-tr
xfonts-intl-chinese
kword
kpresenter
abiword-gtk
karbon
kchart
kformula
kivio
koffice-libs
kontour
koshell
kspread

Я скопировал весь этот список в файл (назовем его "kicklist") и ввел команду:

# dpkg -P `cat kicklist`

Она удалила все пакеты из списка (обратите внимание на обратные кавычки).

Чтобы посмотреть список установленных пакетов большого размера, введите:

#dpkg-awk "Status: .* installed$" -- Package Installed-Size| awk '{print $2}' | egrep -v '^$' | xargs -n2 echo | perl -pe 's/(\S+)\s(\S+)/$2 $1/' | sort -rg

На моём диске Knoppix 3.1 от 20.01.03 утилита dpkg-awk отсутствовала - Прим.пер.

Результатом будет список пакетов, отсортированных по убыванию размера.

Наконец, запустите deborphan для поиска ненужных пакетов

# deborphan > /tmp/orphanlist

Рекомендую тут выполнить команду less /tmp/orphanlist и посмотреть, что вы будете удалять - Прим.пер.

# dpkg -P `cat /tmp/orphanlist`
# rm /tmp/orphanlist

Есть и другой способ установки и удаления программ -- это графический фронт-энд synaptic к apt.

Для его установки, введите команду:
# apt-get install synaptic

Перед запуском synaptic нужно установить и экспортировать в среду окружения переменную DISPLAY:

#DISPLAY=myip:0.0 (замените myip вашим настоящим IP)
#export DISPLAY
#synaptic

Установку переменной DISPLAY можно выполнить немного проще:
# export DISPLAY="localhost:0.0"
в таком варианте не нужно задавать IP-адрес. - Прим.пер.

Теперь можно свободно использовать эту программу для управления пакетами.

После удаления ненужных пакетов, можно приступать к настройке дистрибутива. Если вы работаете с установкой knoppix на диске и хотите запустить synaptic, проверьте в файле /etc/X11/xinit/xserverrc отсутствие строки -nolisten tcp. Кроме того, выполните команду xhost + из-под обычного пользователя)

Размонтируйте файловую систему proc (Это очень важно)

#umount /proc

Нажмите Ctrl+D для выхода из окружения с измененным корневым каталогом.

Дальнейшие настройки

1) Установка приложений, требующих компиляции

Загрузите исходные тексты необходимого программного обеспечения после выполнения команды chroot. Скомпилируйте и установите его. Если это графическое приложение, перед тестированием следует определить и экспортировать переменную DISPLAY. Я использовал программу checkinstall asic-linux.com.mx/~izto/checkinstall/ для установки и управления созданных мною deb-пакетов.

Не забудьте удалить исходные тексты после установки (они будут занимать лишнее место на вашем компакте-диске).

2) Изменение настроек пользователя

Есть возможность задать пароль для пользователей. Просто установите его после выполнения команды chroot.

3) Изменение фоновой картинки

Фоновая картинка по-умолчанию хранится в файле /usr/local/lib/knoppix.gif

4) Изменение экрана загрузки

В Knoppix для загрузки используется syslinux. Если вы хотите изменить загрузочный экран или сообщения, нужно создать временный каталог на диске (например, /mnt/hda3/image)
Скопировать файл boot.img из каталога KNOPPIX:

# cp /KNOPPIX/boot.img /mnt/hda3

Смонтировать этот образ командой:

# mount -t msdos -o loop /mnt/hda3/boot.img /mnt/hda3/image

Теперь загляните в этот каталог. Там много интересных файлов.

a) Картинка, отображаемая при загрузке

файл logo.16 -- это картинка, которая выводится при загрузке. Она записана в специальном формате. Для ее замены создайте 16-ти цветную картинку размером 640*400. Например, я загрузил картинку с сайта gnu.org. Сохраните ее в формате png (назовем файл logo.png). Теперь выполните следующие команды:

# pngtopnm <logo.png >logo.pnm
# ppmtolss16 <logo.pnm >logo.16
# cp logo.16 /mnt/hda3/image/logo.16

(Старайтесь, чтобы размер конечного файла logо.16 был около 50 k). Размонтируйте каталог образа дискеты и скопируйте его на дискету:

# dd if=boot.img of=/dev/fd0

Теперь попробуйте с неё загрузится. Если получится -- значит все в порядке.

б) syslinux.cfg

Редактируя файл syslinux.cfg, вы можете менять число параметров, передаваемых ядру. За дополнительной информацией, обратитесь к странице руководства syslinux.

5) Изменение ядра ( **** Не проверено ****)

Скомпилируйте собственное ядро, желательно небольшого размера. Скопируйте ядро и модули в файл boot.img, замените /lib/modules/2.4.19-xfs модулями вашего ядра.
Замените файлы в каталоге /boot.

Хоть сам и не пробовал, но мне кажется, что в этой процедуре будет много нюансов. Например, следует установить переменную EXTRAVERSION равной "-xfs", не забыть необходимые переменные настройки ядра и пр. Так что, если будете пробовать -- придется экспериментировать. - Прим.пер.

6) Изменение оконного менеджера по-умолчанию на Gnome/ icewm

Изменить оконный менеджер по-умолчанию очень просто. После выполнения команды chroot, откройте файл /etc/init.d/knoppix-autoconfig и найдите в нем следующие строки:
---------------------------------------

#Also read desired desktop, if any (установить переменную, отвечающую за выбор оконного менеджера)

DESKTOP="$(getbootparam desktop 2>/dev/null)"

# Allow only supported windowmanagers (обрабатывать только поддерживаемые менеджеры)

case "$DESKTOP" in gnome|kde|larswm|xfce|windowmaker|wmaker|icewm|fluxbox|twm) ;; *)

DESKTOP "KDE"; ;; esac
---------------------------------------

Замените "KDE" на "gnome" и всё!

7) Удалите все временные файлы

(* Тут будет ссылка к скрипту *)

Сборка нового диска

a) Создание ISO-образа

1) Создайте новый каталог в /mnt/hda3

Я назвал его NewCd. Скопируйте в него с компакт диска (он смонтирован в каталоге /cdrom) все файлы, кроме файла со сжатым образом (KNOPPIX). Каталоги demos и talks можно не копировать.

2) Создайте свой сжатый образ:

# mkisofs -R /mnt/hda3/KNOPPIX | create_compressed_fs - 65536 > /mnt/hda3/NewCD/KNOPPIX/KNOPPIX

Я бы предпочел использовать команду, приведенную в документации и немного подправленную для увеличения приоритета:
# mkisofs -R -U -V "KNOPPIX.net filesystem" -P "KNOPPIX www.knoppix.net" -hide-rr-moved -cache-inodes -no-bak -pad /mnt/hda3/KNOPPIX | nice -n -10 /usr/bin/create_compressed_fs - 65536 > /mnt/hda3/NewCD/KNOPPIX/KNOPPIX
- Прим.пер.

3) Создайте образ вашего нового диска:

# cd /mnt/hda3
# mkisofs -r -J -b KNOPPIX/boot.img -c KNOPPIX/boot.cat -o myknoppix.iso NewCd

Снова привожу команду из документации:
# mkisofs -pad -l -r -J -v -V "KNOPPIX" -b KNOPPIX/boot.img -c KNOPPIX/boot.cat -hide-rr-moved -o myknoppix.iso NewCD - Прим.пер.

б) Проверка образа загрузочной дискеты

Создайте загрузочную дискету командой:

# dd if=/mnt/hda3/KNOPPIX/boot.img of=/dev/fd0

Скопируйте сжатый образ в каталог /KNOPPIX на любом разделе. При загрузке с дискеты, скрипт будет искать файл /KNOPPIX/KNOPPIX на всех разделах жесткого диска. Это упрощает проверку. Когда вы добьетесь желаемого результата, запишите образ на CD

Часто задаваемые вопросы

1) Как отменить автостарт konqueror?

Для отмены автоматической загрузки konquerоr вам необходимо модифицировать файл /etc/X11/Xsession.d/45xsession. Найдите в нем такие строки:

-------------------------------------------
if [ -e "$INDEXFILE" ]; then
cat >> $HOME/Desktop/KNOPPIX.desktop <<EOF
[Desktop Entry]
Name=KNOPPIX
Exec=kfmclient openProfile webbrowsing $INDEXFILE
Type=Application
Icon=html
Terminal=0
EOF
ln $HOME/Desktop/KNOPPIX.desktop $HOME/.kde/Autostart/showindex.desktop
fi

-----------------------------------------

Они создают файл автозагрузки. Закомментируйте их.

2) Я загрузил knoppix и смонтировал жесткий диск. Как мне скопировать что-либо на жесткий диск при помощи команды scp?

Откройте шелл.
Установите пароль для пользователя knoppix.
Запустите ssh (/etc/init.d/ssh start)
Теперь можно использовать scp

3) Я хочу выполнить команду su, как это сделать?

Установите пароль пользователя root, командой sudo passwd
Введите пароль для пользователя root
Теперь можно выполнять команду su

4) По-умолчанию загрузка происходит в режиме "frame buffer" и все надписи очень маленькие. Как это исправить?

Смонтируйте boot.img.
Откройте файл syslinux.cfg в редакторе.
Возле слов "Default vmlinuz" замените "VGA=791" на "VGA=normal"

5) У меня германская раскладка клавиатуры. Как ее поменять на английскую?

Откройте центр управления KDE, выберите system ->keyboard и измените раскладку на US English

Ссылки

Я обработал большое количество материала по следующим ссылкам. Много полезной информации я получил на IRC канале #knoppix сервера irc.freenode.net.
1) Домашняя страница Tech2k
Сильно помог в написании этого документа Кен Бурк (Ken Burk). Его сайт содержит великолепную информацию, к которой всегда можно обратиться. Очень хорошо написана и его страница по созданию собственного дистрибутива (kix remastering page).
2) Knoppix.net
Неофициальный сайт knoppix -- хороший источник информации. Там регулярно появляется информация о пользовательских доработках дистрибутива.
3) Форум Knoppix на сайте linuxtag
Этот сайт представляет смесь информации на немецком и английском языках. Хороший источник информации о knoppix.

Sunil Thomas Thonikuzhiyil

Я работаю консультантом по информационным технологиям при законодательном собрании штата Керала, Тривандрам, Индия. На Linux я работаю с 1996. Получил высшее образование на факультете компьютерных наук университета города Кочин (Cochin). Интересуюсь всеми типами операционных систем. В свободное время люблю слушать народную индийскую музыку.


Copyright © 2003, Sunil Thomas Thonikuzhiyil. Copying license http://www.linuxgazette.com/copying.html
Published in Issue 87 of Linux Gazette, February 2003


Вернуться на главную страницу