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

Круто ! Уважаю, кстати этот самый 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
 
Зарегистрироваться или войдите чтобы оставить сообщение.