iso-olustur.sh 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  1. #!/bin/bash
  2. mesaj bilgi "$DAGITIM için ISO hazırlanıyor..."
  3. #umount
  4. _umount
  5. #SQUASHFS ISLEMLERI
  6. if [ "$SFS_OLUSTUR" == "var" ]; then
  7. cd $BUILDER_ROOT
  8. # son ayar yuklemeleri
  9. mesaj bilgi "ISO için ön ayarlar yapılıyor.."
  10. cp -f $LFS/sources/milis.git/rootfs/etc/bashrc $LFS/etc/bashrc
  11. cp -f $LFS/sources/milis.git/rootfs/etc/profile $LFS/etc/profile
  12. cp -f $LFS/sources/milis.git/ayarlar/mps.conf $LFS/etc/mps.conf
  13. cp -f $LFS/sources/milis.git/rootfs/etc/rc.d/init.d/* $LFS/etc/rc.d/init.d/
  14. mkdir -p iso_icerik
  15. rm -f iso_icerik/boot/kernel
  16. rm -f iso_icerik/boot/initramfs
  17. rm -rf iso_icerik/LiveOS
  18. cp -rf $LFS/boot/kernel-* iso_icerik/boot/kernel
  19. cp -rf $LFS/boot/initramfs* iso_icerik/boot/initramfs
  20. # grub
  21. echo "DISTRIB_ID=\"$DAGITIM\"" > $LFS/etc/lsb-release
  22. echo "DISTRIB_RELEASE=\"$VERSIYON\"" >> $LFS/etc/lsb-release
  23. echo "DISTRIB_DESCRIPTION=\"$DAGITIM $KODADI $VERSIYON\"" >> $LFS/etc/lsb-release
  24. echo "DISTRIB_CODENAME=\"$KODADI\"" >> $LFS/etc/lsb-release
  25. cp $LFS/etc/lsb-release $LFS/etc/os-release
  26. if [ ! -z ${MASAUSTU} ];then
  27. # kurulum.desktop dağıtım adı
  28. mesaj bilgi "Masaüstü kurulum kısayolu açıklaması düzenleniyor"
  29. [ -f $LFS/root/Masaüstü/kurulum.desktop ] && sed -i "s/Milis Linux/$DAGITIM/g" $LFS/root/Masaüstü/kurulum.desktop
  30. [ -f $LFS/root/Desktop/kurulum.desktop ] && sed -i "s/Milis Linux/$DAGITIM/g" $LFS/root/Desktop/kurulum.desktop
  31. fi
  32. # varsayılan root parolası
  33. mesaj bilgi "root varsayılan parolası değiştiriliyor"
  34. sed -i "49s/milis/$ROOT_PAROLASI/g" $LFS/etc/init.d/sysklogd
  35. # LiveOS ayarları
  36. mesaj bilgi "LiveOS ayarları yapılıyor..."
  37. # varsa temp-root/ ve tmp/ umount edil silelim
  38. if [ -d temp-root ]; then
  39. mountpoint -q temp-root && umount -l temp-root
  40. rm -rf temp-root
  41. fi
  42. [[ -d tmp ]] && rm -rf tmp
  43. #
  44. mkdir -p tmp/LiveOS
  45. fallocate -l 16G tmp/LiveOS/rootfs.img
  46. mke2fs -t ext4 -L $ISO_ETIKET -F tmp/LiveOS/rootfs.img
  47. mkdir -p temp-root
  48. mount -o loop tmp/LiveOS/rootfs.img temp-root
  49. mesaj bilgi "Chroot içerik dosya sistemi imajına kopyalanıyor..."
  50. cp -dpR $LFS/* temp-root/
  51. #rsync -a kur/ temp-root
  52. umount -l temp-root
  53. rm -rf temp-root
  54. mkdir -p iso_icerik/LiveOS
  55. mesaj bilgi "Dosya sistemi imajı sıkıştırılıyor..."
  56. mksquashfs tmp iso_icerik/LiveOS/squashfs.img -comp xz -b 256K -Xbcj x86
  57. chmod 444 iso_icerik/LiveOS/squashfs.img
  58. rm -rf tmp
  59. fi
  60. # isolinux ve syslinux
  61. mesaj bilgi "ISOLinux ve SYSLinux ayarları yapılıyor"
  62. sed -i "s/^label.*/label $DAGITIM $KODADI $VERSIYON/g" iso_icerik/boot/isolinux/isolinux.cfg
  63. sed -i "s/CDLABEL=[A-Z_]*/CDLABEL=$ISO_ETIKET/g" iso_icerik/boot/isolinux/isolinux.cfg
  64. _syslinux_arkaplan=$BUILDER_ROOT/$OZELLESTIRME/$MASAUSTU/updates/usr/share/backgrounds/syslinux.png
  65. if [ -f ${_syslinux_arkaplan} ];then
  66. cp -f ${_syslinux_arkaplan} iso_icerik/boot/isolinux/arkaplan.png
  67. fi
  68. #isolinux olarak syslinux olarak kopyalanması
  69. rm -rf iso_icerik/boot/syslinux
  70. cp -rf iso_icerik/boot/isolinux iso_icerik/boot/syslinux
  71. #ek-güncellemelerin eklenmesi
  72. if [ -d $BUILDER_ROOT/iso_icerik/updates ]; then rm -rf iso_icerik/updates;fi
  73. if [ ! -z ${MASAUSTU} ];then
  74. cp -rf $BUILDER_ROOT/$OZELLESTIRME/$MASAUSTU/updates iso_icerik/
  75. else
  76. cp -rf $BUILDER_ROOT/$OZELLESTIRME/minimal/updates iso_icerik/
  77. fi
  78. mv iso_icerik/updates/home/gecici_kullanici iso_icerik/updates/home/$CANLI_KULLANICI
  79. echo "$CANLI_KULLANICI" > iso_icerik/updates/etc/canli_kullanici
  80. if [ ! -z ${MASAUSTU} ];then
  81. [ -d $BUILDER_ROOT/iso_icerik/updates/home/$CANLI_KULLANICI/Masaüstü ] && chmod 755 $BUILDER_ROOT/iso_icerik/updates/home/$CANLI_KULLANICI/Masaüstü/*.desktop
  82. [ -d $BUILDER_ROOT/iso_icerik/updates/home/$CANLI_KULLANICI/Desktop ] && chmod 755 $BUILDER_ROOT/iso_icerik/updates/home/$CANLI_KULLANICI/Desktop/*.desktop
  83. fi
  84. # kullanici için gerekli home izinleri ve yapılacak betiğin ayarlanması -slimde autostart a işe yarıyor
  85. sed -i "s/canlikullanici/$CANLI_KULLANICI/g" $BUILDER_ROOT/iso_icerik/updates/root/bin/canli_kullanici.sh
  86. sed -i "s/canlikullanici/$CANLI_KULLANICI/g" $BUILDER_ROOT/iso_icerik/updates/etc/security/opasswd
  87. if [ $GIRISYONETICISI = "lightdm" ];then
  88. sed -i "s/canlikullanici/$CANLI_KULLANICI/g" $BUILDER_ROOT/iso_icerik/updates/etc/lightdm/lightdm.conf
  89. fi
  90. sed -i "s/canlikullanici/$CANLI_KULLANICI/g" $BUILDER_ROOT/iso_icerik/updates/etc/passwd
  91. sed -i "s/Milis Linux Deneme Kullanıcısı/$CANLI_KULLANICI/g" $BUILDER_ROOT/iso_icerik/updates/etc/passwd
  92. sed -i "s/canlikullanici/$CANLI_KULLANICI/g" $BUILDER_ROOT/iso_icerik/updates/etc/group
  93. sed -i "s/canlikullanici/$CANLI_KULLANICI/g" $BUILDER_ROOT/iso_icerik/updates/etc/gshadow
  94. sed -i "s/canlikullanici/$CANLI_KULLANICI/g" $BUILDER_ROOT/iso_icerik/updates/etc/shadow
  95. sed -i "s/canlikullanici/$CANLI_KULLANICI/g" $BUILDER_ROOT/iso_icerik/updates/etc/sudoers
  96. # canlı kullanıcı öntanımlı parola ayarlanması
  97. if [ -z ${CANLI_KULLANICI_PAROLA+:} ];then
  98. # canlı kullanıcı parola ayarlanmadıysa öntanımlı 'milis' oalcaktır.
  99. CANLI_KULLANICI_PAROLA="milis"
  100. fi
  101. if type python3 &> /dev/null;then
  102. CK_PAROLA=$(python3 -c 'import crypt; print(crypt.crypt('"'$CANLI_KULLANICI_PAROLA'"', crypt.mksalt(crypt.METHOD_SHA512)))')
  103. else
  104. CK_PAROLA="$6$ElNCkqJ.$uWgWHcF6DhxjO8XPxSPaK6OduxTwqXrrpILXoktW0lYKBMMrIXkmpIcn6VE8CEgbarl41cbdb.f6owQGwYrGg."
  105. fi
  106. awk -i inplace -F: "BEGIN {OFS=FS;} \$1 == \"$CANLI_KULLANICI\" {\$2=\"$CK_PAROLA\"} 1" $BUILDER_ROOT/iso_icerik/updates/etc/shadow
  107. if [ ! -z ${MASAUSTU} ];then
  108. if [ $GIRISYONETICISI = "slim" ];then
  109. #slim teması ayarlanması
  110. if [ ! -z ${SLIM_TEMA_YOL+:} ] && [ -d $SLIM_TEMA_YOL ];then
  111. mkdir -p $BUILDER_ROOT/iso_icerik/updates/usr/share/slim/themes
  112. cp -rf $BUILDER_ROOT/$OZELLESTIRME/slim/temalar/* $BUILDER_ROOT/iso_icerik/updates/usr/share/slim/themes/
  113. fi
  114. fi
  115. if [ $GIRISYONETICISI = "lightdm" ];then
  116. #lightdm teması ayarlanması
  117. if [ ! -z ${LIGHTDM_TEMA_YOL+:} ] && [ -d $LIGHTDM_TEMA_YOL ];then
  118. echo "lightdm tema ayarlanacak"
  119. fi
  120. fi
  121. fi
  122. # iso için zaman ayarlı sürüm no belirlemek.
  123. zaman_surumu=`date +%Y%m%d%H%M`
  124. milis_surum_no=`echo $DAGITIM | tr '[A-Z]' '[a-z]' | tr ' ' '-'`-$VERSIYON-$MASAUSTU-$zaman_surumu
  125. if [ ! -z ${MASAUSTU} ];then
  126. # Milis yükleyici kurulu değilse gitrepodan çekilecek.
  127. if [ ! -d $LFS/var/lib/pkg/DB/milis-yukleyici ];then
  128. mkdir -p $BUILDER_ROOT/iso_icerik/updates/opt/
  129. #Milis-Yukleyicinin eklenmesi
  130. if [ -d $YUKLEYICI_KONUM ]; then
  131. cd $YUKLEYICI_KONUM
  132. git pull
  133. cd -
  134. else
  135. git clone $YUKLEYICI_GITREPO $YUKLEYICI_KONUM
  136. fi
  137. # Yükleyici için gerekli dizin oluşturulması
  138. mkdir -p $BUILDER_ROOT/iso_icerik/updates/opt/Milis-Yukleyici/
  139. cp -rf $YUKLEYICI_KONUM/* $BUILDER_ROOT/iso_icerik/updates/opt/Milis-Yukleyici/
  140. [ -f $BUILDER_ROOT/iso_icerik/updates/home/$CANLI_KULLANICI/Desktop/kurulum.desktop ] && sed -i "s/Milis Linux/$DAGITIM/g" $BUILDER_ROOT/iso_icerik/updates/home/$CANLI_KULLANICI/Desktop/kurulum.desktop
  141. [ -f $BUILDER_ROOT/iso_icerik/updates/home/$CANLI_KULLANICI/Masaüstü/kurulum.desktop ] && sed -i "s/Milis Linux/$DAGITIM/g" $BUILDER_ROOT/iso_icerik/updates/home/$CANLI_KULLANICI/Masaüstü/kurulum.desktop
  142. [ -f $BUILDER_ROOT/iso_icerik/updates/opt/Milis-Yukleyici/milis-kur ] && chmod 645 $BUILDER_ROOT/iso_icerik/updates/opt/Milis-Yukleyici/milis-kur
  143. echo $milis_surum_no > $BUILDER_ROOT/iso_icerik/updates/etc/milis-surum
  144. fi
  145. fi
  146. ### UEFI bolumu
  147. mesaj bilgi "UEFI bölüm oluşturuluyor..."
  148. if [ $UEFI == "1" ]; then
  149. mkdir -p $BUILDER_ROOT/iso_icerik/efi_tmp
  150. dd if=/dev/zero bs=1M count=60 of=$BUILDER_ROOT/iso_icerik/efiboot.img
  151. mkfs.vfat -n Milis_EFI $BUILDER_ROOT/iso_icerik/efiboot.img
  152. #umount -l $BUILDER_ROOT/iso_icerik/efi_tmp
  153. mount -o loop $BUILDER_ROOT/iso_icerik/efiboot.img $BUILDER_ROOT/iso_icerik/efi_tmp
  154. cp -rf $BUILDER_ROOT/iso_icerik/boot/kernel $BUILDER_ROOT/iso_icerik/efi_tmp/
  155. cp -rf $BUILDER_ROOT/iso_icerik/boot/initramfs $BUILDER_ROOT/iso_icerik/efi_tmp/
  156. cp -rf $BUILDER_ROOT/efi/* $BUILDER_ROOT/iso_icerik/efi_tmp/
  157. #sed -i "s/^title.*/title $DAGITIM $KODADI $VERSIYON (UEFI)/g" efi/loader/entries/milis.conf
  158. #sed -i "s/CDLABEL=[A-Z_]*/CDLABEL=$ISO_ETIKET/g" efi/loader/entries/milis.conf
  159. umount $BUILDER_ROOT/iso_icerik/efi_tmp
  160. rm -rf $BUILDER_ROOT/iso_icerik/efi_tmp
  161. fi
  162. # ISO oluştur
  163. mesaj bilgi "ISO oluşturuluyor..."
  164. ISODOSYA=$milis_surum_no
  165. if [ $UEFI == "1" ]; then
  166. # uefi
  167. cp $LFS/usr/lib/syslinux/isohdpfx.bin iso_icerik/boot/isolinux/isohdpfx.bin
  168. xorriso -as mkisofs \
  169. -iso-level 3 -rock -joliet \
  170. -max-iso9660-filenames -omit-period \
  171. -omit-version-number -relaxed-filenames -allow-lowercase \
  172. -volid "$ISO_ETIKET" \
  173. -eltorito-boot boot/isolinux/isolinux.bin \
  174. -eltorito-catalog boot/isolinux/isolinux.cat \
  175. -no-emul-boot -boot-load-size 4 -boot-info-table \
  176. -eltorito-alt-boot -e efiboot.img -isohybrid-gpt-basdat -no-emul-boot \
  177. -isohybrid-mbr iso_icerik/boot/isolinux/isohdpfx.bin \
  178. -output "$ISODOSYA.iso" iso_icerik || echo "ISO imaj olusturalamadı";
  179. else
  180. genisoimage -l -V $ISO_ETIKET -R -J -pad -no-emul-boot -boot-load-size 4 -boot-info-table \
  181. -b boot/isolinux/isolinux.bin -c boot/isolinux/boot.cat -o $ISODOSYA.iso iso_icerik && isohybrid $ISODOSYA.iso
  182. fi
  183. ISOBOYUT=$(du -sbh $ISODOSYA.iso | awk '{print $1}')
  184. HASH256=$(sha256sum $ISODOSYA.iso | cut -d' ' -f1)
  185. ISOYOLU=`pwd`/$ISODOSYA.iso
  186. mv $ISOYOLU /mnt/
  187. mesaj yesil "
  188. *********************************************************
  189. * ISO olusturuldu..
  190. * /mnt/$ISODOSYA.iso ($ISOBOYUT) uefi destek=$UEFI
  191. * sha256sum $HASH256
  192. *********************************************************
  193. "