- Создание iso со своим образом Ubuntu и набором программ
- Подготовка
- Устанавливаем зависимости на хост-систему
- Монтируем оригинальный образ ISO в mnt
- Копируем содержимого mnt в extract-cd
- Расжимаем файловую систему squashfs и перемещаем содержимое в edit
- Подготавливаем рабочую среду
- Кастомизация своего образа Ubuntu
- Ставим необходимые пакеты
- Кастомизация
- Проверка и сборка ISO образа
- Проверяем, что нет пользователя UID=999
- Пересобираем initrd
- Очищаем образ
- Размонтируем
- Собираем ISO образ
- Манифест
- Сжимаем файловую систему
- Пишем размер файловой системы и md5 хеши файлов
- Создаем готовый ISO
- Записываем ISO на флешку
- Как создать ISO-файл в Ubuntu
- Использование утилиты genisoimage
- Установка genisoimage
- Использование genisoimage
- Использование команды dd в Терминале для создания ISO-файла
- Использование утилиты Brasero для создания файла ISO
- Похожие записи:
Создание iso со своим образом Ubuntu и набором программ
Я собирал собственный образ ISO Ubuntu 18.04 по инструкции LiveCDCustomization на системе Ubuntu 14.04.
Мне необходимо было поставить некоторые программы, чтобы они были доступны сразу с LiveCD, без установки. Это удобно, особенно без наличия интернета.
В оригинальной инструкции LiveCDCustomization есть некоторые неясные моменты и неточности. Сама инструкция устарела, и частично не работала.
Поэтому я делал по шагам и записывал выполняемые действия.
Важно понимать, что вы делаете: вся кастомизация LiveCD проходит под chroot, и на рабочую систему (ту, где вы сейчас работаете) влияния не оказывает.
Но если выйти из chroot, все введенные команды применяются к рабочей системе. Это требуется в некоторых местах инструкции: при первичной подготовке, и в конце, при сборке. Смотри не перепутай
Подготовка
Устанавливаем зависимости на хост-систему
Потребуется 2 пакета, один занимается работой со сжатой файловой системой squashfs, другой для создания ISO-образа CDROM (ISO-9660):
sudo apt install squashfs-tools genisoimage
Странно, но у меня уже были установлены эти пакеты. Ради интереса найдем, когда эти пакеты были установлены, для чего поищем в истории apt:
cd /var/log/apt # ищем в history.log grep -r squashfs --color=always # если прошло много времени, история упаковывается в .gz, ищем в ней: find -name \*.gz -print0 | xargs -0 zgrep squashfs --color=always # --color=always добавляет подсветку найденных слов
Также потребуется виртуальная машина для быстрого тестирования. Я использовал Virtualbox
Монтируем оригинальный образ ISO в mnt
Скачиваем оригинальный ISO образ Ubuntu, который будем модифицировать под свои нужны. Допустим, образ скачан и находится в ~/downloads/ubuntu-18.04-desktop-amd64.iso .
Подмонтируем этот ISO образ в каталог ~/livecdtmp/mnt для дальнейшей работы:
# создаем сразу два вложенных каталога mkdir -p ~/livecdtmp/mnt # копируем ISO образ диска cp ~/downloads/ubuntu-18.04-desktop-amd64.iso ~/livecdtmp # входим в каталог, где будет проводиться основная работа cd ~/livecdtmp # монтируем CD-диск sudo mount -o loop ubuntu-18.04-desktop-amd64.iso mnt
Копируем содержимого mnt в extract-cd
mkdir extract-cd rsync --exclude=/casper/filesystem.squashfs -a mnt/ extract-cd
Расжимаем файловую систему squashfs и перемещаем содержимое в edit
sudo unsquashfs mnt/casper/filesystem.squashfs sudo mv squashfs-root edit
Подготавливаем рабочую среду
Копируем resolv.conf с рабочей системы, чтобы было сетевое соединение внутри чрута, также делаем это для сети::
sudo cp /etc/resolv.conf edit/etc/ sudo mount -o bind /run/ edit/run sudo mount --bind /dev/ edit/dev
resolv.conf в следующих шагах оказался пустым, надо понять почему, и исправить
Чрутимся, и начинаем работать со своим кастомизированным образом.
# chroot выполняется только от суперпользователя sudo su # чрутимся: chroot edit # < зачрутились# важно! чтобы не перепутать, где мы работаем, сразу сменим вид приглашения командной строки: PS1="(CHROOT) $PS1"
mount -t proc none /proc mount -t sysfs none /sys mount -t devpts none /dev/pts export HOME=/root export LC_ALL=C
dbus-uuidgen из оригинальной инструкции я пропустил
Файл /etc/resolv.conv оказался пустым, значит что-то я сделал не так. Отредактируем его вручную, скопировав содержимое /etc/resolv.conv из рабочей системы:
vi /etc/resolv.conv # это не команды, а содержимое файла, которое следует внести. Не копировать слепо! Подставить из своей рабочей системы, файл /etc/resolv.conv! У меня оно такое: nameserver 127.0.1.1
Теперь сеть у нас доступна внутри чрута, проверим
Кастомизация своего образа Ubuntu
Напомню, сейчас мы находимся под чрутом ( chroot edit ), и у нас работает сеть. Все что написано ниже, является делом вкуса.
Ставим необходимые пакеты
Смотрим установленные пакеты:
dpkg-query -W --showformat='$\t$\n' | sort -nr | less
Если хотим, обновляем пакеты:
Устанавливаем свои пакеты:
# программы для работы с сетью apt install curl net-tools whois nmap # остальные - также по желанию apt install vim git htop zsh tmux
Следующие пакеты поставить не удалось, так как их нет в /etc/apt/ :
shutter krusader filezilla lynx
узнать, какие репо следует добавить для установки
Установить программы можно и из deb-пакетов, на примере Atom:
У меня установка не удалась, так как этот пакет зависит от gconf2 и gconf-service . Эти зависимости apt не сумел разрешить. Чтобы это исправить, требуется добавить в /etc/apt/ дополнительные репо. какие?
dpkg: dependency problems prevent configuration of atom: atom depends on gconf2; however: Package gconf2 is not installed. atom depends on gconf-service; however: Package gconf-service is not installed.
Кастомизация
Это по-желанию: читаем оригинальную инструкцию LiveCDCustomization, раздел Customizations и настраиваем фон рабочего стола, шрифты, региональные настройки и прочее. Первый шаг dbus-uuidgen и dpkg-divert можно пропустить, для Ubuntu 18.04 они не повлияли на работу apt .
Проверка и сборка ISO образа
Проверяем, что нет пользователя UID=999
В оригинальной мане указано, что если существует пользователь с UID 999, с LiveCD невозможно будет загрузиться. Такой пользователь может возникнуть при установке Virtualbox.
есть есть, то выполнить usermod -u 500 $hit , где $hit — имя проблемного пользователя
Пересобираем initrd
После модификации ядра, скриптов загрузки или добавления модулей ядра, нужно пересобрать initrd.gz и переместить его в каталог casper
mkinitramfs -o /initrd.gz 4.15.0-23-generic # выходим из чрута и перемещаем собранный образ exit mv edit/initrd.gz extract-cd/casper/
chroot edit PS1="(CHROOT) $PS1"
Очищаем образ
Удаляем все, что не установилось и чистим систему:
apt --fix-broken install apt autoremove rm -rf /tmp/* rm /etc/resolv.conf rm /var/lib/dbus/machine-id # у меня файла не было
Размонтируем
umount /proc || umount -lf /proc umount /sys umount /dev/pts exit # выходим из chroot umount edit/dev
Собираем ISO образ
Манифест
# делаем манифест записываемым chmod +w extract-cd/casper/filesystem.manifest # обновляем манифест chroot edit dpkg-query -W --showformat='$ $\n' > extract-cd/casper/filesystem.manifest # пишем установленные пакеты cp extract-cd/casper/filesystem.manifest extract-cd/casper/filesystem.manifest-desktop # удаляем упоминания пакетов sed -i '/ubiquity/d' extract-cd/casper/filesystem.manifest-desktop sed -i '/casper/d' extract-cd/casper/filesystem.manifest-desktop
Сжимаем файловую систему
rm extract-cd/casper/filesystem.squashfs ## у меня не было этого файла mksquashfs edit extract-cd/casper/filesystem.squashfs -b 1048576
Пишем размер файловой системы и md5 хеши файлов
printf $(du -sx --block-size=1 edit | cut -f1) > extract-cd/casper/filesystem.size cd extract-cd rm md5sum.txt find -type f -print0 | xargs -0 md5sum | grep -v isolinux/boot.cat | tee md5sum.txt
Создаем готовый ISO
mkisofs -D -r -V "My Ubuntu custom image" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o ../my-ubuntu.iso .
Итоговый образ my-ubuntu.iso проверяем в Virtualbox.
Записываем ISO на флешку
Для записи я использовал unetbootin , который доступен из центра приложений Ubuntu.
Как создать ISO-файл в Ubuntu
Большинство операционных систем и программ, особенно больших, поставляется в формате ISO, содержащем все необходимые установочные файлы. ISO-файл или ISO-образ — это идеальное представление всех файлов и папок, содержащихся на CD/DVD. Также можно сказать, что это пакет всех установочных файлов и папок в одном единственном файле в формате ISO.
Вы можете легко создавать резервные копии или архивировать файлы и папки в ISO-файл. Этот ISO-файл можно использовать в качестве внешнего диска, загрузочного USB или CD/DVD, чтобы впоследствии использовать его для установки, сохранения в качестве резервной копии или передачи кому-либо.
С помощью файлов ISO вы можете:
- Создать установочный диск путем записи на USB или CD/DVD.
- Монтировать как виртуальный диск.
- Использовать для установки ОС или программ.
Использование утилиты genisoimage
В Linux можно создать ISO-образ из папки с помощью утилиты genisoimage, используя аргумент командной строки. Вы можете использовать genisoimage для автоматического резервного копирования данных с возможностью исключения некоторых отдельных файлов, если это необходимо. Она также поддерживает подстановочные знаки.
Установка genisoimage
Обновите список доступных пакетов командой
Установите genisoimage командой ниже
Использование genisoimage
Основной синтаксис команды следующий:
genisoimage -o [filename.iso] [directory_path]
-o определяет имя файла ISO, который вы хотите создать, а затем каталог, в котором вы хотите создать резервную копию или сохранить ISO-файл.
Например, я хочу создать ISO-файл из каталога /home/user/Documents/backup и сохранить его как файл backup.iso:
genisoimage -o backup.iso /home/user/Documents/backup
Он создаст файл backup.iso и сохранит его в текущем каталоге.
Использование команды dd в Терминале для создания ISO-файла
В основном с помощью команды dd можно создавать копии данных, будь то файлы или папки, разделы или CD/DVD-диски. Мы также можем использовать команду dd для создания файлов ISO.
Основной синтаксис команды dd следующий:
If= Указывает команде, откуда вводить исходные данные.
Of= Указывает команде, где определить выходные данные.
Например, я введу следующую команду для копирования и сохранения содержимого диска в виде ISO-файла с именем diskimage.iso:
sudo dd if= /dev/sdb of= diskimage.iso
ISO-образ с именем diskimage.iso будет создан в текущем каталоге.
Использование утилиты Brasero для создания файла ISO
Для создания ISO-файла можно использовать утилиту Brasero для записи дисков Linux. Старые версии Ubuntu включают встроенную утилиту Brasero. Однако в 16.04 и более новых версиях вам придется вручную установить эту утилиту.
Чтобы установить Brasero, нажмите Ctrl+Alt+T для запуска Терминала.
Введите следующую команду в Терминале:
sudo apt-get install brasero
После завершения установки откройте приложение.
Чтобы открыть приложение Brasero, нажмите клавишу windows или щелкните на значке dash в левом нижнем углу рабочего стола, чтобы открыть меню Dash.
Затем найдите приложение Brasero, набрав его название в строке поиска. Когда приложение появится, нажмите на него, чтобы открыть.
В окне приложения Brasero нажмите на опцию Data project.
Затем нажмите на значок +, чтобы начать добавлять файлы в новый проект.
В появившемся окне выберите отдельные файлы или каталоги и нажмите на кнопку Add.
Вы заметите, что файлы добавлены в приложение. Нажмите на Записать.
Выберите место для сохранения ISO-файла. Укажите имя ISO-файла с расширением .iso и нажмите на кнопку Create Image.
По завершении вы получите уведомление об успешном создании образа.
Итак, выше были описаны различные способы создания ISO-файлов. После создания ISO-файла вы можете сохранить его в качестве резервной копии, использовать как виртуальный CD/DVD, записать на USB или CD/DVD и поделиться им с кем-нибудь.