Пересборка [ремастер] Current Release 2012-07-15

Призказка:
Вообщем, волнения по причине нового образа арчлинукса сподвигли автора на этот эксперимент.
Данная статья (скорее howto) не претендует на полноту изысканий, поскольку автор в момент эксперимента пытался додумать сам логику инсталлятора, основываясь на логике и именах файлов. (Вскрывать и изучать initrd ну крайне не хотелось) Весь материал носит характер примера.
Сказо о том, как я ночью делал “ремастер” релиза.
Подготовка:
Данный материал базируется на текущем релизе арчлинукса. А именно на 2012.07.15-netinstall-dual.
Этот образ доступен по адресу https://www.archlinux.org/download
Скачав образ , перенесите его в каталог ~/tmp. (если каталога нет - создайте его)

Приступим, потихоньку.

Монтируем образ.
$ sudo mount -o loop ~/tmp/archlinux-2012.07.15-netinstall-dual.iso /mnt/temp
Создаем каталог для проекта.
$ mkdir -p ~/remasters/arch
Копируем базовый образ в проект.
$ cp -R /mnt/temp/* ~/remasters/arch/
Отмонтируем образ, т.к. он нам больше не нужен.
$ sudo umount /mnt/temp
Создадим директорию для создания нового образа файловой системы. (автор взял корневую)
$ mkdir ~/remasters/newsfs
Для сокращения команд оболочки перейдем в новосозданную директорию.
$ cd ~/remasters/newsfs
Распакуем стандартный образ корневой фс. (для этого нужен пакет squashfs-tools)
Примечание: Автор взял за пример архитектуру i686, в основном из-за удобства, т.к. система, на которой идет работа, имеет такуюже.
Др. образы редактируются также.
$ unsquashfs ~/remasters/arch/arch/i686/root-image.fs.sfs
Смонтируем в наше дерево фс для последующего изменения.
$ sudo mount -o loop squashfs-root/root-image.fs /mnt/temp
Проверим, все ли впорядке. (в выхлопе команды должны быть стандартные для арча директории)
$ ls /mnt/temp/
Скопируем нужные нам документы из базовой системы. У автора не нашлось подходящего howto для установки арча, для примера был взят документ ifconfig-route.txt.
Все остальные нужные файлы также просто переносятся в проектную фс. Не мудрствуя лукаво и не изобретая велик, автор положил документ в диру /root.
Примечание: Можно класть куда угодно, лишь бы Вы потом вспомнили , куда запихали. Единственно, куда автор не советует класть личные файлы - это в древа /usr/share и /usr/lib , поскольку есть предположения, что они служат точками монтирования для др. сквош-образов.
$ sudo cp /usr/share/doc/howto/ifconfig-route.txt /mnt/temp/root/
Создадим директорию для личных пакетов.
$ sudo mkdir /mnt/temp/usr/local/share/localepkg
Примечание: Вот тут начинается самое интересное. Вы можете делать с образом что угодно, Вы ограничены лишь своей фантазией и вместимостью носителя (cd/dvd). Если хотите превратить сетевой образ в стационарный с набором избранных пакетов, ради бога. Можете поправить конфиг пакмена на директорию внутри установочного диска и установить пакменом все, что есть в ней, в инсталлируемую систему. Можно и не заморачиваться и поставить локальные пакеты вручную. За подробностями обращайтесь к документации по pacman и/или man pacman. СтОит отметить, что если планируете запихать много, то можете не уместиться в текущий файл контейнер (если не склероз, у меня показало размер 630M и где-то на половину заполнено содержимым).
Для того , чтобы поправить ситуацию, можно пройти процедуру:
————————-
Утилитой dd, создаем файл нужного размера (800 мегабайт) с тем же именем (root-image.fs):
$ dd if=/dev/zero of=/tmp/root-image.fs bs=1M count=800
Создаем в контейнере ФС с помощью mkfs.ext4:
Примечание: можно и ext2
$ mkfs.ext4 /tmp/root-image.fs
Монтируем в систему старый и новый контейнеры:
Примечание: Если говорить о строгой последовательности команд в этом хауту, то оригинальный контейнер уже примонтирован в /mnt/temp и первая команда сл. листинга - лишняя.
$ sudo mount -o loop ~/remasters/newsfs/squashfs-root/root-image.fs /mnt/temp
$ sudo mount -o loop /tmp/root-image.fs /mnt/temp2
Копируем в новый контейнер все из старого:
$ cp -a /mnt/temp/* /mnt/temp2/
Отмонтируем оба контейнера:
$ sudo umount /mnt/{temp,temp2}
Заменим старый контейнер новым (копия оригинала у нас будет в виде сквош-образа: ~/tmp/root.img.orig , см. далее):
$ mv /tmp/root-image.fs ~/remasters/newsfs/squashfs-root/
Монтируем новый контейнер в /mnt/temp, чтобы следовать по этому howto:
$ sudo mount -o loop ~/remasters/newsfs/squashfs-root/root-image.fs /mnt/temp
————–
Вернемся к тому, где остановились.
Примера ради, автор копирует пакет wicd и все его зависимости. (Надо отметить, что часть из них есть уже в образе, но автор не стал тратить время на отсев)
$ sudo pacman --cachedir=/mnt/temp/usr/local/share/localepkg/ -Sw python2  dbus-python  dhcpcd  wpa_supplicant  wireless_tools inetutils  net-tools  ethtool  shared-mime-info python2-urwid  pygobject  dbus-glib wicd
Ну вот и все. Закончив вносить изменения, отмонтируем фс.
$ sudo umount /mnt/temp
Перенесем оригинальный сквош-образ в любое место на всякий случай.
$ mv ~/remasters/arch/arch/i686/root-image.fs.sfs ~/tmp/root.img.orig
Собираем наш измененный вариант.
$ mksquashfs squashfs-root root-image.fs.sfs
Копируем новый образ в проект.
$ cp ~/remasters/newsfs/root-image.fs.sfs ~/remasters/arch/arch/i686/
Проверяем его наличие.
$ ls ~/remasters/arch/arch/i686/
Переходим в директорию arch, для удобства и сокращения длины команд.
$ cd ~/remasters/arch/arch/
Переносим старую сигнатуру md5 куда-нито, на всякий случай, опять же перенося ее, а не удаляя.
$ mv checksum.i686.md5 ~/tmp/
Генерируем новую сигнатуру.
$ md5sum aitab i686/root-image.fs.sfs i686/lib-modules.fs.sfs any/usr-share.fs.sfs > checksum.i686.md5
Для обхода возможных конфликтов и для удобства переходим в корневую директорию проекта.
$ cd ~/remasters
Ну вот, самое легкое прошли. Теперь самое трудное (крутое). Да, верно! Нужно забомбить длинную genisoimage. xD
Примечание: Этот инструмент часть пакета cdrkit.
$ genisoimage -l -r -J -V "ARCH_201207" -b isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table -c isolinux/boot.cat -o ~/arch-custom.iso arch
Проверяем наличие только что сделанного образа.
$ ls -la ~/arch-custom.iso
Все, далее обычным путем - на диск, ну или как-то иначе.
——————————
Далее написано относительно консоли, уже загруженного нашего образа арча. Т.е. автор проверил свое поделие в virtualbox. Образ i686 успешно загрузился.
Сл. контент не относится к теме материала и им можно пренебречь.
—————————-
Далее пишу по памяти, осторожно, могуть быть опечатки. Для проверки я лишь “включил” в арче русский язык и проверил свои личные файлы на предмет их наличия. (Заодно и глянув на новый релиз =] )
Русифицируемся. Напишу тут, может поможет немного новичкам, которые где-то не доглядели.
Итак, научимся сегодня входить и выходить из тьмы.
Увидев содержимое файла, стрелками (для начала) опускаемся до строки вида #ru_RU.UTF-8.
Стрелками ставим курсор на первый знак в строке - #.
Жмем клавишу Янь - она же клавиша ‘x’.
После содеянного , первый символ должен удалиться.
Чтобы выйти из вима и сохранить файл проделайте сл. комбинацию - Esc,:wq,Enter (где запятыми я просто отделил последовательности, запятые вводить не нужно)
Чтобы выйти из вима , не сохраняя результаты вашего деяния - Esc,:q!,Enter
# vi /etc/locale-gen
Раскоментируем там “ru_RU.UTF-8”, сохраняем.
Для предыдущей операции подойдет любой редактор, какой сможете найти. Автор адепт vim, поэтому штатного vi хватает, чтобы не искать альтернативы. Пользуйтесь любым, это просто пример.
Далее собственно генерируем новое.
# locale-gen
Проверяем, сгенерировалась ли наша локаль. (Она должна появиться в списке)
# locale -a
Переходим.
# LANG="ru_RU.UTF-8"
# LC_ALL="ru_RU.UTF-8"
Проверяем, встала ли локаль ru_RU.UTF-8 .
# locale
Устанавливаем нужный шрифт.
# setfont cyr-sun16
Поидее русский должен работать. Проверим, открыв наш файл, заодно и убедимся что он присутвует.
# less /root/ifconfig-route.txt
Ну у меня все видно, можно колдовать дальше.
Проверим наличие наших пакетов.
# ls /usr/local/share/localepkg
Все на месте, далее уже согласно общим и Вашим личным предписаниям.

Заключение: Надеюсь хоть кому-то это пригодится. Удачи.

Риквизиты:
Автор: sleepycat < [email protected] >
Соавторы и рецензоры: BeerMan < [email protected] >
Дата выкладки: 30.07.2012
Последнее редактирование: 31.07.2012
Лозунг у них был такой: "Познание бесконечности требует бесконечного времени". С этим я не спорил, но они делали из этого неожиданный вывод: "А потому работай не работай — все едино". И в интересах неувеличения энтропии Вселенной они не работали. (с)
Спасибо. Попробую.
Вот спасибо за инструкцию!
Если честно - первая, найденная мной, вменяемая инструкция по сборке образа на Линухе. :-) Да еще без всяких GUI'шек.
Правда, такого “высшего пилотажа”, как пересборка сквош-образа, мне не требуется, но для, как грится, повышения квалификации - пригодится!

В общем, направление взял, буду пробовать!

==================

Есть! Все получилось!
ОГРОМНОЕ спасибо! Отлично все загрузилось с iso'шки, мои файлы доступны.
Еще проверю на “железе”, но, думаю, тут уж ничего возникнуть не должно.

P.S. Правда второй загрузчик, таки, пропал (о котором я подозреваю, что он для EFI), ну, думаю он мне не пригодится. :-)

Чтобы было понятней, о чем я говорю: вот как отображает информацию о boot-образах “WinImage”:
BeerMan
Вот спасибо за инструкцию!
Если честно - первая, найденная мной, вменяемая инструкция по сборке образа на Линухе. :-) Да еще без всяких GUI'шек.
Правда, такого “высшего пилотажа”, как пересборка сквош-образа, мне не требуется, но для, как грится, повышения квалификации - пригодится!

Еще раз спасибо, направление взял, буду пробовать!
я бы хотел сделать получше, попроще, но единственно где я мог предположить проверку, а значит и ошибки, котрольной суммы, это образа сквош. От этого и отплясал.
На самом деле никакой это не высший пилотаж, команды простые… Чтобы сделать попроще - нужно точно знать как происходит процесс. А для этого нужно время. Я особо не читал доки, да и где их искать, тут только спросить у того кто делал (ну или медитировать над инитом). Мне просто повезло, что я методом тыка смог “подставить внутрь” свое. Ну а как получилось, тем и поделился, все это на скорую руку. Например , если добавить пару др. пакетов, да взять какойнито скрипт автокоманд у ProFfeSsoRr'а, который бы поднимал систему сам , пускай всего по 1 шаблону, вот был бы пилотаж.
Лозунг у них был такой: "Познание бесконечности требует бесконечного времени". С этим я не спорил, но они делали из этого неожиданный вывод: "А потому работай не работай — все едино". И в интересах неувеличения энтропии Вселенной они не работали. (с)
sleepycat
# vi /etc/locale-gen
Дальше новичка ждет увлекательнейшее путешествие в мир поисковиков с вопросом древним как мир: “как выйти из vi?”. )

П.С. Пожалуй тему пока прикреплю, надеюсь автор ее не забросит.
sleepycat
На самом деле никакой это не высший пилотаж, команды простые…
Не спорю. Когда знаешь куда смотреть. :-)
sleepycat
Например , если добавить пару др. пакетов, да взять какойнито скрипт автокоманд у ProFfeSsoRr'а, который бы поднимал систему сам , пускай всего по 1 шаблону, вот был бы пилотаж.
Да ну. Это уже перебор, наверное. Т.е. - вещь нужная, но меня и консоль устраивает.
А если уж не заморачиваться, можно, “тупо”, за tar-ить установленную систему и закинуть на iso-образ.
Делал неоднократно - работает на-ура. И переносится с компа на комп, с совершенно разным “железом” - без проблем. Максимум - initrd перегенерить нужно и загрузчик установить.
sleepycat
я бы хотел сделать получше, попроще
Нормально, все предельно понятно. Просто, как говорил кто-то из пиратов в “Острове сокровищ”: “я просто взял не тот галс”. :-)
Главное, это именно то, что мне и было нужно. Думаю и другим пригодится. Мало ли, в какой-нить образ что-то свое добавить захочется. Думаю, довольно распространенная ситуация.
по поводу “двух” загрузчиков. Я чтото такое подозревал, видя диру EFI, но поскольку она мне “до фонаря” и про вторую загрузку я узнал только когда Вы написали, становится очевидным, что я ее и не хотел и не мог видеть. Но однако, стоит это посмотреть. Вообще то, что показано на скриншоте, похоже на выкрутас программиста, который хочет себя поставить(возможно там два загрузчика чисто изза того, что один из этой пары чегото не умеет, и вместо того чтобы намутить один, они извернулись и положили два, вообщем очень лень разбираться с вещами , которые мне кажутся не очень одекватными…), если руки дойдут, я постараюсь вернуть положенную систему, просто видно я не тот загрузчик воткнул, не первостепенный, вообщем не ясно мне пока, что я прицепил. С первого взгляда все хорошо)))), поэтому я ничего не заподозрил.
Лозунг у них был такой: "Познание бесконечности требует бесконечного времени". С этим я не спорил, но они делали из этого неожиданный вывод: "А потому работай не работай — все едино". И в интересах неувеличения энтропии Вселенной они не работали. (с)
sleepycat
по поводу “двух” загрузчиков. …
Да-да-да! У меня всё аналогично сказанному. :-)
Я, конечно, еще проверю на IBM-ком “лезвии” (на bare metal), как оно грузится. Но обычно BIOS'овского загрузчика хватало.
Как я писал ранее (в другой ветке), на предыдущих образах был только BIOS загрузчик. И что образ 2010-05 грузился на “лезвиях”, а 2011-08-19 уже “выделывался”. В общем, ~ через неделю, выйду на работу, освобожу “лезвие”, попробую и отпишусь. Надеюсь, все будет нормально. :-)
sleepycat
я не тот загрузчик воткнул, не первостепенный
Почему не тот? Именно первостепенный, т.к. BIOS, все же, постарше будет. ;-)
Еще подумалось: скорее всего, образ только с BIOS-загрузчиком не пойдет на “фильдиперсовых” современных ноутах (например), где BIOS уже убрали, оставив только EFI. Говорят 7-ка на таких ноутах (от включения питания) грузится до 10 секунд… :-)
тут уже придется просить др. человека дополнить статью. Так как я пока не собираюсь покупать новые ноут или онли-ефи мат. плату. Просто пока ресурсов нет ;) .
Да дело не в том кто мудрее и старше, я так понимаю в нормальном образе как то само грузится, происходит выбор? или какойто выбор(ручной) есть? Может он просто перескакивает на др. загрузчик и берет уже др. меню. Короче, щас бородатые дядьки под вечер придут, и ктонито раскусит этот орех. А я внесу комментарии в топик. Просто до этого случая мои исошки както обходились одним загрузчиком, надо почитать. Да и я предпочел бы увидеть сам, но доберусь только вечером, если не отрублюсь.
PS
Говорят всякое, во вторых хомяк и вправду взлетает быстрее чем ультимейт. Да и никто не говорит , сколько грузится сама EFI. ;) Так что тут надо сесть с секундомером, и тогда узнаем хуизху.
Лозунг у них был такой: "Познание бесконечности требует бесконечного времени". С этим я не спорил, но они делали из этого неожиданный вывод: "А потому работай не работай — все едино". И в интересах неувеличения энтропии Вселенной они не работали. (с)
 
Зарегистрироваться или войдите чтобы оставить сообщение.