Сборка дистрибутивов инструкция для чайников

Круто ! Уважаю, кстати этот самый HP был пмною крякнут, по расширенную 128 память,так что можно было в ramtor больше носом не упираться.
Но опять таки все писалось в стол. А так да zasm + sts было наше все. Да и паяльник был частым гостем на столе, хотя и сейчас периодически
балуюсь итальянским монтажом с макаронами мгтф-а : http://forum.russ2.com/index.php?showtopic=3973&view=findpost&p=41923
Как говорил капитан Немо ( автор компа KAY256 , подозрительно похожего на скорпион, только без сервис монитора Ларченко ) - кухонное творчество.
Хотя мне как то ближе ламеризм , ладно считай познакомились. Вообще , нашего брата в Linux-е довольно много , вот хорошая ностальгическая тема
с форума Альта : https://forum.altlinux.org/index.php?topic=36337.0
Spectrum forever
kostyalamer
ramtor
ramtop.
)

kostyalamer
вот хорошая ностальгическая тема
Есть живые форумы спектрума. Там взрослые дядьки, давно подключившие к спекки винчестеры и TFT-мониторы, до сих пор изголяются в Ассемблере. Я стараюсь избегать такое общество. Как-то погонял эмулятор - не могу. Слишком много воспоминаний...
И вообще, хобби - это одно, а когда за ним ничего больше не замечаешь - другое. У меня отец, имея домашнюю лабораторию, всю свою сознательную жизнь, вдыхая ПОС, не выпускал из рука паяльник, чем здорово укоротил себе жизнь. Так что я хоть и знаю с пеленок как работает транзистор (а с юности - ИМС) сейчас стараюсь немного разнообразить свою жизнь. Она одна... )

Но мы как бы отвлеклись от темы. Моя вина.
Aivar
Но мы как бы отвлеклись от темы. Моя вина.
Ничего страшного, я сделал ссылки с одной страницы инструкции для чайников на другую страницу и обратно, так что
между этими страницами совершенно спокойно можно обсуждать разные интересные вещи на сам документ никак не влияет.
Кстати , по старой спектрумовской памяти, пытался народ на альте подсадить на примитивный игрострой (была у меня хорошая книжка, авторов не помню, как написать игру на ассемблере) :
https://www.altlinux.org/Simply_game https://www.altlinux.org/Simply_game/2 . и дело как водится пошло http://forum.russ2.com/index.php?showtopic=4167
но как и следовало ожидать, со временем завяло.
О, вспомнил про свои " ботинки Билла ", надо их в Aur пушнуть, крышу сносили не хуже старого спектрумовского manic miner :-)
Spectrum forever
Предыдущая страница
Дорогие начинающие сборщики , вот и обещанное продолжение. Сразу извинюсь за растянутость этих публикаций , окостыливание IceArch - а требует довольно много времени ( и к тому же гораздо интереснее написания каких-либо инструкций ), поэтому пишу довольно редко.
Будем надеяться , что собрать простейший Live у вас получилось без проблем , теперь немного поговорим о графике и автологине. Изначально я сделал все это в том же IceArch-е при помощи slim - а, но товарищи на этом форуме сказали что это избыточно и они правы. Наконец , дошли руки все это сделать по человечески, без каких либо dm-ов. Для начала читаем очень полезную инструкцию написанную уважаемым scorpid: https://archlinux.org.ru/forum/topic/16498/?page=1
Прочитали, теперь адаптируем ее к нашему случаю , будем считать что у вас как и у меня дефолтный пользователь root:
1) Создадим в вашей сборочнице файл : /airootfs/root/.xinitrc
вот файлик от того же IceArch :

#!/bin/sh
# start some nice programs
if [ -d /etc/X11/xinit/xinitrc.d ] ; then
 for f in /etc/X11/xinit/xinitrc.d/?*.sh ; do
  [ -x "$f" ] && . "$f"
 done
 unset f
fi

exec icewm-session
Естественно , вместо icewm-session вы впишите команду запускающую ваш рабочий стол.

Делаем юнит для автологина , создаем файл /airootfs/etc/systemd/system/getty@tty1.service.d/override.conf следующего содержания:

