mpsdo 4.7 KB

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