ay-der 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. #!/bin/bash
  2. # Aylinux 2021 Derleme Ortam Kurulması
  3. # derleme ortamının indirilmesi
  4. #set -e -x
  5. YOK='\033[00m'
  6. KIRMIZI='\033[01;31m'
  7. YESIL='\033[01;32m'
  8. if [ "$(id -u)" != "0" ]
  9. then
  10. echo -e "${KIRMIZI}Bu dosyayı root olarak çalıştırmalısınız .${YOK}"
  11. exit 1
  12. fi
  13. echo -e "${KIRMIZI}Aylinux Derleme Ortamına Hoş Geldiniz...${YOK}"
  14. mpsconf="/usr/aylinux/mps/conf/conf.lua"
  15. [ ! -z $1 ] && mpsconf=$1
  16. if [ ! -f $mpsconf ];then
  17. echo "$mpsconf geçerli yol değil!"
  18. fi
  19. surum="2021-04-23"
  20. ortam_sha="b13ff7235fb85d10c7d8544d7a4d5f83f653b0d5ad8d5200e76cbf7ccb397d60"
  21. ortam_adres="https://indir.aylinux.org/aylinux-${surum}-ortam.sfs"
  22. ortam=/mnt/aylinux-${surum}-ortam.sfs
  23. shasum_kontrol(){
  24. inen_sha=$(sha256sum $ortam | cut -d' ' -f1)
  25. if [ "$ortam_sha" = "$inen_sha" ];then
  26. echo "ortam shasum doğrulandı."
  27. else
  28. echo "indirilen ortamda shasum uyuşmazlığı var.silip tekrar deneyiniz.";exit 1
  29. fi
  30. }
  31. if [ ! -f $ortam ];then
  32. wget $ortam_adres -O $ortam
  33. shasum_kontrol
  34. fi
  35. # değişkenler - yolların iyi ayarlandığından emin olunuz.
  36. ortamdir="/mnt/ay-der"
  37. rodir="${ortamdir}/ro"
  38. changedir="${ortamdir}/rw"
  39. changes="${changedir}/fs"
  40. sources="${changedir}/sources"
  41. opt="${changedir}/opt"
  42. cache="${changedir}/cache"
  43. sources_ro="${rodir}/sources"
  44. opt_ro="${rodir}/opt"
  45. cache_ro="${rodir}/cache"
  46. sfsdir="${rodir}/sfs"
  47. rootdir="${ortamdir}/system"
  48. workdir="${ortamdir}/work"
  49. # ortam dosyasının varlığı kontrol edilir.
  50. [ ! -f $ortam ] && exit 1
  51. # herhangi bir hatada çıkış yap
  52. set -e
  53. shasum_kontrol
  54. ortam_bagla(){
  55. mkdir -p $changes
  56. mkdir -p $sources
  57. mkdir -p $opt
  58. mkdir -p $cache
  59. mkdir -p $sfsdir
  60. mkdir -p $sources_ro
  61. mkdir -p $opt_ro
  62. mkdir -p $cache_ro
  63. mkdir -p $rootdir
  64. mkdir -p $workdir/{1,2,3,4,5}
  65. # eski değişikliklerin temizlenmesi
  66. rm -rf $changes/*
  67. mount -t squashfs -o loop $ortam $sfsdir
  68. #mount -t tmpfs -o size=4096M,mode=0744 tmpfs $ikincil/
  69. mount -t overlay overlay -o index=off,lowerdir=$sfsdir,upperdir=$changes,workdir=$workdir/1 $rootdir
  70. # ana sistemden aylinux deposu kopyalanır.
  71. mkdir -p $rootdir/sources
  72. [ ! -d $sources/notabug.org.aylinux.aylinux-2021 ] && cp -r /sources/notabug.org.aylinux.aylinux-2021 $sources/
  73. mount -t overlay overlay -o index=off,lowerdir=${sources_ro},upperdir=$sources,workdir=$workdir/2 $rootdir/sources
  74. mount -t overlay overlay -o index=off,lowerdir=${opt_ro},upperdir=$opt,workdir=$workdir/3 $rootdir/opt
  75. mount -t overlay overlay -o index=off,lowerdir=${cache_ro},upperdir=$cache,workdir=$workdir/4 $rootdir/var/cache/mps/depo
  76. }
  77. ortam_coz()
  78. {
  79. for node in "${sfsdir}" \
  80. "${rootdir}/sources" \
  81. "${rootdir}/opt" \
  82. "${rootdir}/var/cache/mps/depo" \
  83. "${rootdir}/sys" \
  84. "${rootdir}/proc" \
  85. "${rootdir}/dev/pts" \
  86. "${rootdir}/dev" \
  87. "${rootdir}" ; \
  88. do
  89. if mount | grep -q "$node"
  90. then
  91. echo "çözülüyor ${node} ..."
  92. if ! umount "$node"
  93. then
  94. echo "sıkıntılı $node çözülüyor..."
  95. umount -l "$node"
  96. fi
  97. fi
  98. done
  99. }
  100. ortam_bagla_son(){
  101. # ana sistem dns
  102. cp -v /etc/resolv.conf $rootdir/etc/
  103. # ana sistem gitconfig
  104. [ -f /root/.gitconfig ] && cp /root/.gitconfig $rootdir/root/
  105. # ana sistemin mps ayarlarını kullanmak için
  106. cp -f -v $mpsconf $rootdir/usr/aylinux/mps/conf/conf.lua
  107. cp -f -v /usr/bin/lua $rootdir/usr/bin/lua
  108. #mkdir -p $rootdir/sources
  109. mount -v -B /dev $rootdir/dev
  110. #mount -vt devpts devpts $rootdir/dev/pts -o gid=5,mode=620
  111. #mount -vt devpts devpts $rootdir/dev/pts
  112. # make hatası düzeliyor-segm fault
  113. mount --bind /dev/pts $rootdir/dev/pts
  114. mount -vt proc proc $rootdir/proc
  115. #bazı durumlarda bu kullanılacak tty değilde pty i kullanan derlemelerde
  116. #mount --bind /dev/pts $rootdir/dev/pts
  117. mount -vt sysfs sysfs $rootdir/sys
  118. #if [ -h /dev/shm ]; then rm -f $rootdir/dev/shm;mkdir $rootdir/dev/shm;fi
  119. #mount -vt tmpfs shm $rootdir/dev/shm
  120. #chmod 1777 /dev/shm
  121. }
  122. # gerekli bağlamaların yapılmasından sonra ortama giriş-chroot
  123. ortam_gir(){
  124. ortam_bagla_son
  125. sed -i 's/32/33/g' $rootdir/etc/profile
  126. sed -i 's/31/33/g' $rootdir/etc/profile
  127. chroot "$rootdir" /usr/bin/env -i LC_ALL=$LC_ALL HOME=/root USER=root TERM="$TERM" PS1='(ay-der)\u:\w\$ ' /bin/bash --login
  128. #chroot "$rootdir" /usr/bin/env -i HOME=/root PS1='\u:\w\$ ' /bin/bash --login +h
  129. }
  130. # işlevleri başlat
  131. # ortam ayarlamalarından önce eski bağların çözülmesi
  132. ortam_coz
  133. # overlayfs kernel modul yükle ve ortam bağlanır
  134. modprobe overlay
  135. [ $? -ne 0 ] && exit 1
  136. ortam_bagla
  137. # çıkarken bağların çözülmesi için trap-yakalama noktası ekleriz
  138. trap 'echo ; ortam_coz' EXIT HUP QUIT ABRT TERM
  139. # ortama giriş
  140. ortam_gir