[Service]
ExecStart=
ExecStart=-/usr/bin/agetty --autologin root --noclear %I $TERM

Понятно, что если у вас дефолтом другой пользователь, вы впишите его сюда вместо root-а.
Теперь вишенка на торте, надо создать файл /airootfs/root/.bash_profile_new и подсунуть его при сборке вместо /airootfs/root/.bash_profile . Втупую делать /airootfs/root/.bash_profile не нужно, сборочница затрет его дефолтным. Ладно, ближе к делу — создаем /airootfs/root/.bash_profile_new
такого содержания :


#
# ~/.bash_profile
#
[[ -f ~/.bashrc ]] && . ~/.bashrc
[[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && exec startx


Кстати, когда я делал консольный дистрибутив на альте : https://forum.altlinux.org/index.php?topic=40909.0 я в этом файле сделал отличную менюшку, которая запускала много полезных программ, так что запускать отсюда можно не только вашу сессию а все что угодно . Но про консольные сборки мы как нибудь в другой раз поговорим, просто запомните для себя такую возможность может пригодиться. Можно в такую менюшку и запуск разных de прописать , не обязательно для этого перелогиниваться в другую консоль :-)
Ладно, я как обычно отвлекся, откроем наш /airootfs/root/customize_airootfs.sh и в его конец допишем следующие строки


groupadd  nopasswdlogin
gpasswd -a root nopasswdlogin
cp -f /root/.bash_profile_new /root/.bash_profile
systemctl set-default graphical.target
Еще раз скажу, что никакой Америки я тут не открыл практически все почерпнуто отсюда :
https://archlinux.org.ru/forum/topic/16498/?page=1
Вот собственно и все про графику и автологин. Спасибо товарищам, которые пишут здесь блоги, я их читаю и вам советую. Оставайтесь с нами и учитесь делать свои сборки. В следующей инструкции я поделюсь с вами интересными костылями ( на сей раз своими ), но сначала доделаю очередную альфу IceArch.
Продолжение ->
Spectrum forever
Aivar
Как-то погонял эмулятор - не могу. Слишком много воспоминаний…
Гы... Сейчас я, конечно, для спктрума не программирую, но в эмуляторе Green Beret гоняю регулярно - прекрасный отдых для головного мозга. (Для тех, кто не в курсе. Это стрелялка 1D с элементами 2D и таким сюжетом: бежать слева направо и всех мочить. Участие гловного мозга только мешает.). Использую aur/fuse-emulator - вполне добротно.
Это я тоже поностальгировал, а теперь внимательно читаю про сброку дистрибутива...
Предыдущая страница
Сегодня поговорим о „живых флешках“. Надеюсь что к этому моменту вы уже попробовали что-нибудь собрать , двигаемся дальше. Для начала посмотрим что получилось в результате наших сборок — а получился классический LiveCD , понятно что образ „ гибридный „ ( благодаря xorriso ) и прекрасно работает с флешки, но как говорил персонаж одного хорошего мультфильма „ Маловато будет !“ . Работать то он работает, но занимает весь объем накопителя и соответственно не позволяет сохранять информацию , при выключении питания она теряется безвозвратно ( конечно у нас там есть раздел EFI доступный в режиме r/w — но я не буду учить вас плохому ). Проще говоря LiveCD без возможности сохранения , просто работающий с флешки так же как с привода CD/DVD.
Надо сказать что в том же Альте инструменты для создания живых флешек встроены в виде целей в основной сборочный инструмент , здесь же сборочный инструмент победнее . Зато это позволяет писать очень интересные костыли , которыми я с вами и поделюсь в этой части инструкции. Я бы сказал что на Альте флешки более живые ( как я понимаю это либо фругал, либо что-либо в таком же стиле ) у нас флешка будет полуживая , просто мы примонтируем к освободившемуся на ней месту домашний каталог root-а в режиме чтение / запись / исполнение.
Т.е. все что вы будете делать под root-ом в этом каталоге не пропадет при выключении питания , а останется на флешке и будет работать при следующих включениях вашей системы.
Например , закладки и расширения вашего браузера, скачанные книги, музыка , фильмы останутся с вами , надеюсь что преимущества перед r/o понятны.
Будем считать на этом введение законченным, переходим к практике. Да , сразу скажу , что bash-ист из меня тот еще, поэтому попрошу не удивляться не оптимальному и не красивому коду .
Для начала займемся первой задачей - сжатием образа и созданием нового раздела на флешке под root-овский хомяк. Кстати, идея посетила меня при чтении этого блога :
https://archlinux.org.ru/forum/topic/13105/ за что авторам большое спасибо . Еще раз товарищи сборщики напомню вам о блогах — читайте найдете много интересного !

1) Компрессор :


#!/bin/bash
clear ; echo -e "\e[0m"
echo " Эта программа использует свободное место на вашей флешке для создания "
echo " домашнего каталога пользователя root в режиме чтение / запись  ! "
sleep 1
if [ -d /media/IceDisk/root ]
then
  echo -e "\n\n"
  echo -e "\e[1m Домашний каталог на этой флешке уже создан ! "
  echo -e "\e[0m"
  sleep 4
  exit
fi
echo -e "\e[1m Подождите идет сканирование подкдюченных устройств ! \e[0m "
fdisk -l
echo -e "\n\n"
disk=`mount | grep /run/archiso/bootmnt`
disk=${disk:0:8}
echo -e "\e[1mОбнаружена ваша флешка это $disk ! "

echo  -e "\e[1mПроизвести сжатие разделов на устройстве $disk Y/N ?"
echo -e "\e[0m"
while true
do
   read -s -n 1 key
   if [ $key = n ] || [ $key = N ]
   then
     exit
   elif [ $key = y ] || [ $key = Y ]
   then
     break
   fi
done

fdisk $disk << EOF
n
p
3
# между 3 и w должны быть 3 пустых строки ( форум их вырезает )
w
EOF

mke2fs -t ext4 -L IceDisk $disk"3" << EOF
y

EOF
echo -e "\e[1m"
echo -n "Создан раздел : " ; e2label $disk"3"
echo " Для вступления этих изменений в силу перезагрузите систему !"
echo -e "\e[0m"
sleep 4


Немножко пояснений :
первый блок if fi это „защита от дурака“ , на случай если пользователь при последующих запусках системы запустит компрессор.
fdisk - l нужен для того чтобы сравнить то что выбрала прога в качестве флешки с тем что выбрали вы и если ваши мнения совпали просто согласиться с этим. Дальше тоже ничего сложного , просто управляем fdisk — ом через EOF для создания нового раздела .
Да , если вы никогда с ним не работали запомните, что пустые строки эмулируют нажатия на Enter которые программа сделает за вас . Все остальное с fdisk -ом думаю понятно.
Теперь при помощи mke2fs -t ext4 L IceDisk $disk"3" создадим файловую систему на этом разделе. Обратите внимание на метку диска. В моем случае это IceDisk , в вашем случае что -нибудь другое ( эта же метка будет использоваться юнитом, который напишем чуть позже ),
только не называйте этот раздел так же как свой дистрибутив , иначе вместо загрузки получите ознакомительный тур по busybox -у ( штука тоже интересная , баловался я на Альте минимальными сборочками с ним , но сейчас речь не об этом ). Ладно , будем надеяться вам все здесь понятно ( если не понятно — спрашивайте ) , двигаемся дальше.
2) Юнит :
Для начала создадим файл /airootfs/etc/systemd/system/rwusb.service следующего содержания :

