Bu dokümanda debian sid kullanarak özelleşmiş bir live iso yapımı anlatılacaktır.
Debian sid yerine stable kullanmak isterseniz yapmanız gereken dokümanda sid yerine stable yazmaktır.
Not: Bu dokümanla ilgili soru ve önerileriniz için : https://t.me/iso_calismalari
Not: Biraz mizah içerir. Şimdiden ALLAH sabır versin :D
Terim | Anlamı |
---|---|
chroot | Oluşturulacak live isonun taslağıdır. içerisine chroot sid-chroot komutu ile içerisine girebiliriz. çıkmak için ise exit komutu kullanılmalıdır. |
squashfs | Sıkıştırılmış haldeki kök dizin dosyasıdır. Oluşturulması donanıma bağlı olarak uzun sürmektedir. Debian tabanlı dağıtımlarda gzip formatında sıkıştırma önerilir. |
iso | Kurulum medyası dosyasıdır. Bu dosya son üründür ve bunu yayınlayabilirsiniz. |
live | Kurulum yapmadan çalışan sisteme live adı verilir. |
17g | Dağıtımdan bağımsız canlı sistem kurulum aracıdır. |
☭ apt-get install debootstrap xorriso squashfs-tools mtools grub-pc-bin grub-efi-ia32-bin grub-efi
Öncelikle kurulum aracını deb paketi yapmak için gerekli olan paketleri kuralım:
☭ apt-get install devscripts
Daha sonra kaynak kodu bir dizine çekip deb paketi haline getirelim.
☭ git clone https://gitlab.com/ggggggggggggggggg/17g ☭ cd 17g ☭ mk-build-deps --install ☭ debuild -us -uc -b
Bir üst dizinde kurulum aracına ait deb paketi oluşacakdır.
☭ mkdir sid-chroot ☭ debootstrap --arch=amd64 --no-merged-usr sid sid-chroot https://deb.debian.org/debian
Eğer debian yerine devuan kullanmak istiyorsanız depo adresi olarak https://pkgmaster.devuan.org/merged koymalısınız.
Eğer "Unpacking the base system..." sırasında sorun yaşıyorsanız chroot dizininin sahibini root olarak değiştirip tekrar denemenizi öneriririz.
☭ chown root sid-chroot
☭ echo "APT::Sandbox::User root;" > sid-chroot/etc/apt/apt.conf.d/99sandboxroot
Eğer sıfırdan debootstrap kullanarak chroot oluşturmak yerine mevcut bir debian tabanlı isoyu açmak istiyorsak aşağıdaki adımları uygulayın.
☭ mount -o loop debian-live-orijinal.iso /mnt
☭ unsquashfs /mnt/live/filesystem.squashfs ☭ mv squashfs-root sid-chroot
☭ umount -f /mnt
☭ for i in dev dev/pts proc sys; do mount -o bind /$i sid-chroot/$i; done
Mevcut bir iso dosyasını düzenleyenler Bu aşamayı atlayabilirler.
☭ chroot sid-chroot /bin/bash ☭ echo 'deb https://deb.debian.org/debian sid main contrib non-free' > /etc/apt/sources.list ☭ apt-get update
☭ apt-get install linux-headers-amd64 linux-image-amd64
Kernel olarak depodaki kernel yerine liquorix kernelini de kurabilirsiniz. (isteğe bağlı)
☭ bash <(https://liquorix.net/add-liquorix-repo.sh) ☭ apt-get install linux-image-liquorix-amd64 linux-headers-liquorix-amd64
☭ apt-get install grub-pc-bin grub-efi-ia32-bin grub-efi
☭ apt-get install live-config live-boot
# /etc/apt/apt.conf.d/01norecommend adında bir dosya açın ve içine şunu yazın APT::Install-Recommends "0"; APT::Install-Suggests "0";
# /etc/apt/apt.conf.d/02antibloat adında dosya açın ve içine şunu yazın DPkg::Post-Invoke {"rm -rf /usr/share/locale || true";}; DPkg::Post-Invoke {"rm -rf /usr/share/man || true";}; DPkg::Post-Invoke {"rm -rf /usr/share/help || true";}; DPkg::Post-Invoke {"rm -rf /usr/share/doc || true";}; DPkg::Post-Invoke {"rm -rf /usr/share/info || true";};
PRETTY_NAME="Custom debian (sid)" NAME="CUSTOM" VERSION_ID="1" VERSION="1 (sid)" ID=customdebian ID_LIKE=debian HOME_URL="https://www.example.com/" SUPPORT_URL="https://forums.example.com/" BUG_REPORT_URL="https://example.com/issues/" PRIVACY_POLICY_URL="https://www.example.com/privacy/" VERSION_CODENAME=custom DEBIAN_CODENAME=sid
DISTRIB_ID=CustomDebian DISTRIB_RELEASE=1 DISTRIB_CODENAME=sid DISTRIB_DESCRIPTION="Custom Debian sid"
☭ apt-get install xorg xinit ☭ apt-get install lightdm # giriş ekranı olarak lightdm yerine istediğinizi kurabilirsiniz.
Masaüstü | Komut |
---|---|
xfce | apt-get install xfce4 |
lxde | apt-get install lxde |
cinnamon | apt-get install cinnamon |
plasma | apt-get install kde-standard |
gnome | apt-get install gnome-core |
mate | apt-get install mate-desktop-environment-core |
budgie | apt-get install budgie-desktop |
Not: xfce, lxde, mate gibi bazı masaüstülerindeki ağ bağlantısı aracı için network-manager-gnome paketini kurmalısınız.
Bu aşamada kurulu gelmesini istediğiniz başka paketler varsa onları da kurabilirsiniz.
☭ apt-get install bluez-firmware firmware-amd-graphics firmware-atheros \ firmware-b43-installer firmware-b43legacy-installer firmware-bnx2 \ firmware-bnx2x firmware-brcm80211 firmware-cavium firmware-intel-sound \ firmware-intelwimax firmware-ipw2x00 firmware-ivtv firmware-iwlwifi \ firmware-libertas firmware-linux firmware-linux-free firmware-linux-nonfree \ firmware-misc-nonfree firmware-myricom firmware-netxen firmware-qlogic \ firmware-ralink firmware-realtek firmware-samsung firmware-siano \ firmware-ti-connectivity firmware-zd1211 zd1211-firmware
Burada dikkat etmezin gerekek nokta ev dizinindeki bütün dosyaları olduğu gibi kopyalarsanız açık olan kullanıcı hesabı bilgileri de dahil edileceği için tehlikeli olabilir. Bu dosyaları tek tek kontrol ederek koymanızı şiddetle tavsiye ederim.
Yapmış olduğunuz duvar kağıdı simge teması gibi özelleştirmeler iso içerisinde de aynı konumda bulunmalıdır. Bu sebeple sadece iso içerisindeki görselleri ve temaları kullanmalısınız.
☭ dpkg -i /tmp/17g-installer.deb # dosya adını uygun şekilde yazınız. ☭ apt-get install -f # eksik bağımlılıkları tamamlaması için.
☭ apt-get install network-manager-gnome gvfs-backends pavucontrol chromium vlc
☭ umount -lf -R sid-chroot/* 2>/dev/null
Squashfs yapmadan önce chroot içerisinde temizlik yapmak gerekebilir. Zorunlu değildir fakat yaptığınız zaman squashfs ve iso boyutunu küçültmektedir.
☭ chroot sid-chroot apt-get autoremove # boşta kalan paketleri temizler ☭ chroot sid-chroot apt-get clean # apt önbelleğini temizler ☭ rm -f sid-chroot/root/.bash_history # iso yaparken oluşturduğunuz historyleri temizler ☭ rm -rf sid-chroot/var/lib/apt/lists/* # index dosyalarını temizler ☭ find sid-chroot/var/log/ -type f | xargs rm -f # logları siler
Not: -comp parametresinden sonra xz veya gzip kullanabiliriz. xz kullanırsak daha yüksek oranda sıkıştırır fakat kurulum daha uzun sürer. gzip kullanırsak iso boyutu daha büyük olur fakat daha hızlı kurar. Debianda varsayılan sıkıştırma formatı xz olmasına ramen ben sizlere gzip kullanmanızı öneririm.
Not: Ubuntu tabanında live dizini yerine casper dizini blunmaktadır.
☭ mkdir isowork ☭ mksquashfs sid-chroot filesystem.squashfs -comp gzip -wildcards ☭ mkdir -p isowork/live ☭ mv filesystem.squashfs isowork/live/filesystem.squashfs
☭ ls sid-chroot/boot/ # dosyalarımızın adını öğrenmek için config-5.7.0-1-amd64 grub initrd.img-5.7.0-1-amd64 System.map-5.7.0-1-amd64 vmlinuz-5.7.0-1-amd64 ☭ cp -pf sid-chroot/boot/initrd.img-5.7.0-1-amd64 isowork/live/initrd.img ☭ cp -pf sid-chroot/boot/vmlinuz-5.7.0-1-amd64 isowork/live/vmlinuz
☭ mkdir -p isowork/boot/grub/ ☭ echo 'insmod all_video' > isowork/boot/grub/grub.cfg ☭ echo 'menuentry "Start Debian 64-bit" --class debian {' >> isowork/boot/grub/grub.cfg ☭ echo ' linux /live/vmlinuz boot=live live-config live-media-path=/live --' >> isowork/boot/grub/grub.cfg ☭ echo ' initrd /live/initrd.img' >> isowork/boot/grub/grub.cfg ☭ echo '}' >> isowork/boot/grub/grub.cfg
Burada linux ile başlayan satırın sonuna ekleyeceğimiz ek ayarlar ile sistemin dilini ve klavye düzeni gibi şeyleri ayarlayabilirsiniz. Aşağıda Bu parametreler ve anlamları verilmiştir.
Örnek parametre | Anlamı | Örnek parametre | Anlamı |
---|---|---|---|
timezone=Europe/Istanbul | Zaman dilimi ayarı | locales=tr_TR.UTF-8 | Dil ayarı |
keyboard-layouts=tr | Klavye ayarı | username=debian | Kullanıcı adı ayarı |
hostname=live | Makina adı ayarı | user-fullname=DebianLive | Kullanıcı gözüken adı ayarı |
quiet | Açılışta yazı basmaz | splash | Varsa açılış animasyonunu gösterir. |
keyboard-variants=f | Klavye varyantı ayarı | nomodeset | Uyumluluk modu ayarı |
☭ tree isowork isowork/ ├── boot │ └── grub │ └── grub.cfg └── live ├── filesystem.squashfs ├── initrd.img └── vmlinuz
☭ grub-mkrescue isowork -o debian-live.iso
Eğer paketlediğimiz isoda bir şeyleri eksik yaptığımızı düşünüyorsak veya birkaç ekleme daha yapmak istiyorsak Sırası ile şunları yapmalıyız.
☭ for i in dev dev/pts proc sys; do mount -o bind /$i sid-chroot/$i; done
☭ chroot sid-chroot /bin/bash
☭ umount -lf -R sid-chroot/* 2>/dev/null
☭ mksquashfs sid-chroot filesystem.squashfs -comp gzip -wildcards ☭ rm -f isowork/live/filesystem.squashfs ☭ mv filesystem.squashfs isowork/live/filesystem.squashfs
☭ rm -f isowork/live/initrd.img isowork/live/vmlinuz ☭ cp -pf sid-chroot/boot/initrd.img-5.7.0-1-amd64 isowork/live/initrd.img ☭ cp -pf sid-chroot/boot/vmlinuz-5.7.0-1-amd64 isowork/live/vmlinuz
☭ mv debian-live.iso debian-live-eski.iso ☭ grub-mkrescue isowork -o debian-live.iso