7 Nisan 2022 Perşembe

Pardus costum iso hazırlama 2022

 Merhabalar,

Tübitak ile ortak çalışma sonrasında Ali hocamın hazırladığı scripti sizin ile paylaşmak istiyorum.


##################################################################
#!/bin/bash
set -e
:
if [[ "$1" == "" || ! -f "$1" ]] ; then
    echo "Usage: $0 iso_path"
    exit 1
fi
iso="$1"
if [[ $UID -ne 0 ]] ; then
    echo "You must be root!"
    exit 1
fi
apt update
apt install grub-pc-bin grub-efi-amd64-bin grub-efi-ia32-bin mtools xorriso squashfs-tools -y
echo -ne "\033c"
if [[ ! -d work/isowork/ ]] ; then
    mkdir -p work/iso work/sfs work/chroot work/isowork
    mount "$iso" work/iso
    mount work/iso/live/filesystem.squashfs work/sfs
    cp -prfv work/sfs/* work/chroot/
    sync #### ramdaki gecici bilgileri diske yazmasını bekliyor.
    cp -prfv work/iso/* work/isowork/
    rm -rf work/isowork/live/* work/isowork/live/isolinux work/isowork/*sum*
    sync
fi
for dir in /dev /dev/pts /sys /proc /run ; do
    mount --bind $dir work/chroot/$dir
done
mount --bind /etc/resolv.conf work/chroot/etc/resolv.conf
#xhost +
#echo -ne "\033c"
#echo "Burada çalıştıracağınız komutlar düzenlenmiş iso içerisinde gelir."
#echo "Devam etmek için exit veya ctrl+d yapın."
chroot work/chroot bash || true
for dir in /run /proc /sys /dev/pts /dev ; do
    umount -lf -R work/chroot/$dir
done
umount --bind /etc/resolv.conf work/chroot/etc/resolv.conf
echo -ne "\033c"
mksquashfs work/chroot work/isowork/live/filesystem.squashfs -comp gzip -wildcards
cp -pf work/chroot/boot/initrd* work/isowork/live/
cp -pf work/chroot/boot/vmlinuz* work/isowork/live/
cp -pf work/chroot/boot/initrd* work/isowork/live/initrd.img
cp -pf work/chroot/boot/vmlinuz* work/isowork/live/vmlinuz
grub-mkrescue -o custom.iso work/isowork
################################################################


yukarıdaki scripti isoedit.sh isimli olarak kaydettim. scriptin bulunduğu dizine klasör oluşturup çalışmaya başlayacak. 

chmod 755 isoedit.sh

root olarak scripti çalıştırdım. editlemek istediğim iso gosterdim.

 ./isoedit.sh /data/Pardus21/download/Pardus-21.2-XFCE-amd64.iso


6 Şubat 2021 Cumartesi

Pardus Terminal için renkli scriptler yazma

 Merhabalar,

Linux dünyası .sh dosyası olmazsa olmazlarındandır. Peki Son kullanıcının kullanacağı bir script yazmak durumunda kaldıysanız, Terminal ekranını nasıl daha sevimli hale getirebiliriz.

Banner:

Tabiki ilk önce Banner kodu kullanabiliriz.  Google "ascii banner" yazdığınızda çok fazla site çıkar ilk çıkan 3 siteyi aşağıya ekledim. Buradan Banner üretebilirsiniz.

http://www.network-science.de/ascii/

https://www.kammerl.de/ascii/AsciiSignature.php

https://manytools.org/hacker-tools/ascii-banner/



Renkli İfadeler:

Sonrasında ise rekli ifadeler yazımızı güzelleştirecektir.

Kendim için hazırladığım kodu paylaşayım. Siz ondan bakarak birçok şey öğreneceğinize eminim.


Örnek Kod:

#!/bin/sh
KIRMIZI_FG=`tput setaf 1`
YESIL_FG=`tput setaf 2`
SARI_FG=`tput setaf 3`
MAVI_FG=`tput setaf 4`
MOR_FG=`tput setaf 5`
LILA_FG=`tput setaf 6`
KIRMIZI_BG=`tput setab 1`
YESIL_BG=`tput setab 2`
SARI_BG=`tput setab 3`
MAVI_BG=`tput setab 4`
MOR_BG=`tput setab 5`
LILA_BG=`tput setab 6`
RESET=`tput sgr0`
BOLD=`tput bold`
CIZ=`tput sgr 0 1`
echo """                      ___       _______    ___       _______  
                     /   \     |   ____|  /   \     |       \ 
                    /  ^  \    |  |__    /  ^  \    |  .--.  |
                   /  /_\  \   |   __|  /  /_\  \   |  |  |  |
                  /  _____  \  |  |    /  _____  \  |  '--'  |
                 /__/     \__\ |__|   /__/     \__\ |_______/ 
                                                              
                       ____    ____ .______   .__   __. 
                       \   \  /   / |   _  \  |  \ |  | 
                        \   \/   /  |  |_)  | |   \|  | 
                         \      /   |   ___/  |  .    | 
                          \    /    |  |      |  |\   | 
                           \__/     | _|      |__| \__| 
                                                        
########################################################################                                                                                    
#              ${BOLD}${MAVI_FG}AFAD VPN Uygulamasına Hoşgeldiniz!${RESET}                      #
########################################################################
################### ${LILA_FG}Giriş yapabilmeniz için;${RESET} ########################### 
-${LILA_FG}Adım 1${RESET} : Kullanıcı Adınızı girecekesiniz
-${LILA_FG}Adım 2${RESET} : Kullanıcı Şifrenizi gireceksiniz
########################################################################
***${YESIL_FG} ESP tunnel connected${RESET} *** Yazısını gördüğünüzde VPN bağlantınız aktif oldu. 
# Bu terminali VPN bağlantınız boyunca ${KIRMIZI_FG}${BOLD}'KAPATMAYIN'${RESET} yoksa bağlantınız kesilir.
# VPN bağlantınızı ${SARI_FG}sonlandırmak${RESET} için bu terminali kapatın
"""
sudo /opt/afad/openconnect/openconnect --protocol=gp m****.afad.gov.tr --authgroup=GW --servercert pin-sha256:g76Wf4Ae6Axba2I+7HgUf*************BInIwA4A= 


Ekran Görüntüsü:




Umarım faydalı olmuştur.








Pardus Google - Earth konum sorunu

 Merhabalar,

Pardus da kurduğunuz google-earth yazılımını açtığınızda  normal çalışıyor ama arama yapıp git dediğinizde sizi okyanusa götürüyorsa ve balon ile işaretli yere gidemiyorsanız bu makale tam size göre ...

Root yetkileri ile;

 earth_file1=$(less /opt/google/earth/pro/googleearth |grep -F LC_ALL | wc -l)

    if [ "$earth_file1" -lt "1" ] ; then
    sed  -i '7i export LC_ALL=en_US.UTF-8' /opt/google/earth/pro/googleearth
    sed  -i '7i export LANGUAGE="tr_TR.UTF-8"' /opt/google/earth/pro/googleearth
    else
    echo ok
    fi

 komutu çalıştırmanız sorunu çözecektir. 

/opt/google/earth/pro/googleearth dosyasının içine (7. satıra) ilgili ifadeleri eklerseniz locale sorununu çözecektir.

Not: google-earth yazılımını açtığınızda size bağlantı (ssl) hatası veriyorsa OS sertifika yüklemelisiniz. 

Pardus Sertifika Yükeleme

 Merhabalar,

Kurumsal bir yapıda çalışıyorsanız internet çıkışlarınızı kontrol altına almak için geçen tüm trafiği açıp içine bakıyordur. Bu durumda HTTPS bir siteye gittiğinizde gördüğünüz sitenin sertifikası değilde FW un sonradan kapattığı SSL sertifikası olur. FW sertifikası PC ler tanımadığı için güvenli değildir uyarısı verir. Ve bir çok uygulama , browser çalışmayacaktır. 

Windows ortamlarında domain ortamından .cer uzantılı sertifika tüm makinaları yüklenir. CER windowsun tercih ettiği bir uzantıdır. Linux ortamı ise .CRT tercih eder. Windowsda sertifikayı yüklemek için .cer uzantılı sertifikayı çift tıklar sisteme yükleyebiliriz. 

Peki linuxda (Pardus) nasıl yapabiliriz?

.CRT uzantılı bir dosyayı /usr/local/share/ca-certificates/     altına kopyalamamız gerekiyor. Sonrasında  update-ca-certificates    komutu ile ilgili dizindeki tüm sertifikaları sisteme yükler. Bu kadar basit. Peki neden windows gibi tıklamayla olmuyor sorusu ?  (Bende bilmiyorum.)

CER to CRT:

Linux bir PC de aşağıdaki komutlar ile çevirebilirsiniz. Elinizde CER sertifikasının türüne göre aşağıdaki 2 komuttan biri işinize yarayacaktır.

openssl x509 -inform DER -in /tmp/ORNEK.cer -out /tmp/ORNEK.crt openssl x509 -inform PEM -in /tmp/ORNEK.cer -out /tmp/ORNEK.crt


Sonuç:

Bu sertifika yükleyerek wget, apt-get, google-earth vs.. gibi bir çok komut rahat çalışabilir hale geldi. Tabi sadece browser ada yükleyebilirsiniz. Tercih size kalmış

cd /tmp && wget https://depo.afad.gov.tr/AFADK.crt && cp AFADK.crt /usr/local/share/ca-certificates/ && update-ca-certificates && echo sertifika-ok


24 Ocak 2021 Pazar

Deb paket oluşturma (afad-tema.deb)

 Merhabalar,

Kurumunuz veya kendiniz için basit deb paketleri oluşturmadan bahsedeceğim. Basit bir paket yapalım.

Paket Yapısı:

Paket adı olarak ben afad-tema seçiyorum. Bu paket adı ile bir klasör oluşturup, içine gerekli malzemeleri koyacağız.
Paketin için içinde "DEBIAN" isimli klasör zorunlu. İçinde aşağıda bahsettiğim şekilde uygulama bilgileri yer alıyor.
Diğer klasörler ise "/" muş gibi düşünüp koyduğunuz dosyalar, kurulacak makinanın dizinlerine kopyalanıyor. Örnek usr isimli klasör açtınız. Bu klasör altına share isimli klasör açtınız. Altına enes.txt isimli dosya koydunuz. Bu paket kurulursa, kurulan makinanın /user/share altına enes.txt dosyasını kopyalıyor.

cd /home
mkdir afad-tema
cd afad-tema
mkdir DEBIAN

afad-tema

  • DEBIAN
    • control(zorunlu)
    • md5sums(zorunlu)
    • postinst(opsiyonel)
    • preinst(opsiyonel)
    • prerm(opsiyonel)
    • postrm(opsiyonel)
  • /


control paketinizin bilgileri içeriyor. Ben script ile dolduruyorum bu bilgileri. Bakınca anlayacağınıza eminim.

md5sums paketinizin indirme sırasında bozulmuşmu kontrolu sağlayan hash dosyası. Script ile otomatik oluşur. 


Paket kurulurken 4 temel betik dosyası çalışır. Bu dosyalar DEBIAN/ klasörü içerisinde oluşturulur.

  • preinst paket kurulmadan önce çalışır. Paketiniz için oluşturulması gereken dosyalar ya da yapılması gereken kofigürasyonlar varsa burada yapılır.
  • postinst paket kurulduktan sonra çalışır, örneğin uygulamanız kurulduktan sonra servisi enable etmek isteyebilirsiniz.
  • prerm paket kurulmadan önce yapılması gereken işlemler. Paket silinirken içinden çıkan dosya ve dizinleri temizlemek ister. Fakat bu dizinlerde bunun dışında oluşturulanları bunları temizleyemez. Örneğin bu dosyalar paketkaldırılmadan silinebilir ya da çalışan ilgili servisler durdurulabilir.
  • postrm paket kaldırıldıktan sonra yapılmak istenen işlemler burada tanımlanır



Senaryomuz: 

Kurumunuzun arka fon masaüstü resmini yüklemeye, değiştirmeye yarayan bir paket yapalım.  Arka fon resimleri nerede bulunduğunu inceleyelim.
Varsayılan ayarlarda : "/user/share/images/desktop-base/desktop-background" dosyasındaki resim bize arkafonu ayarlıyor. Yani bu dosyayı değiştirirsek (güncellersek) arka fon resmi değiştir. Bu yüzden yukarıdaki formata uygun paket-adı mızın altına gerekli klasörleri oluşturup desktop-background isimli resmimizi atıyoruz. Ben kullanıcı isterse farklı renklede kurumsal resimlerde kullanabilsin diye 5-6 tane daha resim koydum.
Peki, paket kurumundan önce açılmış kullanıcılar arka fon resmini değiştirmiş ise (varsayılan ayarı değişmiş) onlarında resmini nasıl düzeltebiliriz onu araştırmamız lazım.
"/home/afad/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml"
Pardus da oturum açmış her kullanıcının kendi dizini altında ".config" adında ayar klasörü olduğunu gördüm. Yukarıdaki dosya bizim arka fon resim ayarının saklandığı yer olduğunu keşfettim. Nasıl keşfettiniz dersenin internetten araştırma , 1-2 saatlik emek , tecrübe ....
Bende aşağıdaki basit 2 komutu hazırladım. Bu komutlar var olan kullanıcıların ayarlarını düzeltmeye ayarıyor. Kullanıcılar logout-login olduğunda bu ayarlar devreye girecek.

vi /home/afad-tema/DEBIAN/postinst

Pardus custom image hazırlama

Not: bu yöntem eskide kaldı. yeni makalem var.

Merhabalar,

Kurumunuz için pardus kurduğunuzda tüm ayarları yapılmış, tüm istenilen programlar kurulmuş bir şekilde karşınıza gelmesini istemez misiniz?

Hadi size custom pardus isosu hazırlamayı göstereyim.

Öncelikli olarak pardus son sürüm iso sunu indiriyoruz. Ben bu makaleyi yazarken en son sürüm link:

wget https://indir.pardus.org.tr/ISO/Pardus19/Pardus-19.4-1-XFCE-amd64.iso

öncelikli olarak size iso içeriği hakkında bilgi vermek istiyorum



Live klasörü dışındaki diğer klasörler kurulum ekranlarını hazırlıyor. Bizim için önemli yer live klasörü. Zaten boyutuna da bakarsanız anlaşılıyor. Lice cd olarak da açılan yada kurduğumuzda diskimize yüklenen image aslında .squashfs klasörüdür. Yani gün sonunda bu dosyayı güncellemiş olacağız.

Pardusu bir PC ye kurup istediğimiz hale getirdikten sonra image haline alacağız. Ben kolaylık olsun diye sanal makine kullanıyorum. Hatta windowsdaki hyper-v bile olur.

İmage alma:

Ayarları yapılmış pardus makiye aşağıdaki komutlar ile temizleyip kapatıyoruz.

apt clean
rm -rf /tmp/*
history -w
history -c

Ayarları yapılmış pardus makiye kapatıp live iso ile açıyoruz. PC ye 2. disk takıyoruz. Sanal makine ise ben genelde 2. bir disk takıyorum. USB de takabilirsiniz ama boyutu en az 16 GB olsun. Live iso olaraka açtığım için hem PC nin kendi diski hem de 2. diski mount yapmamız lazım. Ben grafik ekrandan yapıyorum. Tabiki komut satırından da yapılabilir.

not: apt install squashfs-tools genisoimage xorriso rsync isolinux

Grafik ekran: başlat - Diskler - play tuşuna bas -- /media altına diskleri bağlayacak.

cd /media/afad
ls -alh
Bu Komut ile bağladığımız 2 diskin adını öğrenelim. Benimkiler disk1 ve disk2.

mksquashfs disk1/ disk2/filesystem.squashfs
printf $(du -sx --block-size=1 disk1/ | cut -f1) > disk2/filesystem.size

evet imagemizi squashfs olarak aldık. Komut mantığı mksquashfs komutu sonra image alınacak diski boşluk dosyanın oluşacağı dizin şeklinde.

Artık live iso olarak kalmamıza gerek kalmadı. İsterseniz kurulu pardusa dönebilirsiniz, isterseniz live ile devam edebilirsiniz.

Custom ise oluşturma:

İndirdiğimiz orjinal pardus isosunu bir klasöre açıp oluşturduğumuz squashfs dosyasını yer değiştirip tekrar iso haline getireceğiz.

apt install squashfs-tools genisoimage xorriso rsync isolinux

Orjinal iso açma:

orjinal pardus isosunun bulunduğu dizine gidelim:

cd /home/afad/indirilenler

xorriso -osirrox on -indev Pardus-19.4-XFCE-amd64.iso -extract / /media/afad/disk2/iso_orj

Custom squashfs yer değiştirme

Açtığımı dosylar içindeli live dizini altında filesystem.squashfs ve filesystem.size dosylarını değiştiriyoruz. Ayrıca kernel güncellemesi yaptıysanız benim gibi initrd ve vmlinuz dosyalarını yeri kurduğunuz pc nin /boot klasörü altındaki dosyalarla güncelliyoruz.

cp /media/afad/disk2/filesystem.squashfs /media/afad/disk2/iso_orj/live/filesystem.squashfs
cp /media/afad/disk2/filesystem.size /media/afad/disk2/iso_orj/live/filesystem.size

sudo cp /boot/vmlinuz* /media/afad/disk2/iso_orj/live/vmlinuz
sudo cp /boot/vmlinuz* /media/afad/disk2/iso_orj/live/
sudo cp /boot/initrd* /media/afad/disk2/iso_orj/live/initrd.img
sudo cp /boot/initrd* /media/afad/disk2/iso_orj/live/

Açılmış dosyaları tekrar iso yapma:

not: apt install squashfs-tools genisoimage xorriso rsync isolinux

cd /media/afad/disk2

xorriso -as mkisofs -R -r -J -joliet-long -l -cache-inodes -iso-level 3 -isohybrid-mbr /usr/lib/ISOLINUX/isohdpfx.bin -partition_offset 16 -A "Pardus" -p "live-build 1:20190311; https://debian-live.alioth.debian.org/live-build" -publisher "Pardus" -V "Pardus 19.4 Canli" --modification-date=2020110310114000 -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -eltorito-alt-boot  -e boot/grub/efi.img -no-emul-boot -isohybrid-gpt-basdat -isohybrid-apm-hfsplus -o afad-11012021.iso /media/afad/disk2/iso_orj

Yukarıdaki komut ile klasörümüz tekrar iso oldu. İşlem biraz uzun sürüyor.

basit anlatmaya çalışıyorum. Ayrıntı isteyen olursa yorum yazsın. Yorumda istenilen ayrıntıları ekleyeyim.

Pardus Depo Kurma- Repository

 Merhabalar,

    Bugün sizlere firmanıza veya kendinize özel pardus depo kurmayı elimden geldiğince anlatmak istiyorum. İnternetten bir çok farklı kaynaktan topladığım bilgiler kendi kurumumuz için yaptığımız depo sonrasında edindiğim bilgileri aktarmak , kendim içinde bir not defteri olmasını istiyorum. 

Çalıştığım kurum olan Afad bünyesinde 1000 den fazla pardus client var. Burada kullandığım meteryalleri sizlerle paylaşmaya çalışacağım. Bilgi paylaştıkca çoğalır. Sürekli geçen afad kelimesi de bir nevi reklam olacaktır. İçinde şifre veya keyleri tabiki değiştireceğim.

Orjinal depoların mirror şekilde değilde, daha çok kendinize ait paketlerin bulduğu bir depo şekilde oluşturacağız. Amacımız kendi paketlerimizi dağıtacağız bir depo kurmak.

Kaynak olarak yararlandığım siteler:

https://sulincix.github.io/sayfalar/html/debian-depo-olusturma.html

http://depo.pardus.org.tr/pardus/

Hazırlık:

Depomuzu kuracağımız sunucu için ben Pardus 19.4 kurudum.
Sonrasında paketleri güncelleyip, web servisi olarak apache2 kurdum.
apt update
apt upgrade
apt install apache2
apt install apt-ftparchive

Apache web server kuruduğumuzda herkesin bildiği gibi /var/www/html dizi web sayfasının bulunduğu yerdir. Buraya bir klasör oluşturak bu klasör altında depo oluşturmaya karar verdim.

cd /var/www/html
mkdir  afad

Afad klasörü altında benim oluşturduğum yapı aşağıdaki gibidir.

afad
  • dists
    • afad
      • Release
      • main
        • binary-amd64
          • Packages
          • Packages.gz
        • binary-i386
          • Packages
          • Packages.gz
      • contrib
      • non-free
  • pool
    • main
      • paket-adı
        • paket-adı_version_type.dep
      • afad-tema
          • afad-tema_21.01.11_amd64.deb
          • afad-tema_21.01.11_i386.deb
      • contrib
      • non-free


    dists: Depoda bulanan paketlerin bilgilerinin saklandığı yer. index gibi düşünebilirsiniz. Buradaki dosyaların çoğunu otomatik scriptler ile oluşturacağız.
    pool: paketlerimin bulunacağı yer. Paket isimlerinin formatına dikkat edelim. Ağaç yapısı size her şeyi anlatmıştır.

    main-contrib-non-free: Ağaç yapısında gösterdim ama ben sadece main yapısını kullanacağım.

    Deponun güvenli hale Getirmek

    Depomuzu eklediğimizde pardus tarafından güvenli olmadığı uyarısı almak istemiyorsak şifrelememiz gerekiyor. Bunun için kendimize bir tane ssl key üretelim.

    gpg --full-generate-key

    Bu komut ile key üretmiş olacağız. key üretirken verdiğimiz şifreyi unutmayım. Her depo güncellemesinde bizden o şifreyi isteyecek. Key üretim sonrası aşağıdaki komut ile ürettiğimiz keyleri görebiliriz.

    gpg --list-keys

    root@pardusdepo:/home/afad# gpg --list-keys
    /root/.gnupg/pubring.kbx
    ------------------------
    pub   rsa3072 2021-01-14 [SC]
          CA4459AD651EE6A98CA3CCF636D5BD119CB5E77E
    uid           [   son  derece   ] Afad Kurumsal (Afad Depo) <destek@afad.gov.tr>
    sub   rsa3072 2021-01-14 [E]

    Ürettiğimiz keyi  Release.key adında dışarı çıkartıyoruz.
    cd /var/www/html
    gpg --output Release.key --armor --export CA4459AD651EE6A98CA3CCF636D5BD119CB5E77E

    Depo scripti hazırlanmsı


    Depumuzu güncellerken bilgilerin otomatik girilmesi için bir metin belgesi hazırlıyoruz.
    cd /var/www/html/afad
    vi  release.conf