[Unit]
Description=Loading for usbdrive
After=network.target

[Service]
Type=oneshot
ExecStart=/etc/systemd/scripts/rwusb

[Install]
WantedBy=multi-user.target

Теперь делаем сам скрипт : /airootfs/etc/systemd/scripts/rwusb


#!/bin/bash
clear
if ! [ -d /media/IceDisk ]; then
   echo " Standart loading !"

else
   echo " Loading for USB !"
   cp -r -n -a /root /media/IceDisk
   mount -o rw,uid=0,gid=0 --bind /media/IceDisk/root /root
   cd /media/IceDisk/root
   mount -o remount,exec /root
   export PATH=$PATH:/media/IceDisk/root

fi
sleep 2

Да , не забудьте что все это делается из под root-а в вашей сборочнице и скрипт должен быть исполняемым. Объяснять тут особо нечего , учтите только что IceDisk везде должен быть заменен на ту метку раздела , которую вы задали в компрессоре.
Осталось совсем мелочь в ваш /airootfs/root/customize_airootfs.sh добавить строчки :


systemctl enable rwusb.service
systemctl start rwusb.service

После чего собрать всю эту радость. У меня компрессор повешен на кнопку на рабочем столе (IceWM) , можно запихать его в автозагрузку или еще куда-нибудь.
Да , чуть не забыл, все это работает у меня при следующем содержании mkinitcpio.conf в моей сборочнице :

