понедельник, 25 февраля 2008 г.

Настройка LiveCD на свой вкус

В предыдущем посте я рассказал о том как создать систему на основе лайв сиди на флэшке. В этом речь пойдет о создании .iso образа системы, уже содержащей новые версии необходимых пакетов и исключающей не нужные, который для этой флэшки можно будет использовать. Например OpenOffice мне на ней не нужен, а вот апач сервер позарез, ну и так далее(его конечно можно будет установить и потом, но куда удобнее когда он уже установленный содержится в исходном .iso). Полученный образ можно будет закатать на флэшку или DVD болванку, т.к. весить он будет под 800 Мб(на CD увеличенного объема тоже влезет). Ну и естественно система, установленная с этого образа будет содержать все обновления и настройки, пакеты, которые вы сейчас установите и не будет в ней тех, что вы удалите.

Здесь мы получим образ buntu, который будет содержать:

  • Все обновления пакетов
  • Дополнительные репозитории
  • Поддержку проигрывания mp3, divx, DVD
  • Флэш плагин

  • если Вам еще чего то не достает(Amarok, Skype и т.д.) вы без труда добавите это

1. Подготовка

В начале получим права супер пользователя sudo su

Нам понадобится .iso образ, на основе которого мы будем создавать свой.
Еще нам нужны будут дополнительные пакеты для создания образа, установим их:

apt-get install squashfs-tools chroot

Теперь создадим папку и монтируем туда имеющийся .iso образ:

mkdir /media/ubuntu_iso
mount -o loop ubuntu-7.10-desktop-i386.iso /media/ubuntu_iso

Создадим директорию содержащую наш будущий образ и скопируем в нее все содержимое iso'шника, окромя casper/filesystem.squashfs :

mkdir ~/livecd
mkdir ~/livecd/cd
rsync --exclude=/casper/filesystem.squashfs -a /media/ubuntu_iso/ ~/livecd/cd

Файл filesystem.squashfs содержит файловую систему лайв сиди в сжатом виде. Мотриуем его, в папку ~/livecd/squashfs и скопируем ее содержимое в папку ~/livecd/custom :

