milis/bin/mpsdo

130 lines
3.5 KiB
Plaintext
Raw Normal View History

2018-01-13 17:55:15 +01:00
#!/bin/bash
2018-01-21 22:30:24 +01:00
# derleme ortamının indirilmesi
2018-09-03 01:18:44 +02:00
ortam_sha="d79383c0dd1178c41454be3d473c3ea997241187f31e9b373339a3fad5939a73"
2018-01-21 22:30:24 +01:00
ortam_adres="http://kaynaklar.milislinux.org/iso/reposuz-milis-bootstrap-enson.sfs"
ortam=/mnt/reposuz-milis-bootstrap-enson.sfs
2018-01-21 22:35:23 +01:00
shasum_kontrol(){
2018-01-21 22:41:24 +01:00
inen_sha=$(sha256sum $ortam | cut -d' ' -f1)
2018-01-21 22:30:24 +01:00
if [ "$ortam_sha" = "$inen_sha" ];then
2018-01-21 22:35:23 +01:00
echo "ortam shasum doğrulandı."
2018-01-21 22:30:24 +01:00
else
echo "indirilen ortamda shasum uyşmazlığı var.silip tekrar deneyiniz.";exit 1
fi
2018-01-21 22:35:23 +01:00
}
if [ ! -f $ortam ];then
wget $ortam_adres -O $ortam
shasum_kontrol
2018-01-21 22:30:24 +01:00
fi
2018-01-13 17:55:15 +01:00
# değişkenler - yolların iyi ayarlandığından emin olunuz.
lfs=/mnt/lfs
rootfs=/mnt/rootfs
ikincil=/mnt/ikincil
kaynaklar=/mnt/sources
2018-02-03 20:43:48 +01:00
paketdepo=/depo/paketler
2018-05-14 06:19:36 +02:00
paketler=/mnt/paketler
2018-01-13 17:55:15 +01:00
[ ! -f $ortam ] && exit 1
2018-01-22 13:04:34 +01:00
# kaynaklar dizinin var olduğu kontrol edilir.
2018-05-10 10:29:51 +02:00
if [ ! -d $kaynaklar ];then
ln -s /sources /mnt/
fi
2018-01-13 17:55:15 +01:00
# herhangi bir hatada çıkış yap
set -e
2018-01-21 22:35:23 +01:00
shasum_kontrol
2018-01-13 17:55:15 +01:00
ortam_bagla(){
mkdir -p $rootfs
mkdir -p $lfs
mkdir -p $ikincil
2018-05-14 06:19:36 +02:00
mkdir -p $paketler
2018-01-13 17:55:15 +01:00
mount -t squashfs -o loop $ortam $rootfs/
2018-08-20 16:30:24 +02:00
mount -t tmpfs -o size=4096M,mode=0744 tmpfs $ikincil/
2018-01-13 17:55:15 +01:00
mount -t aufs -o br=$ikincil=rw:$rootfs=ro none $lfs/
mkdir -p $lfs/sources
mount -t aufs -o br=$kaynaklar=rw none $lfs/sources/
2018-02-03 20:43:48 +01:00
mount -t aufs -o br=$paketdepo=rw none $lfs/depo/paketler
2018-05-14 06:19:36 +02:00
mount -t aufs -o br=$paketler=rw none $lfs/opt
2018-01-13 17:55:15 +01:00
}
ortam_coz()
{
# umount -l /mnt/rootfs;umount -l /mnt/ikincil;umount -l /mnt/lfs
for node in "${lfs}" \
"${ikincil}" \
"${rootfs}" \
"${lfs}/sys" \
"${lfs}/proc" \
"${lfs}/dev/pts" \
"${lfs}/dev" ; \
do
if mount | grep -q "$node"
then
echo "çözülüyor ${node} ..."
if ! umount "$node"
then
echo "sıkıntılı $node çözülüyor..."
umount -l "$node"
fi
fi
done
}
ortam_bagla_son(){
cp -v /etc/resolv.conf $lfs/etc
# ana sistemin mps ayarlarını kullanmak için
cp -f -v /etc/mps.conf $lfs/etc
cp -f -v /etc/mpsd.conf $lfs/etc
mount -v -B /dev $lfs/dev
#mount -vt devpts devpts $lfs/dev/pts -o gid=5,mode=620
#mount -vt devpts devpts $lfs/dev/pts
# make hatası düzeliyor-segm fault
mount --bind /dev/pts $lfs/dev/pts
mount -vt proc proc $lfs/proc
#bazı durumlarda bu kullanılacak tty değilde pty i kullanan derlemelerde
#mount --bind /dev/pts $lfs/dev/pts
mount -vt sysfs sysfs $lfs/sys
#if [ -h /dev/shm ]; then rm -f $lfs/dev/shm;mkdir $lfs/dev/shm;fi
#mount -vt tmpfs shm $lfs/dev/shm
#chmod 1777 /dev/shm
}
# gerekli bağlamaların yapılmasından sonra ortama giriş-chroot
ortam_gir(){
ortam_bagla_son
[ -f "/sources/milis.git/ayarlar/bashrc_chroot" ] && cp "/sources/milis.git/ayarlar/bashrc_chroot" "$lfs"/etc/bashrc
chroot "$lfs" /usr/bin/env -i HOME=/root TERM="$TERM" PS1='\u:\w\$ ' /bin/bash --login
#chroot "$lfs" /usr/bin/env -i HOME=/root PS1='\u:\w\$ ' /bin/bash --login +h
}
# ortam ayarlamalarından önce eski bağların çözülmesi
ortam_coz
# aufs modülünün kontrolü ve yüklenmesi
if lsmod | grep "aufs" &> /dev/null ; then
ortam_bagla
echo "Milis paket üretim ortamı bağlandı."
else
modprobe aufs
echo "aufs modülü yüklendi."
if lsmod | grep "aufs" &> /dev/null ; then
ortam_bagla
else
echo "aufs modülü bulunamadı!"
exit 1
fi
fi
# çıkarken bağların çözülmesi için trap-yakalama noktası ekleriz
trap 'echo ; ortam_coz' EXIT HUP QUIT ABRT TERM
# ortama giriş
ortam_gir