MODULES="ext4 isofs"
HOOKS=(base udev memdisk archiso block filesystems keyboard)
COMPRESSION="xz"
COMPRESSION_OPTIONS="-9"

Работу при других конфигурациях этого файла не проверял, ничего сказать не могу — либо делайте также , либо экспериментируйте. Как говорит товарищ Столмен : «Счастливого хака !»
Продолжение
Spectrum forever
kostyalamer
After=network.target
а почему именно после network.target? ведь скрипту в принципе не нужна поднятая сеть...
по идее лучше после local-fs.target
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
Наверное можно и так, главное скрипт должен быть запущен после того , как автоматически примонтировались носители . Когда это происходит я не вдавался в подробности , хотя судя по выпадению в busybox при неправильной метке достаточно рано .
Поэтому чем ближе к залогиванию, тем безопаснее.
Spectrum forever
Предыдущая страница
Вот и окончание темы о живых флешках и заодно этого блога. Я начинал эту тему как инструкцию для чайников , но если вы дочитали до этого места ( не просто дочитали , но и попробовали собрать свои archiso-хи ) , то вы уже не совсем чайник с чем и поздравляю.
Долго думал стоит ли выкладывать этот материал и пришел к компромиссному решению — выложить свой старый вариант инсталлера как более простой и понятный для новичка .
Новый вариант обвешан окошками zenity и разными плюшками , но гораздо более замудреный
То чем мы с вами занимались прошлый раз можно назвать «живой флешкой» достаточно условно, изменения в хомяке root-а сохраняются , но хочется получить на флешке полноценную
систему, сейчас мы с вами этим и займемся.
Для начала немножко о логике работы , необходимо скопировать систему из корня в новый раздел ( надеюсь вы внимательно читали мой предыдущий пост ) и организовать загрузку всей этой радости. С первой частью этой задачи справляется мой скрипт installer ( бывший компрессор ) , о второй поговорим немного позже.
Вот этот код надо добавить к концу листинга compressor - а из моего прошлого поста чтобы получился мой старый инсталлер :


echo -n "Создан раздел : " ; e2label $disk"3"
dsk=${disk:5}