mkdir ~/livecd/squashfs
mkdir ~/livecd/custom
modprobe squashfs
mount -t squashfs -o loop /media/ubuntu_iso/casper/filesystem.squashfs ~/livecd/squashfs/
cp -a ~/livecd/squashfs/* ~/livecd/custom

И наконец скопируем /etc/resolv.conf и /etc/hosts в ~/livecd/custom/etc, чтобы иметь доступ к сети в создаваемой системе:

cp /etc/resolv.conf /etc/hosts ~/livecd/custom/etc/

2. Доступ к настраиваемой системе

Теперь сменим рут системы на ~/livecd/custom и примонтируем необходимые нам proc и sysfs, еще зададим переменную окружения HOME значением /root

chroot ~/livecd/custom
mount -t proc none /proc/
mount -t sysfs none /sys/
export HOME=/root

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

3. Удаление ненужных пакетов

Что бы удалить ненужный пакеты наберите:

apt-get remove --purge имя_удаляемого_пакета

Что бы просмотреть установленные пакеты выполните

dpkg-query -W --showformat='${Package}\n' | less

4. Обновление системы

Сначала добавим новые репозитории в /etc/apt/sources.list

выполните
nano /etc/apt/sources.list
откроется консольный текстовый редактор
замените содержимое открытого файла на следующее:

deb http://archive.ubuntu.com/ubuntu gutsy main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu gutsy main restricted universe multiverse

deb http://archive.ubuntu.com/ubuntu gutsy-updates main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu gutsy-updates main restricted universe multiverse

deb http://security.ubuntu.com/ubuntu gutsy-security main restricted universe multiverse
deb-src http://security.ubuntu.com/ubuntu gutsy-security main restricted universe multiverse

deb http://archive.canonical.com/ubuntu gutsy partner
deb-src http://archive.canonical.com/ubuntu gutsy partner

Ctrl+O для сохранения изменений
Ctrl+X выходим из редактора

теперь можно систему обновить:

apt-get update
apt-get dist-upgrade

5. Установка новых пакетов

новые пакеты устанавливаются командой

apt-get install имя_устанавливаемого_пакета

Установим поддержку проигрывания mp3, divx, DVD

apt-get install gstreamer0.10-ffmpeg gstreamer0.10-plugins-ugly gstreamer0.10-plugins-ugly-multiverse gstreamer0.10-plugins-bad gstreamer0.10-plugins-bad-multiverse vlc mplayer mplayer-fonts
/usr/share/doc/libdvdread3/install-css.sh

Теперь установим поддержку rar архивов

apt-get install rar unrar

Далее по списку — установка флэш плагина и плагина проигрывания мультимедии для Firefox'a

apt-get install flashplugin-nonfree mozilla-plugin-vlc

6. Очистка от ненужных файлов

В процессе установки накопилось немного мусора. Удалим его:

apt-get clean — очистка кэша установленных пакетов

rm -rf /tmp/* — очистка временной папки

rm -f /etc/hosts /etc/resolv.conf — удаляем скопированные ранее файлы для работы с сетью

Отмонтируем /proc /sys и выйдем из рута настраиваемой системы:

umount /proc/
umount /sys/
exit

7. Создание нового ISO образа

Пересоздадим список установленных в системе пакетов

chmod +w ~/livecd/cd/casper/filesystem.manifest
chroot ~/livecd/custom dpkg-query -W --showformat='${Package} ${Version}\n' > ~/livecd/cd/casper/filesystem.manifest
cp ~/livecd/cd/casper/filesystem.manifest ~/livecd/cd/casper/filesystem.manifest-desktop

И перегенерируем файловую систему squashfs

mksquashfs ~/livecd/custom ~/livecd/cd/casper/filesystem.squashfs

пересоздадим файл содержащий хэши для проверки целостности данных md5sum.txt


sudo -s
rm ~/livecd/cd/md5sum.txt

(cd ~/livecd/cd && find . -type f -print0 | xargs -0 md5sum > md5sum.txt)

И наконец сделаем iso образ, созданной операционки

cd ~/livecd/cd
mkisofs -r -V "Ubuntu-Live-Custom" -b isolinux/isolinux.bin -c isolinux/boot.cat -cache-inodes -J -l -no-emul-boot -boot-load-size 4 -boot-info-table -o ~/Desktop/Ubuntu-Live-7.10-custom.iso ./

Полученный образ можно записать на болванку либо на флэшку.

Рассмотренный способ открывает широкие возможности для модифицирования системы перед использованием/установкой. Но можно воспользоваться более простым, но менее гибким способом инструментом Ubuntu Customization Kit

22 комментария:

Анонимный комментирует...

С чего это Ubuntu customization kit не гибкий? Он дает root shell и делаешь там все что хочешь.

Timur Baker комментирует...

Значит я что-то упустил. Хорошо если так.

Анонимный комментирует...

Спасибо, все по полочкам разжевано. Хочешь копипасти только, хочешь настраивай как угодно :)

Timur Baker комментирует...

Рад что пригодилось кому то. Пожалуйста :)

Boron комментирует...

Большое спасибо за статью! Настолько всё разжевать... Лично у меня бы наверное не хватило терпения. :)

Ещё не пробовал по ней сделать образ, но планирую начать этим заниматься через пару-тройку часов.

А мне вот что интересно стало.

С образом для флешки всё понятно - всё будет настроено, как я хочу.

Как думаешь, к примеру если я захочу "установить" с моей настроенной Live Flash на жёсткий диск своего второго компьютера - это возможно? (я имею ввиду, что можно ли будет устанавливать с этой флешки копии уже настроенной мною ОС, со всеми программами, настройками и т.д. на другие компьютеры)?

Boron комментирует...

И ещё вопросик возник. Вот ты заикнулся, что тебе лично нужен Apache.

Мне он тоже нужен будет на LiveFlash.

Если не секрет - на какую папку у тебя ссылается Apache?

У меня по умолчанию - /var/www/

Но стоит ли так оставлять? (я буду иметь доступ к этой папке, если буду грузиться с LiveFlash)? Или ты что-то более удобное придумал?

Timur Baker комментирует...

1. Да, установить убунту с этой флэшки можно будет и все настройки и пакеты, так же установятся.
2. Тут скорее всего ответ тоже положительный, и проблем возникнуть не должно, но на 100% утверждать не берусь. Я сам использую xampp.

Анонимный комментирует...

Добавил кучу пакетов , обновил , но дошел до перегенерации файловой системы squashfs

пишет: Creating little endian 3.1 filesystem on /media/Work/DEL/livecd/cd/casper/filesystem.squashfs, block size 131072

и останавливается на 74 %
Может это из за того что первоначальный образ был на CD 700 Мб а теперь тянет на DVD

Timur Baker комментирует...

Нет, я создавал образ за 700 мб без проблем.
Проверьте для начала свободное место на вашем диске.
Если с местом точно все в порядке, а образ создаеться в ubuntu 8.04, поставьте пакет http://ftp.de.debian.org/debian/pool/main/s/squashfs/squashfs-tools_3.3-7_i386.deb

Анонимный комментирует...

Спасибо , помогло ,а то дав дня с этим просидел

Анонимный комментирует...

поменял на указанный пакет

Unknown комментирует...

спасибо) как сделать дистрибут апгрейд?)

Timur Baker комментирует...

homeboy, только заново filesystem.squashfs пересоздавать иначе никак.

Unknown комментирует...

я имею ввиду аналог update-manager -d ,если толлько консоль,можно конечно заменить сурц,но не юникс вей)

Timur Baker комментирует...

Об этом не знаю...

Unknown комментирует...

у меня на последнем шаге (генерации iso образа) выдает ошибку :( :
I: -input-charset not specified, using utf-8 (detected in locale settings)
genisoimage: No such file or directory. Unable to open disc image file '/home/sidorovy/Desktop/UbuntuLive-9.04-custom.iso'.
И вообще, когда попробвал ввести man mkisofs - выдал, что вместо этой программы в системе существует genisoimage. Типа, "радуйтесь"!

Stalker комментирует...

А подходит-ли этот способ для создания Debian LiveCD?

Timur Baker комментирует...

Андрей, честно не знаю не пробовал, но логично предположить, что и к Debian подойдет.

Анонимный комментирует...

Спасибо за обстоятельную статью, собрал свой установочный диск. Были некоторые затруднения, на убунту перешел недавно.

Alex комментирует...

спасибо, но столкнулся с проблемой в месте "Теперь создадим папку и монтируем туда имеющийся .iso образ:
mkdir /media/ubuntu_iso
mount -o loop ubuntu-11.04-desktop-i386.iso /media/ubuntu_iso"
У меня файл ubuntu-11.04-desktop-i386.iso на раб. столе. и в терменале пишет, что "ubuntu-11.04-desktop-i386.iso: Нет такого файла или каталога". Куда его положить надо, чтобы видно было???

Timur Baker комментирует...

Alex положите в ~/ тогда трудностей не должно быть

Timur Baker комментирует...

Alex, положите в ~/ тогда трудностей не должно быть