123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368 |
- from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel, QProgressBar, QMessageBox, qApp
- from PyQt5.QtCore import QTimer, QThread
- from PyQt5.QtGui import QPixmap
- import os, time
- class Kurulum(QWidget):
- def __init__(self, ebeveyn=None):
- super(Kurulum, self).__init__(ebeveyn)
- self.e = ebeveyn
- kutu = QVBoxLayout()
- kutu.setContentsMargins(0,0,0,0)
- self.setLayout(kutu)
- self.slayt_label = QLabel()
- self.slayt_label.setFixedSize(950,475)
- kutu.addWidget(self.slayt_label)
- self.bilgi_label = QLabel()
- kutu.addWidget(self.bilgi_label)
- self.surec_cubugu = QProgressBar()
- kutu.addWidget(self.surec_cubugu)
- def slaytci(self):
- self.slaytlar = os.listdir("slaytlar")
- self.slaytlar.sort()
- self.bulunulan_slayt = 1
- self.slayt_sayisi = len(self.slaytlar)
- self.slayt_label.setPixmap(QPixmap("slaytlar/" + self.slaytlar[0]))
- self.zaman = QTimer(self)
- self.zaman.setInterval(30000)
- self.zaman.timeout.connect(self.slay_degistir)
- self.zaman.start()
- def slay_degistir(self):
- self.bulunulan_slayt += 1
- if self.bulunulan_slayt > self.slayt_sayisi:
- self.bulunulan_slayt = 1
- self.slayt_label.setPixmap(QPixmap("slaytlar/"+self.slaytlar[self.bulunulan_slayt-1]))
- def showEvent(self, event):
- self.e.setWindowTitle(self.e.d[self.e.s_d]["Milis Linux Yükleniyor"])
- self.slaytci()
- kurulum = kurulumThread(self)
- kurulum.start()
- class kurulumThread(QThread):
-
- CANLI_KULL="atilla"
- canli_kull_yol="/etc/canli_kullanici"
- if os.path.exists(canli_kull_yol):
- CANLI_KULL=open(canli_kull_yol,"r").read()
- CANLI_KULL=CANLI_KULL.strip()
- else:
- print ("canlı kullanıcını belirten dosya bulunamadı.")
- qApp.closeAllWindows()
-
- def __init__(self, ebeveyn=None):
- super(kurulumThread, self).__init__(ebeveyn)
- self.f = ebeveyn
- self.e = self.f.e
- def run(self):
- self.e.geri_dugme.setDisabled(True)
- self.e.ileri_dugme.setDisabled(True)
- kbolum = self.e.milis_ayarlar["disk_bolum"]
- kformat = self.e.milis_ayarlar["disk_format"]
- kbaglam = "/mnt"
- ktakas = self.e.milis_ayarlar["disk_takasbolum"]
- kisim = self.e.milis_ayarlar["kullanici_adi"]
- kuisim = self.e.milis_ayarlar["gercek_ad"]
- ksifre = self.e.milis_ayarlar["giris_sifresi"]
- krootsifre = self.e.milis_ayarlar["admin_sifresi"]
- kotogiris = self.e.milis_ayarlar["otomatik_giris"]
- kgrubkur = self.e.milis_ayarlar["grub-kur"]
- kdil = self.e.milis_ayarlar["dil"]
- kzaman = self.e.milis_ayarlar["konum"]
- bilgisayar_adi = self.e.milis_ayarlar["bilgisayar_adi"]
- self.f.bilgi_label.setText(self.e.d[self.e.s_d]["Değişiklikler Diske Uygulanıyor..."])
- if self.e.disk:
- try:
- self.e.disk.commit()
- except:
- pass
- if kformat:
- self.f.surec_cubugu.setValue(0)
- self.f.bilgi_label.setText(self.e.d[self.e.s_d]["Diskler Formatlanıyor..."])
- self.bolumFormatla(kbolum)
- if ktakas != "":
- self.f.surec_cubugu.setValue(0)
- self.f.bilgi_label.setText(self.e.d[self.e.s_d]["Takas Alanı Ayarlanıyor..."])
- self.takasAyarla(ktakas)
- self.f.surec_cubugu.setValue(0)
- self.f.bilgi_label.setText(kbolum + self.e.d[self.e.s_d][" bölümü "] + kbaglam + self.e.d[self.e.s_d][" bağlamına bağlanıyor..."])
- self.bolumBagla(kbolum, kbaglam)
- self.f.surec_cubugu.setValue(0)
- self.f.bilgi_label.setText(self.e.d[self.e.s_d]["Kullanıcı Oluşturuluyor..."])
- self.kullaniciOlustur(kuisim, kisim, ksifre, krootsifre)
- self.f.surec_cubugu.setValue(0)
- self.f.bilgi_label.setText(self.e.d[self.e.s_d]["Sistem Kopyalanıyor..."])
- self.sistemKopyala(kbaglam)
- self.f.surec_cubugu.setValue(0)
- self.f.bilgi_label.setText(self.e.d[self.e.s_d]["kişisel ayarlar oluşturuluyor..."])
- self.kisiselOlustur(kbaglam, kdil, kzaman, kotogiris, kisim, bilgisayar_adi)
- self.f.surec_cubugu.setValue(0)
- self.f.bilgi_label.setText(self.e.d[self.e.s_d]["initrd oluşturuluyor..."])
- self.initrdOlustur(kbaglam)
- if kgrubkur:
- self.f.surec_cubugu.setValue(0)
- self.f.bilgi_label.setText(self.e.d[self.e.s_d]["Grub Kuruluyor..."])
- self.grubKur(kbolum, kbaglam)
- self.f.surec_cubugu.setValue(0)
- self.bolumCoz(kbolum)
- self.e.asama_degistir(8)
- def bolumFormatla(self, hedef):
- komut = "umount -l " + hedef
- self.f.bilgi_label.setText(komut)
- if os.path.exists(hedef):
- os.system(komut)
- self.f.surec_cubugu.setValue(50)
- komut2 = "mkfs.ext4 -F " + hedef
- try:
- os.system(komut2)
- self.f.surec_cubugu.setValue(100)
- except OSError as e:
- QMessageBox.warning(self, self.e.d[self.e.s_d]["Hata"], str(e))
- qApp.closeAllWindows()
- self.f.bilgi_label.setText(hedef + self.e.d[self.e.s_d][" disk bölümü formatlandı."])
- else:
- QMessageBox.warning(self, self.e.d[self.e.s_d]["Hata"], self.e.d[self.e.s_d]["Disk bulunamadı. Program kapatılacak."])
- qApp.closeAllWindows()
- def takasAyarla(self, bolum):
- self.f.bilgi_label.setText("mkswap " + bolum)
- os.system("mkswap " + bolum)
- self.f.bilgi_label.setText(
- 'echo "UUID=`lsblk -ln -o UUID ' + bolum + '` none swap sw 0 0" | tee -a /etc/fstab')
- os.system('echo "UUID=`lsblk -ln -o UUID ' + bolum + '` none swap sw 0 0" | tee -a /etc/fstab')
- def bolumBagla(self, hedef, baglam):
- komut = "mount " + hedef + " " + baglam
- try:
- os.system(komut)
- self.f.surec_cubugu.setValue(100)
- except OSError as e:
- QMessageBox.warning(self, self.e.d[self.e.s_d]["Hata"], str(e))
- qApp.closeAllWindows()
- self.f.bilgi_label.setText(hedef + " " + baglam + self.e.d[self.e.s_d][" altına bağlandı."])
- def toplamBoyutTespit(self, liste):
- self.toplamBoyut = []
- for i in liste:
- if os.path.exists("/" + i):
- komut = "du -s /" + i
- donut_ = self.e.komutCalistirFonksiyon(komut)
- donut = donut_.split("\n")
- boyut_ = donut[len(donut) - 2]
- boyut = boyut_.split("\t")
- self.toplamBoyut.append(int(boyut[0]))
- def kullaniciOlustur(self, uzun_isim, kullisim, kullsifre, rootsifre):
- uzun_isim = uzun_isim.replace(' ', '_')
- os.system("kopar " + uzun_isim + " " + kullisim)
- self.f.surec_cubugu.setValue(20)
- os.system('echo -e "' + kullsifre + '\n' + kullsifre + '" | passwd ' + kullisim)
- os.system('echo -e "' + rootsifre + '\n' + rootsifre + '" | passwd root')
- self.f.surec_cubugu.setValue(40)
- ayar_komut = "cp -rf /home/"+self.CANLI_KULL+"/.config /home/"+kullisim
- os.system(ayar_komut)
- self.f.surec_cubugu.setValue(60)
- ayar_komut2 = "cp -r /root/.xinitrc /home/" + kullisim + "/"
- os.system(ayar_komut2)
- self.f.surec_cubugu.setValue(80)
- #saat_komut = "saat_ayarla_tr"
- #os.system(saat_komut)
- self.f.surec_cubugu.setValue(100)
- self.f.bilgi_label.setText(kullisim + self.e.d[self.e.s_d][" kullanıcısı başarıyla oluşturuldu."])
- def sistemKopyala(self, baglam):
- os.system("clear")
- komut1 = "rm -rf /root/Masaüstü/kurulum.desktop"
- komut2 = "rm -rf /root/Desktop/kurulum.desktop"
- komut3 = "umount -l /home/"+self.CANLI_KULL+"/.gvfs"
- os.system(komut1)
- os.system(komut2)
- os.system(komut3)
- self.f.bilgi_label.setText(self.e.d[self.e.s_d]["Dizinler kopyalanmaya başlanıyor..."])
- dizinler = ["bin", "boot", "home", "lib", "sources", "usr", "depo", "etc", "lib64", "opt", "root", "sbin","var"]
- yenidizinler = ["srv", "proc", "tmp", "mnt", "sys", "run", "dev", "media"]
- self.toplamBoyutTespit(dizinler)
- self.baglam = baglam
- self.progressDurum = True
- progresThread = progressAyarciSinif(self)
- progresThread.start()
- self.dizinSirasi = 0
- mikdiz = len(dizinler)
- for dizin in dizinler:
- self.kopyalanacakDizinAdi = dizin
- self.dizinSirasi += 1
- self.f.bilgi_label.setText(str(self.dizinSirasi) + "/" + str(mikdiz) +" "+ dizin + self.e.d[self.e.s_d][" kopyalanıyor..."])
- komut = "rsync --delete -axHAWX --numeric-ids /" + dizin + " " + baglam + " --exclude /proc"
- os.system(komut)
- qApp.processEvents()
- self.f.surec_cubugu.setValue(0)
- self.f.bilgi_label.setText(self.e.d[self.e.s_d]["Yeni Dizinler Oluşturuluyor..."])
- self.progressDurum = False
- i = 0
- mikdiz = len(yenidizinler)
- for ydizin in yenidizinler:
- i += 1
- komut = "mkdir -p " + baglam + "/" + ydizin
- os.system(komut)
- yuzde = str(round(i / mikdiz, 2))[2:]
- if len(yuzde) == 1:
- yuzde = yuzde + "0"
- self.f.surec_cubugu.setValue(int(yuzde))
- self.f.bilgi_label.setText(dizin + self.e.d[self.e.s_d][" kopyalandı."])
- qApp.processEvents()
- def kisiselOlustur(self, hedef, dil, zaman, otogiris, isim, bilgisayar_adi):
- bolge=zaman.split("/")[0]
- yer=zaman.split("/")[1]
- lokal_ayarlar=open("/tmp/locale.conf","w")
- icerik="LC_ALL="+dil+" \n"
- icerik+="LANG="+dil+" \n"
- icerik+="LANGUAGE="+dil
- lokal_ayarlar.write(icerik)
- lokal_ayarlar.close()
- os.system("cp /usr/share/zoneinfo/"+bolge+"/"+yer+" " + hedef + "/etc/localtime")
- os.system("mount --bind /dev " + hedef + "/dev")
- self.f.surec_cubugu.setValue(25)
- os.system("mount --bind /sys " + hedef + "/sys")
- self.f.surec_cubugu.setValue(50)
- os.system("mount --bind /proc " + hedef + "/proc")
- os.system("mount --bind /run " + hedef + "/run")
- self.f.surec_cubugu.setValue(75)
- os.system("cp -rf /tmp/locale.conf " + hedef + "/etc/")
- komut_skel="cp -rf /run/initramfs/live/updates/home/"+self.CANLI_KULL+"/* "+ hedef + "/etc/skel/"
- print("komut_koş:",komut_skel)
- komut_evdizin="cp -rf /run/initramfs/live/updates/home/"+self.CANLI_KULL+"/.* "+ hedef + "/home/"+isim+"/"
- print("komut_koş:",komut_evdizin)
- os.system(komut_evdizin)
- os.system('chroot ' + hedef + ' rm -rf /home/'+self.CANLI_KULL)
- os.system('chroot ' + hedef + ' rm -rf /root/bin/canli_kullanici.sh')
- os.system('chroot ' + hedef + ' rm -rf /etc/canli_kullanici')
- os.system('chroot ' + hedef + ' rm -rf /opt/Milis-Yukleyici')
- os.system('chroot ' + hedef + ' rm -rf '+self.canli_kull_yol)
- os.system('chroot ' + hedef + ' rm -rf /root/Desktop/kurulum.desktop')
- os.system('chroot ' + hedef + ' rm -rf /home/'+isim+'/Desktop/kurulum.desktop')
- os.system('chroot ' + hedef + ' rm -rf /root/Masaüstü/kurulum.desktop')
- os.system('chroot ' + hedef + ' rm -rf /home/'+isim+'/Masaüstü/kurulum.desktop')
- os.system('chroot ' + hedef + ' rm -rf /root/Masaüstü/milis-kur.desktop')
- os.system('chroot ' + hedef + ' userdel '+self.CANLI_KULL)
- os.system('chroot ' + hedef + ' rm /etc/shadow- /etc/gshadow- /etc/passwd- /etc/group- ')
- os.system('chroot ' + hedef + ' sed -i "/^'+self.CANLI_KULL+'/d" /etc/security/opasswd ')
- #os.system('chroot ' + hedef + ' cp /etc/slim.conf.orj /etc/slim.conf ')
- os.system('chroot ' + hedef + ' cp /etc/lightdm/lightdm.conf.orj /etc/lightdm/lightdm.conf ')
- #y
- os.system("rm -rf "+hedef+"/home/"+isim+"/Desktop")
- #y
- dil_oz=dil.split(".")[0]
- os.system('chroot ' + hedef + ' su - '+isim+' -c "echo '+dil_oz+' > /home/'+isim+'/.config/user-dirs.locale" ')
- if dil_oz == "tr_TR":
- os.system("cp /opt/user-dirs.dirs "+hedef+"/home/"+isim+"/.config/")
- os.system('chroot ' + hedef + ' su - '+isim+' -c "xdg-user-dirs-update --force" ')
- os.system("mv "+hedef+"/home/"+isim+"/Downloads "+hedef+"/home/"+isim+"/İndirilenler" )
- else:
- os.system('chroot ' + hedef + ' su - '+isim+' -c "xdg-user-dirs-update --force" ')
- os.system('chroot ' + hedef + ' rm -rf /opt/user-dirs.dir')
- os.system('chroot ' + hedef + ' chown '+isim+':'+isim+' -R /home/'+isim)
- os.system('chroot ' + hedef + ' setfacl -m u:'+isim+':rw /dev/snd/* ')
-
- if otogiris is True:
- os.system('chroot ' + hedef + ' sed -i s/"#autologin-user .*"/"autologin-user='+isim+'/" /etc/lightdm/lightdm.conf')
- os.system('chroot ' + hedef + ' sed -i s/"#autologin-user-timeout .*"/"autologin-user-timeout=0/" /etc/lightdm/lightdm.conf')
- # hostname'nin hosts içine eklenmesi
- os.system('echo "127.0.0.1 '+bilgisayar_adi+'" >> '+hedef+'/etc/hosts')
- os.system('sed -i -e "s|HOSTNAME=.*|HOSTNAME="'+bilgisayar_adi+'"|g" '+hedef+'/etc/sysconfig/network')
-
- self.f.surec_cubugu.setValue(100)
- self.f.bilgi_label.setText(self.e.d[self.e.s_d]["kişisel ayarlar oluşturuldu"])
- def initrdOlustur(self, hedef):
- self.f.surec_cubugu.setValue(75)
- os.system('chroot ' + hedef + ' rm -f /boot/initramfs')
- os.system('chroot ' + hedef + ' rm -f /boot/kernel')
- #os.system("cp /run/initramfs/live/boot/kernel "+hedef+"/boot/kernel-$(uname -r)")
- os.system("cp /boot/kernel-* "+hedef+"/boot/")
- os.system('chroot ' + hedef + ' dracut --no-hostonly --add-drivers "ahci" -f /boot/initramfs')
- os.system('chroot ' + hedef + ' ln -s /boot/kernel-* /boot/kernel')
- self.f.surec_cubugu.setValue(100)
- self.f.bilgi_label.setText(self.e.d[self.e.s_d]["initrd oluşturuldu"])
- def grubKur(self, hedef, baglam):
- hedef = hedef[:-1]
- os.system("cp -f /root/bin/tamir_grub_plymouth "+baglam+"/root/bin/")
- os.system("chroot "+baglam+" tamir_grub_plymouth")
- if hedef == "/dev/mmcblk0": # SD kart'a kurulum fix
- os.system('chroot ' + baglam + 'grub-install /dev/mmcblk0')
- # os.system("grub-install --boot-directory="+baglam+"/boot /dev/mmcblk0")
- self.f.surec_cubugu.setValue(100)
- else:
- # os.system("grub-install --boot-directory="+baglam+"/boot " + hedef)
- os.system('chroot ' + baglam + ' grub-install ' + hedef)
- self.f.surec_cubugu.setValue(50)
- os.system("chroot " + baglam + " grub-mkconfig -o /boot/grub/grub.cfg")
- self.f.surec_cubugu.setValue(100)
- self.f.bilgi_label.setText(self.e.d[self.e.s_d]["Grub Kuruldu."])
- def bolumCoz(self, hedef):
- komut = "umount -l " + hedef
- try:
- os.system(komut)
- except OSError as e:
- QMessageBox.warning(self, self.e.d[self.e.s_d]["Hata"], str(e))
- qApp.closeAllWindows()
- self.f.surec_cubugu.setValue(100)
- self.f.bilgi_label.setText(hedef + self.e.d[self.e.s_d][" çözüldü."])
- class progressAyarciSinif(QThread):
- def __init__(self, ebeveyn=None):
- super(progressAyarciSinif, self).__init__(ebeveyn)
- self.e = ebeveyn
- self.f = self.e.f
- def run(self):
- while self.e.progressDurum:
- self.guncelle()
- time.sleep(1)
- def guncelle(self):
- boyut = self.boyutTespit()
- toplamBoyut = self.e.toplamBoyut[self.e.dizinSirasi - 1]
- if boyut < toplamBoyut:
- yuzde = str(round(boyut / toplamBoyut, 2))[2:]
- if len(yuzde) == 1:
- yuzde = yuzde + "0"
- self.f.surec_cubugu.setValue(int(yuzde))
- else:
- self.f.surec_cubugu.setValue(100)
- def boyutTespit(self):
- try:
- komut = "du -s " + self.e.baglam + "/" + self.e.kopyalanacakDizinAdi
- donut_ = self.e.e.komutCalistirFonksiyon(komut)
- donut = donut_.split("\n")
- boyut_ = donut[len(donut) - 2]
- boyut = boyut_.split("\t")
- return int(boyut[0])
- except:
- return 0
|