max_disk=$(cat /sys/block/$dsk/size | sort -n -r| head -1)
if [ $max_disk  -ge 14000000 ] ; then
echo " Объем флешки > 7 Gb"
echo " Начинаем программу установки !"
echo -e "\e[0m"
sleep 3
mount -o rw $disk"3" /mnt
echo -e "\e[1m"
echo "      Внимание производится копирование !"
echo " Эта операция занимает много времени, подождите !"
cp -ax / /mnt
cp -vaT /run/archiso/bootmnt/arch/boot/$(uname -m)/vmlinuz /mnt/boot/vmlinuz-linux
genfstab -U /mnt >> /mnt/etc/fstab
line="$(sed -ne 2p /mnt/etc/fstab)"
line=${line:0:58}
echo "$line errors=remount-ro,noatime,commit=120,nodiratime	0 1" > /mnt/etc/fstab
echo "tmpfs     /tmp		tmpfs	rw		0 0 " >> /mnt/etc/fstab
echo "tmpfs     /run		tmpfs	rw		0 0 " >> /mnt/etc/fstab
echo "tmpfs     /var/lock	tmpfs	rw		0 0 " >> /mnt/etc/fstab
echo "tmpfs     /var/log	tmpfs	rw,size=10m	0 0 " >> /mnt/etc/fstab
#arch-chroot /mnt /bin/bash
echo "Работаем в chroot !"
#arch-chroot /mnt sed -i 's/Storage=volatile/#Storage=auto/' /etc/systemd/journald.conf
sed -i 's/Storage=volatile/#Storage=auto/' /mnt/etc/systemd/journald.conf
rm  /mnt/etc/udev/rules.d/81-dhcpcd.rules
arch-chroot /mnt systemctl disable pacman-init.service choose-mirror.service
arch-chroot /mnt rm -r /etc/systemd/system/{choose-mirror.service,pacman-init.service,etc-pacman.d-gnupg.mount}
rm  /mnt/etc/systemd/scripts/choose-mirror
rm  /mnt/etc/mkinitcpio-archiso.conf
rm -r /mnt/etc/initcpio
arch-chroot /mnt mkinitcpio -p linux
syslinux -a $disk"2"
cp -f /mnt/boot/initramfs-linux.img /media/ARCHISO_EFI/initramfs-linux.img
cp -f /mnt/boot/initramfs-linux-fallback.img /media/ARCHISO_EFI/initramfs-linux-fallback.img
cp -f /mnt/boot/vmlinuz-linux /media/ARCHISO_EFI/vmlinuz-linux
rm /media/ARCHISO_EFI/rwusbefi
echo "#!/bin/bash" > /media/ARCHISO_EFI/rwusbefi
echo "clear" >> /media/ARCHISO_EFI/rwusbefi
echo " Установка завершена !"
echo " В меню загрузки выбирайте третий с верху пункт меню "
rm /mnt/root/.idesktop/installer.lnk
else
	echo " Объем флешки < 7 Gb"
	echo " Это не достаточно для полноценной установки"
	echo " Но, теперь все изменения будут сохраняться в вашем домашнем каталоге"
	echo " Он находится в отдельном разделе флешки  в режиме чтение / запись "
	echo " В меню загрузки выбирайте верхний пункт меню "
fi
echo " Для вступления изменений в силу перезагрузите систему !"
echo -e "\e[0m"
sleep 5
Spectrum forever
Немного поясню происходяшее :
Сначала проверяем объем флешки, если больше или равно 7 Гб — производим установку , если меньше — ничего не делаем — получаем хомяк в режиме r/w.

С копированием , думаю все понятно , ниже идет костыль который переделывает свеже сгенерированный fstab для работы с флешки.

То что происходит ниже должно быть вам понятно, если вы внимательно читали wiki.
Правда обратите внимание, что мы поставили Syslinux на второй раздел ( тот самый который физически находится внутри iso-хи и используется мною для разных костылей ), но об этом немного позже.

Также на этом разделе мы меняем содержание моего скрипта rwusbefi ( смотри предыдущее занятие ) - заменяем его содержание ( которое нужно было для хомяка r/w ), ничего не делающей заглушкой.
Да , напомню что инсталлер должен лежать в сборочнице в хомяке root-а :
сборочница /airootfs/root

Теперь поговорим о Syslinux- ах у нас их будет 2 :
1-ый находится на первом разделе флешки, в нем необходимо создать пункт вызывающий Syslinux второго раздела . Поскольку первый раздел это iso-ха , то необходимо сделать это до сборки аrchiso , вот так у меня все это выглядит: сборочница /syslinux/archiso_tail.cfg

LABEL copy_to_ram
TEXT HELP
Minimum 2Gb RAM for this option !
ENDTEXT
MENU LABEL Boot IceArch Copy to RAM ( minimum 2GB RAM )
LINUX boot/x86_64/vmlinuz
INITRD boot/intel_ucode.img,boot/amd_ucode.img,boot/x86_64/archiso.img
APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% copytoram=y cow_persistet=P

LABEL IceArch_worm
TEXT HELP
Boot IceArch on Disk ( After installyng !!! ).
ENDTEXT
MENU LABEL IceArch_work ( After installyng !!! ).
COM32 boot/syslinux/chain.c32
APPEND hd0 2

