mpsdo2 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. #!/bin/bash
  2. # Milis 2.0 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. #surum="150619"
  11. #ortam_sha="86e5c329994f14fc511ebc54ad6e058f2b649154945eef58772003af4918af9f"
  12. surum="260719"
  13. ortam_sha="2a230c286c4b707839be4538b106808dcf7301fd2c47d64ecfd1397c7ee1ea5a"
  14. ortam_adres="http://mls.akdeniz.edu.tr/iso/milis2-ortam-${surum}.sfs"
  15. ortam=/mnt/milis2-ortam-${surum}.sfs
  16. shasum_kontrol(){
  17. inen_sha=$(sha256sum $ortam | cut -d' ' -f1)
  18. if [ "$ortam_sha" = "$inen_sha" ];then
  19. echo "ortam shasum doğrulandı."
  20. else
  21. echo "indirilen ortamda shasum uyuşmazlığı var.silip tekrar deneyiniz.";exit 1
  22. fi
  23. }
  24. if [ ! -f $ortam ];then
  25. wget $ortam_adres -O $ortam
  26. shasum_kontrol
  27. fi
  28. # değişkenler - yolların iyi ayarlandığından emin olunuz.
  29. lfs=/mnt/milis2/ortam2
  30. rootfs=/mnt/milis2/rootfs2
  31. ikincil=/mnt/milis2/ikincil2
  32. kaynaklar=/mnt/sources
  33. paketdepo=/mnt/milis2/pkdepo_onbellek
  34. paketler=/mnt/milis2/uretilen_paketler
  35. [ ! -f $ortam ] && exit 1
  36. # kaynaklar dizinin var olduğu kontrol edilir.
  37. if [ ! -d $kaynaklar ];then
  38. ln -s /sources /mnt/
  39. fi
  40. # herhangi bir hatada çıkış yap
  41. set -e
  42. shasum_kontrol
  43. ortam_bagla(){
  44. mkdir -p $rootfs
  45. mkdir -p $lfs
  46. mkdir -p $ikincil
  47. mkdir -p $paketler
  48. mkdir -p $paketdepo
  49. mount -t squashfs -o loop $ortam $rootfs/
  50. mount -t tmpfs -o size=4096M,mode=0744 tmpfs $ikincil/
  51. mount -t aufs -o br=$ikincil=rw:$rootfs=ro none $lfs/
  52. mkdir -p $lfs/sources
  53. mount -t aufs -o br=$kaynaklar=rw none $lfs/sources/
  54. mount -t aufs -o br=$paketdepo=rw none $lfs/var/cache/mps/depo/
  55. mount -t aufs -o br=$paketler=rw none $lfs/opt
  56. }
  57. ortam_coz()
  58. {
  59. for node in "${lfs}" \
  60. "${ikincil}" \
  61. "${rootfs}" \
  62. "${lfs}/sys" \
  63. "${lfs}/proc" \
  64. "${lfs}/dev/pts" \
  65. "${lfs}/dev" ; \
  66. do
  67. if mount | grep -q "$node"
  68. then
  69. echo "çözülüyor ${node} ..."
  70. if ! umount "$node"
  71. then
  72. echo "sıkıntılı $node çözülüyor..."
  73. umount -l "$node"
  74. fi
  75. fi
  76. done
  77. }
  78. ortam_bagla_son(){
  79. cp -v /etc/resolv.conf $lfs/etc
  80. # ana sistemin mps ayarlarını kullanmak için
  81. cp -f -v $mpsconf $lfs/usr/milis/mps/conf/conf.lua
  82. mount -v -B /dev $lfs/dev
  83. #mount -vt devpts devpts $lfs/dev/pts -o gid=5,mode=620
  84. #mount -vt devpts devpts $lfs/dev/pts
  85. # make hatası düzeliyor-segm fault
  86. mount --bind /dev/pts $lfs/dev/pts
  87. mount -vt proc proc $lfs/proc
  88. #bazı durumlarda bu kullanılacak tty değilde pty i kullanan derlemelerde
  89. #mount --bind /dev/pts $lfs/dev/pts
  90. mount -vt sysfs sysfs $lfs/sys
  91. #if [ -h /dev/shm ]; then rm -f $lfs/dev/shm;mkdir $lfs/dev/shm;fi
  92. #mount -vt tmpfs shm $lfs/dev/shm
  93. #chmod 1777 /dev/shm
  94. }
  95. # gerekli bağlamaların yapılmasından sonra ortama giriş-chroot
  96. ortam_gir(){
  97. ortam_bagla_son
  98. #[ -f "/sources/milis.git/ayarlar/bashrc_chroot" ] && cp "/sources/milis.git/ayarlar/bashrc_chroot" "$lfs"/etc/bashrc
  99. chroot "$lfs" /usr/bin/env -i LC_ALL=$LC_ALL HOME=/root USER=root TERM="$TERM" PS1='\u:\w\$ ' /bin/bash --login
  100. #chroot "$lfs" /usr/bin/env -i HOME=/root PS1='\u:\w\$ ' /bin/bash --login +h
  101. }
  102. # ortam ayarlamalarından önce eski bağların çözülmesi
  103. ortam_coz
  104. # aufs modülünün kontrolü ve yüklenmesi
  105. if lsmod | grep "aufs" &> /dev/null ; then
  106. ortam_bagla
  107. echo "Milis paket üretim ortamı bağlandı."
  108. else
  109. modprobe aufs
  110. echo "aufs modülü yüklendi."
  111. if lsmod | grep "aufs" &> /dev/null ; then
  112. ortam_bagla
  113. else
  114. echo "aufs modülü bulunamadı!"
  115. exit 1
  116. fi
  117. fi
  118. # çıkarken bağların çözülmesi için trap-yakalama noktası ekleriz
  119. trap 'echo ; ortam_coz' EXIT HUP QUIT ABRT TERM
  120. # ortama giriş
  121. ortam_gir