129 lines
		
	
	
	
		
			3.5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			129 lines
		
	
	
	
		
			3.5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
#!/bin/bash
 | 
						||
 | 
						||
# derleme ortamının indirilmesi
 | 
						||
 | 
						||
ortam_sha="41a586c6b7e10295658375bd6718e07aec1396f05addc2bd9154ef258c07dbf9" 
 | 
						||
ortam_adres="http://kaynaklar.milislinux.org/iso/reposuz-milis-bootstrap-enson.sfs"
 | 
						||
ortam=/mnt/reposuz-milis-bootstrap-enson.sfs
 | 
						||
 | 
						||
shasum_kontrol(){
 | 
						||
	inen_sha=$(sha256sum $ortam | cut -d' ' -f1)
 | 
						||
	if [ "$ortam_sha" = "$inen_sha" ];then
 | 
						||
		echo "ortam shasum doğrulandı."
 | 
						||
	else
 | 
						||
		echo "indirilen ortamda shasum uyşmazlığı var.silip tekrar deneyiniz.";exit 1
 | 
						||
	fi
 | 
						||
}	
 | 
						||
 | 
						||
if [ ! -f $ortam ];then
 | 
						||
	wget $ortam_adres -O $ortam
 | 
						||
	shasum_kontrol
 | 
						||
fi
 | 
						||
 | 
						||
# değişkenler - yolların iyi ayarlandığından emin olunuz.
 | 
						||
 
 | 
						||
lfs=/mnt/lfs
 | 
						||
rootfs=/mnt/rootfs
 | 
						||
ikincil=/mnt/ikincil
 | 
						||
kaynaklar=/mnt/sources
 | 
						||
paketdepo=/depo/paketler
 | 
						||
paketler=/mnt/paketler
 | 
						||
 | 
						||
[ ! -f $ortam ] && exit 1
 | 
						||
 | 
						||
# kaynaklar dizinin var olduğu kontrol edilir.
 | 
						||
if [ ! -d $kaynaklar ];then 
 | 
						||
	ln -s /sources /mnt/
 | 
						||
fi
 | 
						||
# herhangi bir hatada çıkış yap
 | 
						||
set -e
 | 
						||
 | 
						||
shasum_kontrol
 | 
						||
 | 
						||
ortam_bagla(){
 | 
						||
	mkdir -p $rootfs
 | 
						||
	mkdir -p $lfs
 | 
						||
	mkdir -p $ikincil
 | 
						||
	mkdir -p $paketler
 | 
						||
	mount -t squashfs -o loop $ortam $rootfs/
 | 
						||
	mount -t tmpfs -o size=4096M,mode=0744 tmpfs $ikincil/
 | 
						||
	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/
 | 
						||
	mount -t aufs -o br=$paketdepo=rw none $lfs/depo/paketler
 | 
						||
	mount -t aufs -o br=$paketler=rw none $lfs/opt
 | 
						||
}
 | 
						||
 | 
						||
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
 |