Оригинал статьи

Пересборка Knoppix, Как сделать, чтобы ...


Этот учебник, покажет вам как пересобрать KNOPPIX, используя старый метод "chroot". Командные строки в разделе "Инструкции" и "Пересборка ISO" тестированы на Knoppix V7.0.4CD. Пожалуйста, не используйте старые версии Knoppix!

Инструкции

Настройка для пересборки

  • Загрузиться с Knoppix CD
  • Открыть терминал и ввести "su", чтобы стать пользователем root.
  • Настроить подключение к Интернету. Если вы используете DHCP, он уже должен быть настроен. ( Запустите ifconfig для проверки.)
  • Выберите раздел, который вы будете использовать для работы и измените в скрипте переменную "PFAD" на раздел, который будет использоваться. В данном примере используется /media/sda1. Раздел должен иметь не менее 5 ГБ свободного пространства для пересборки CD и 20 ГБ для пересборки DVD.
  • Убедитесь, что раздел смонтирован!!! (Запустите mount или df для проверки.)
  • Первый скрипт делает все необходимые операции:
#! /bin/sh
#      Как сделать ... операция 1
#      Путь к разделу, на котором вы будете работать
PFAD="/media/sda1"
START=$(date +'%s')
#      Отключить скринсейвер
xscreensaver-command -exit
#      Одна вложенная папка будет использоваться для мастер-CD
mkdir -p $PFAD/knx/master
cd $PFAD/knx
#      Вам необходим файл подкачки
dd if=/dev/zero of=swapfile bs=1M count=500
mkswap swapfile ; swapon swapfile
#      Создать вложенную папку для источника
mkdir -p $PFAD/knx/source/KNOPPIX
echo "Copy the KNOPPIX files to your source directory."
echo "This will take a long time!"
cp -rp /KNOPPIX/* $PFAD/knx/source/KNOPPIX
#      Также скопируйте файлы для последующего создания ISO
rsync -aH --exclude="KNOPPIX/KNOPPIX*" /mnt-system/* $PFAD/knx/master
#      gunzip инициализация RAM-диска
mkdir -p $PFAD/knx/minirt/minirtdir
cp $PFAD/knx/master/boot/isolinux/minirt.gz $PFAD/knx/minirt/
cd $PFAD/knx/minirt/
gunzip minirt.gz
cd minirtdir
cpio -imd --no-absolute-filenames < ../minirt
#      Активировать скринсейвер
su knoppix -c "xscreensaver -nosplash &"
echo -e "\nFinished! Used time: $(expr $(expr $(date +'%s') - $START) / 60) min. \
  and $(expr $(expr $(date +'%s') - $START) % 60) sec."

Настройка среды chroot

  • Этот скрипт предназначен для создания среды chroot:
#! /bin/sh
#      Как сделать ... операция 2
#      Путь к разделу, на котором вы работаете
PFAD="/media/sda1"
#      Для использования Интернет добавьте ваш nameserver в папку chroot
cp /etc/resolv.conf $PFAD/knx/source/KNOPPIX/etc/resolv.conf
#      Разрешите X-основанные программы в chroot
[ -e $PFAD/knx/source/KNOPPIX/home/knoppix/.Xauthority ] \
   && rm $PFAD/knx/source/KNOPPIX/home/knoppix/.Xauthority
cp /home/knoppix/.Xauthority $PFAD/knx/source/KNOPPIX/home/knoppix
chown knoppix:knoppix $PFAD/knx/source/KNOPPIX/home/knoppix/.Xauthority
#      Подготавливает среду для chroot
mount --bind /dev $PFAD/knx/source/KNOPPIX/dev
mount -t proc proc $PFAD/knx/source/KNOPPIX/proc
mount -t sysfs sysfs $PFAD/knx/source/KNOPPIX/sys
mount --bind /dev/pts $PFAD/knx/source/KNOPPIX/dev/pts
mount --bind /tmp $PFAD/knx/source/KNOPPIX/tmp

Работа в Chroot среде

  • Теперь вы можете "chroot" в скопированной KNOPPIX:
 chroot /media/sda1/knx/source/KNOPPIX
  • Помните, что все, что вы делаете или создаёте в изолированной (chroot) среде будет записано на CD-диск.
  • В chroot вы также можете запускать X-основанные программы из командной строки терминала.
  • Введите "su knoppix", чтобы стать пользователем knoppix; используйте "Strg D", чтобы снова стать пользователем root.
  • Обновите список пакетов командой: apt-get update
    • Предупреждение: apt-get upgrade является ПЛОХОЙ ИДЕЕЙ. Вполне возможно, это сделает ваш KNOPPIX не загружаемым или повреждённым. Намного безопаснее метод только обновления пакетов по мере необходимости.
    • Прежде чем вы будете добавлять в сборку новые пакеты, вероятно, потребуется удалить некоторые пакеты.
  • Чтобы получить список установленных пакетов, вы можете использовать kn-what, чтобы получить список сортированный по размеру и т.п.

Выход из Chroot

  • Нажмите CTRL+D, чтобы выйти из изолированной среды (chroot); далее используйте этот скрипт:
#! /bin/sh
#      Как сделать ... операция 3
#      Путь к разделу, на котором вы работаете
PFAD="/media/sda1"
for i in dev/pts proc sys dev tmp; do
  umount $PFAD/knx/source/KNOPPIX/$i
done
sed -i '2,$d' $PFAD/knx/source/KNOPPIX/etc/resolv.conf

Изменения за пределами среды chroot

  • Если вы хотите попробовать еще один способ загрузки Knoppix, сделайте изменения в '/media/sda1/knx/master/boot/isolinux/isolinux.cfg':
    • Например, заменить все 'tz=localtime' на 'tz=America/New_York'
  • Вы можете добавить в этот файл читкоды, которыми вы часто пользуетесь:
    • Например написать 'no3d' (без пробела ' ') для каждой строки Append, если вам не нравится compiz 3d
  • Прочтите knoppix-cheatcodes.txt. Вы можете найти новую версию этого файла на зеркалах.
  • В '/media/sda1/knx/source/KNOPPIX/etc/X11/Xsession.d/45knoppix' находятся обои использующиеся в Knoppix, а также звуки запуска.
  • В '/media/sda1/knx/source/KNOPPIX/etc/init.d/knoppix-halt' находится звук, который вы слышите во время выключения.
  • Создайте файл '/media/sda1/knx/master/KNOPPIX/knoppix.sh', чтобы запустить дополнительные сервисы.
к началу


Пересборка ISO

  • Настройка завершена, все готово к записи диска!
#! /bin/sh
#      Как сделать ... операция 4
#      Путь к разделу, на котором вы работаете
PFAD="/media/sda1"
START=$(date +'%s')
#      Запрещает заставку
xscreensaver-command -exit
#      Создание новой инициализации RAM-диска
cd $PFAD/knx/minirt/minirtdir/
find . | cpio -oH newc | gzip -9 > ../minirt.gz
cp $PFAD/knx/minirt/minirt.gz $PFAD/knx/master/boot/isolinux/
#      Создаёт большой сжатый файл файловой системы KNOPPIX
genisoimage -input-charset ISO-8859-15 -R -l -D -V KNOPPIX_FS -quiet \
  -no-split-symlink-components -no-split-symlink-fields \
  -hide-rr-moved -cache-inodes $PFAD/knx/source/KNOPPIX \
  | /usr/sbin/create_compressed_fs -q -B 65536 -t 8 -L 9 \
  -f $PFAD/knx/isotemp - $PFAD/knx/master/KNOPPIX/KNOPPIX
#      Обновляет хеш файла используемый загрузочной опцией "testcd"
cd $PFAD/knx/master ; find -type f -not -name \
  sha1sums -not -name boot.cat -not \
  -name isolinux.bin -exec sha1sum '{}' \; > KNOPPIX/sha1sums
#      Создаёт новый Knoppix ISO
genisoimage -l -r -J -V "KNOPPIX" \
  -b boot/isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 \
  -boot-info-table -c boot/isolinux/boot.cat \
  -o $PFAD/knx/remastered.iso $PFAD/knx/master
#      Разрешает заставку
su knoppix -c "xscreensaver -nosplash &"
echo -e "\nFinished! Used time: $(expr $(expr $(date +'%s') - $START) / 60) min. \
  and $(expr $(expr $(date +'%s') - $START) % 60) sec. \
  \n\nThe new ISO is stored in '$PFAD/knx/remastered.iso' "
к началу


Тест образа CD перед записью на CD

kvm-qemu

Если Ваш процессор поддерживает виртуализацию и это активировано в BIOS'е, то вы можете проверить работу созданного ISO на эмуляторе kvm-qemu. Проверьте, поддерживается ли:

egrep '(vmx|svm)' --color=always /proc/cpuinfo

Если вы получаете результат "vmx" тип

modprobe kvm-intel

иначе, если вы получаете результат "svm" тип

modprobe kvm-amd

чтобы загрузить модуль kvm. Теперь вы можете проверить новый ISO с помощью

kvm -m 512 -cdrom $PFAD/knx/remastered.iso

VirtualBox

VirtualBox также может использоваться для теста ISO.


  • Конец исправленной версии этого учебника "Как сделать, чтобы ..."
  • Пожалуйста сообщите на Настройке и пересборка если вы обнаружили ошибки или в случае возникновения вопросов или предложений.

См. также:

к началу





Устаревшие заметки на тему "как сделать, чтобы ..."

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

Автозапуск программ

Если вы хотите автоматически запускать некоторые программы при старте системы, то можно создать скрипт и поместить его в /etc/init.d, и далее добавить его в переменную SERVICES в /etc/rc.local. Для X-программ ознакомьтесь с /home/knoppix/.kde/Autostart

Правка скрипта авто-конфигурации KNOPPIX

Вы можете найти много интересной информации о том, как автоматически настроить ваш KNOPPIX ознакомившись со скриптом '/etc/init.d/knoppix-autoconfig' and '/etc/X11/Xsession.d/45knoppix'.

Изменение загрузочной графики, загрузочного сообщения, и текста скрипта автозагрузки

Пока вы находитесь в среде chroot вы можете легко изменить загрузочные сообщения, загрузочную графику, и загрузочный фоновый рисунок KDE.

Изменение загрузочной графики

Загрузочная графика это первый рисунок, что вы видите при загрузке CD или DVD. Он похож на ASCII-графику и выглядит кричащим, типа 'Knoppix'. Вы можете изменить его на любой другой рисунок, который вам нравится, но вы должны использовать размер 640x400 пиксель и только 16 цветов.

  1. Перейдите в папку /mnt/sda1/knx/master/boot. Поменяйте '/mnt/sda1/' на тот путь что используете.
    • cd /mnt/sda1/knx/master/boot/isolinux
  2. Создайте резервную копию оригинального логотипа, в случае неудачного создания вашей заготовки.
    • mv logo.16 logo.16.backup
  3. Создайте рисунок размером 640x400 пиксел, глубиной 16 цветов и сохраните его как GIF, например 'logo.16.gif'. Это легко можно сделать в GIMP. Вы можете использовать рисунок, который изначально имел более 16 цветов, но критически важно конвертировать его в 16-цветный, прежде чем делать следующий шаг.
  4. Преобразование GIF в 16-цветный можно с помощью инструментов находящихся на диске Knoppix CD.
    • giftopnm < 640x400x16.gif > logo.ppm
    • ppmtolss16 <logo.ppm > logo.16

Изменение загрузочного сообщения

Загрузочным сообщением является то, что вы видите под загрузочной графикой на первой картинке при загрузке Knoppix CD или DVD. Обычно это сообщение вдоль линии Knoppix с номером версии и содержит ссылку на сайт Knoppix. Вы можете изменить этот текст, как вам нравится, но не добавляйте слишком много текста, чтобы он не выглядел примитивно. Лучше ограничится одной строкой, аналогично оригиналу.     Вы увидите в верхней части сообщения, которое он показывает графику. Не изменяйте этот текст, только черту под.

  1. Перейдите в папку /mnt/sda1/knx/master/boot. Поменяйте '/mnt/sda1/' на тот путь что используете.
    • cd /mnt/sda1/knx/master/boot/isolinux
  2. Создайте резервную копию оригинального сообщения, на случай проблемы вывода вашего сообщения на экран.
    • cp boot.msg boot.msg.backup
  3. Редактировать сообщение с помощью текстового редактора. Вы увидите в верхней части сообщения графику. Не изменяйте этот текст, только строку под ним.
    • vi boot.msg

Изменение текста скрипта автозагрузки

Текст скрипта автозагрузки это тот, что вы видите после первого экрана загрузки, пока загружается Knoppix и конфигурируется система. Вы можете изменить как вам нравится. Вы даже можете добавить строки в скрипт; Однако не рекомендуется играть с этим файлом. Ограничивая себя редактированием сообщения 'Добро пожаловать в KNOPPIX'.

Как добавить новый драйвер устройства в KNOPPIX

Недавно в клиентском проекте, я добавил драйвер цифровых отпечатков пальцев в дистрибутив Knoppix 5.1 в качестве встроенного решения этого проекта. This is a typical case where both the kernel level driver and the user level drivers and libraries are involved.

Most of the Knoppix books and online documentation have documented about how to keep a persistent storage of user configuration and user data. But those persistent configuration only saves the data in /home and /etc directories. If you have added kernel level drivers and/or other system libraries which are not in above two directories, you have to save the file images as a whole right after the boot. The saved file image can be big and may not what you want as a regular usage model. If you are building a customed Knoppix image for a long term solution, definitely you want to remaster the Knoppix to make the new drives be a permanent part of it.

The Digital Persona’s OneTouch SDK for their finger print scanner driver comes with a kernel level driver source code, plus a set of user level application libraries, as well as a sample test application. The SDK do not have a ready made binary for Debian or Knoppix. So I have to compile it from the source SDK. However, the CD version of Knoppix 5.1 do not even come with the source include header files to compile a kernel level driver. So I have to compile it under the DVD version of the Knoppix 5.1 and copy the compiled binary to the CD version of Knoppix 5.1 to do testing and remastering. Шаги, которыми я пытался заставить его работать под Knoppix являются следующими:

1. Во-первых компиляция драйвера под DVD версию Knoppix. Изменение исходного кода скрипта, чтобы пути включаемых файлов и библиотек соответствовали структуре Knoppix. Подробности специфичны для OneTouch SDK. Если вы заинтересованы в подробностях, напишите мне.

2. Install the just built kernel driver, the user libraries to their regular location as we will show in following step 4. And then build and run their sample applications per Digital Persona’s instruction. This proves that the basic kernel module build steps are built correctly and the user level libraries are working properly in a standard installation. This is important before we moved to chroot environment to make this changes permanent to our remastered Knoppix.

3. Затем я следовал инструкциям пересборки Knoppix, описанных в книге “Live Linux CD” от Christoper Negus.

4. В выше приведенных инструкциях пересборки, есть шаг, чтобы обновить все пакеты Debian и другие программы в среде chroot. Именно на этом этапе, на котором я перезапустил установку драйвера, как я сделал в предыдущем шаге 2 в среде root. В данном конкретном случае, это создание папки и копирования файла модуля ядра mod_usbdpfp.ko в эту папку следующим образом:

mkdir /lib/modules/2.6.19/kernel/drivers/biometric cp mod_usbdpfp.ko /lib/modules/2.6.19/mod_usbdpfp.ko

А также копирование всех библиотек уровня пользователя Digital Persona в следующее расположение:

cp libdpfp* /usr/lib

5. Далее я запустил /sbin/depmod, чтобы система обнаружила новый драйвер режима ядра, который я установил. Это обновит папку /dev, так что это будет иметь записи аналогично следующим:

/dev/usbdpfpPNP /dev/usbdpfp0

В то же время, если всё работает правильно, то при запуске команды lsmod, вы также увидите что-то вроде:

mod_usbdpfp

shows up in the loaded module list

6. На данный момент вы готовы сделать пересборку Knoppix. В следующий раз, когда вы загружаете эту пересборку Knoppix, он будет иметь драйвер ядра и уровень пользователя установленных библиотек, готовых для запуска приложений. Так же, как если бы вы сделали выше шаг 2 и 4 сразу после перезагрузки обновления из оригинальной Knoppix CD.

John Xu, USA. ( johnxu at n2k.net )

Test remastered version without creating cloop file/iso

i use a setup similar to knoppix terminal server to test the remastered files without having to recreate a cloop image every time: the remastered files live in an ext2 filesytem in a loopfile (knoppix_loop) mounted rw (this is where i chroot in). when i want to test the current setup, i have another machine network boot and use the files from the loopfile directly (needs another miniroot.gz). See User:Ml#dev_setup

If you want to use only one machine, you'll have to reboot (or use qemu) and use the "loopfile" and "fromhd" cheatcodes (see User:Ml#miniroot_changes). For example, this is what my grub boot entry looks like:

title           Remastered Knoppix
root            (hd0,0)
kernel          /boot/myknoppix/vmlinuz fromhd=/dev/hda4 loopfile=/samba/share/isos/knoppix_loop lang=us ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=791 quiet BOOT_IMAGE=knoppix
initrd          /boot/myknoppix/miniroot.gz

Booting Knoppix images with GRUB

  • First copy /boot off the Knoppix cd to your boot partition (or even your dos partition). I named mine boot.knoppix

Copy the master/KNOPPIX directory to your root directory of any hard disk. You may place it somewhere other than the boot partition (ext2/3, reiserfs, vfat are supported).

title KNOPPIX
        root   (hd0,0)
        kernel /boot.knoppix/isolinux/linux 2 fromhd=/dev/hda4 lang=us
        initrd /boot.knoppix/isolinux/minirt.gz
  • notice the fromhd parameter: it's the location of the /KNOPPIX directory
  • reboot and have fun.

Tips around apt-get to install/update/remove applications

(by gnarvaja)

  • If you booted from CD, even on a HD install (example: Pivot Install) instead of copying the original CD and KNOPPIX directory to the HD, you can use them directly from their mount points.
  • Another alternative is to mount an ISO image of the original CD as a loop device and mount the KNOPPIX image as a cloop device. You will save close to 2GB of space. Script to mount from an ISO image:
#!/bin/bash
# Assumes that the current directory is the working space
# original.iso is an image of the CD we will be using as master
mount -t iso9660 original.iso ./oldcd -o ro,loop
# initialize the compressed loop device
losetup /dev/cloop1 ./oldcd/KNOPPIX/KNOPPIX
mount -t iso9660 /dev/cloop1 ./KNOPPIX -o ro,loop
  • Get apt-spy and use it to modify the sources.list file with the best mirrors for your particular region. This will speed up the downloading. Backup the original sources.list just in case.
  • Another technique is to modify sources.list. Replace the string .de. in the ftp addresses (ftp.de.debian.org) with the code corresponding to your country. Examples: USA -> .us. (ftp.us.debian.org), Brazil -> .br. (ftp.br.debian.org). Check the Debian site for debian.org mirrors in your country.
  • Remember to uncomment the linuxtag ftp addresses to get the latest and greatest from Knoppix
  • Use apt-get update to get the lists with the latest releases and patches. Do not update a package if you don't need to, it may lead to the use of additional disk space (precious commodity when you want to keep everything below 700MB) and you may brake something else without knowing. Abuse the -s option to simulate the installation.
  • Before doing the update, I modified my default releases to testing, that means that the software I'll be using will have a good balance of stability and features. Knoppix uses unstable by default, which is too risky for my personal taste.
  • Get [apt-get install] locale and configure it with the locales you are going to use. It will save lots of space when downloading applications with plenty of locale modules and localized manual pages.
  • I use aptitude to get/remove applications, it is character based so it works with init 2. As you mark packages for install/update/removal, it will tell you how much disk space you will save/use, try to solve depencies problems and give you plenty control to fix them manually when possible.
  • When installing applications it is likely that your /etc/rc?.d directories will have new entries, many of them unwanted or unplanned. Make sure you check them and remove the new entries based on your preferences. I usually leave /etc/rc2.d and /etc/rc5.d as close as the originals as possible and modify /etc/rc3.d and /etc/rc4.d to test new stuff. Example: You may want to have ntfs installed, but not necessarily running by default. Same with apache, mysql and many others.
  • When removing/purging applications, they may leave behind non-empty directories. Usually this is announced by aptitude, apt-get or any other installation utilty. Make sure to check the messages and manually remove those directories.
  • After you are done, aptitude may leave some files behind. Here's a clean up script I use:
# !/bin/bash
# Clean package files generated by aptitude
rm /var/log/aptitude
rm /var/lib/apt/lists/*debian*
rm /var/lib/apt/lists/*knoppix*
к началу