LABEL existing
TEXT HELP
Boot another systems (Press TAB to select partition number to boot).
ENDTEXT
MENU LABEL Boot existing OS (Press TAB to select partition number to boot).
COM32 boot/syslinux/chain.c32
APPEND hd0 0

# http://www.memtest.org/
LABEL memtest
MENU LABEL Run Memtest86+ (RAM test)
LINUX boot/memtest
LABEL reboot
MENU LABEL Reboot
COM32 boot/syslinux/reboot.c32

LABEL poweroff
MENU LABEL Power Off
COM32 boot/syslinux/poweroff.c32

Обратите внимание на раздел меню : LABEL IceArch_worm - именно он чайнлоадером передает управление Syslinux-у 2-го раздела.
С первым Syslinux-ом вроде разобрались переходим ко второму , в корне нашей сборочницы создадим файл сборочница /syslinux.cfg следующего содержания:

# Config file for Syslinux -
# /boot/syslinux/syslinux.cfg
#
# Comboot modules:
#   * menu.c32 - provides a text menu
#   * vesamenu.c32 - provides a graphical menu
#   * chain.c32 - chainload MBRs, partition boot sectors, Windows bootloaders
#   * hdt.c32 - hardware detection tool
#   * reboot.c32 - reboots the system
#
# To Use: Copy the respective files from /usr/lib/syslinux to /boot/syslinux.
# If /usr and /boot are on the same file system, symlink the files instead
# of copying them.
#
# If you do not use a menu, a 'boot:' prompt will be shown and the system
# will boot automatically after 5 seconds.
#
# Please review the wiki: https://wiki.archlinux.org/index.php/Syslinux
# The wiki provides further configuration examples

DEFAULT arch
PROMPT 0        # Set to 1 if you always want to display the boot: prompt
TIMEOUT 50
# You can create syslinux keymaps with the keytab-lilo tool
#KBDMAP de.ktl

# Menu Configuration
# Either menu.c32 or vesamenu32.c32 must be copied to /boot/syslinux
UI menu.c32
#UI vesamenu.c32

# Refer to http://syslinux.zytor.com/wiki/index.php/Doc/menu
MENU TITLE Arch Linux
#MENU BACKGROUND splash.png
MENU COLOR border       30;44   #40ffffff #a0000000 std
MENU COLOR title        1;36;44 #9033ccff #a0000000 std
MENU COLOR sel          7;37;40 #e0ffffff #20ffffff all
MENU COLOR unsel        37;44   #50ffffff #a0000000 std
MENU COLOR help         37;40   #c0ffffff #a0000000 std
MENU COLOR timeout_msg  37;40   #80ffffff #00000000 std
MENU COLOR timeout      1;37;40 #c0ffffff #00000000 std
MENU COLOR msg07        37;40   #90ffffff #a0000000 std
MENU COLOR tabmsg       31;40   #30ffffff #00000000 std

# boot sections follow
#
# TIP: If you want a 1024x768 framebuffer, add "vga=773" to your kernel line.
#
#-*

LABEL arch
    MENU LABEL IceArch
    LINUX ../vmlinuz-linux
    APPEND root=/dev/sdb3 rw
    INITRD ../initramfs-linux.img

LABEL archfallback
    MENU LABEL Return_to_Menu
    COM32 chain.c32
    APPEND hd0 0

LABEL reboot
        MENU LABEL Reboot
        COM32 reboot.c32

Это достаточно примитивное текстовое меню без всяких наворотов, главная задача которого , загружать нашу установленную на 3-ем разделе флешки систему.
Естественно надо подсунуть его и недостающие для его работы модули нашей сборочнице, сейчас немного обкостылим наш чудесный сборочный скрипт сборочница / build.sh :

#----------------------
    cp rwusbefi ${work_dir}/efiboot/
#----------------------
    cp ${work_dir}/x86_64/airootfs/boot/archiso.img ${work_dir}/efiboot/archiso.img
    cp ${work_dir}/x86_64/airootfs/boot/vmlinuz-linux ${work_dir}/efiboot/vmlinuz-linux
    cp ${work_dir}/x86_64/airootfs/boot/initramfs-linux.img ${work_dir}/efiboot/initramfs-linux.img
    cp ${work_dir}/x86_64/airootfs/boot/initramfs-linux-fallback.img ${work_dir}/efiboot/initramfs-linux-fallback.img
   _uname_r=$(file -b ${work_dir}/x86_64/airootfs/boot/vmlinuz-linux| awk 'f{print;f=0} /version/{f=1}' RS=' ')
    mkdir -p ${work_dir}/efiboot/syslinux
    for _cfg in ${script_path}/syslinux/*.cfg; do
        sed "s|%ARCHISO_LABEL%|${iso_label}|g;
             s|%INSTALL_DIR%|${install_dir}|g" ${_cfg} > ${work_dir}/efiboot/syslinux/${_cfg##*/}
    done
    cp ${script_path}/syslinux/splash.png ${work_dir}/efiboot/syslinux
    cp ${work_dir}/x86_64/airootfs/usr/lib/syslinux/bios/*.c32 ${work_dir}/efiboot/syslinux
    cp ${work_dir}/x86_64/airootfs/usr/lib/syslinux/bios/lpxelinux.0 ${work_dir}/efiboot/syslinux
    cp ${work_dir}/x86_64/airootfs/usr/lib/syslinux/bios/memdisk ${work_dir}/efiboot/syslinux
    mkdir -p ${work_dir}/efiboot/syslinux/hdt
    gzip -c -9 ${work_dir}/x86_64/airootfs/usr/share/hwdata/pci.ids > ${work_dir}/efiboot/syslinux/hdt/pciids.gz
    gzip -c -9 ${work_dir}/x86_64/airootfs/usr/lib/modules/${_uname_r}/modules.alias > ${work_dir}/efiboot/syslinux/hdt/modalias.gz
    cp -f syslinux.cfg ${work_dir}/efiboot/syslinux/
#----------------------

    umount -d ${work_dir}/efiboot
Этот кусок костыльного кода всунут в конец функции make_efiboot() в дополнение к rwusbefi-шному костылю там же теперь лежит второй для syslinux-а все ограничено хэшами с минусами — думаю разберетесь. Этот код не оптимизирован, взят из функции make_syslinux() как есть ( только пути изменены ) , лишнее можно выбросить.
Чуть не забыл , чтобы все это поместилось на EFI- шный раздел необходимо в функции make_efiboot() указать р-р раздела 128 Мб , вместо умолчательных 64 :
 truncate -s 128M ${work_dir}/iso/EFI/archiso/efiboot.img  
Осталось подправить сборочница / mkinitcpio.conf :

MODULES="ext4 isofs"
HOOKS=(base udev memdisk archiso_shutdown archiso archiso_loop_mnt block squashfs filesystems keyboard)
COMPRESSION="xz"
COMPRESSION_OPTIONS="-9"

И можете начинать вашу сборку , надеюсь я более-менее понятно изложил суть своих наработок.
Что-бы не вбивать все это пальцами можно скачать с гуглодиска мою старую сборочницу:
https://drive.google.com/open?id=1DIwpywIWvN7Zo3v7jKzmUocHAdP20l42
( новая ушла довольно далеко вперед но ,там все еще костыльнее и объяснять эти костыли уже не хочется - итак посты получаются с большим количеством букв ) и собрать немного устаревший IceArch v0.41 . Надеюсь что на его базе вы наделаете своих интересных сборок с разными рабочими столами и пойдете осваивать дистрострой дальше, уже самостоятельно.
Дальнейшее развитие ваших сборок предполагает прикручивание к ним инсталлера устанавливающего вашу систему не на флешку а на жесткий диск .
Рекомендую посмотреть на Zen , Calamares , инсталлер от уважаемого nafanja или написать свой .
Будем считать тему дистростроя для чайников раскрытой, остается пожелать всем кто дочитал до этого места творческих успехов в этом направлении.

Как говорит товарищ Столмен : Счастливого хака !
Spectrum forever
 
Зарегистрироваться или войдите чтобы оставить сообщение.