Dağıtıma özgü ISO oluşturmak için o dağıtımın paket sistemi kullanılır. Bu dokümanda anlatılan kly paket sistemi, önceki bölümde detaylıca açıklanmıştır.
Bu bölümde, kly paket sistemini kullanarak ISO oluşturma adımları basit ve anlaşılır şekilde verilecektir. Aşağıda payşlaşılan script ile hazırlanan iso /tmp/distro/distro.iso konumunda olacaktır. Sistemi oluşturan paketleri github.com/kendilinuxunuyap/kly-base-packages ve github.com/kendilinuxunuyap/kly-x11-packages konumundan indirerek oluşturmaktadır.
Not: Anlatılan yöntem genel Linux dağıtımlarının ISO oluşturma mantığına dayanır. Araçlar, dizinler ve komutlarda küçük farklılıklar olabilir, ancak iş akışı aynıdır.
Aşağıdaki scriptle oluşturulmuş iso https://github.com/kendilinuxunuyap/kly-x11-distro/releases/download/current/kly-x11-distro.iso adresinde bulunmaktadır.
kly Paket Sistemiyle ISO Oluşturma Scripti¶
#--------------------------------------------------------------------------------------------------------------------
#!/bin/bash
set -x
if which apt &>/dev/null && [[ -d /var/lib/dpkg && -d /etc/apt ]] ; then
apt-get update
echo "işlem başladı....."
apt install xorriso grub-pc-bin grub-efi mtools make python3 dosfstools e2fsprogs squashfs-tools \
python3-yaml gcc wget curl unzip xz-utils debootstrap git erofs-utils zstd -y
fi
apt-get install git devscripts equivs -y
#--------------------------------------------------------------------------------------------------------------------
rootfs="/tmp/distro/rootfs"
distro="/tmp/distro"
rm -rf $distro/iso
#rm -rf $rootfs
mkdir -p /tmp/distro/rootfs
mkdir -p $rootfs/bin
#mkdir -p distro/rootfs
#export PATH=/bbin:$PATH
cp busybox $rootfs/bin/busybox
cp kly $rootfs/bin/kly
cd $rootfs/bin/
ln -s busybox cpio
#busybox --install -s ./
cd $rootfs/
#cd distro/rootfs/
mkdir -p var run dev sys proc etc tmp/kly/kur
bash -c "echo '127.0.0.1 kly' >> $rootfs/etc/hosts"
bash -c "echo 'kly' > $rootfs/etc/hostname"
bash -c "echo 'nameserver 8.8.8.8' > $rootfs/etc/resolv.conf"
### system chroot bind/mount
for i in dev dev/pts proc sys; do mount -o bind /$i $rootfs/$i; done
### manuel kly-tools install
$rootfs/bin/busybox wget -O $rootfs/tmp/base-file-1.0.kly https://github.com/bpslinux/\
kly-temel-paketler/raw/refs/heads/master/base-file/base-file-1.0.kly 1>$rootfs/dev/null 2>$rootfs/dev/null
$rootfs/bin/busybox tar -xf $rootfs/tmp/base-file-1.0.kly -C $rootfs/tmp/kly/kur
$rootfs/bin/busybox tar -xf $rootfs/tmp/kly/kur/rootfs.tar.xz -C $rootfs
#paket adresi ekleniyor
$rootfs/bin/busybox mkdir -p $rootfs/etc/kly
echo "kendilinuxunuyap/kly-base-packages">$rootfs/etc/kly/sources.list
echo "kendilinuxunuyap/kly-x11-packages">>$rootfs/etc/kly/sources.list
### installing kly package in rootfs
$rootfs/bin/kly -u $rootfs
#**********************************************************************
echo root:x:0:0:root:/root:/bin/sh > $rootfs/etc/passwd
chmod 755 $rootfs/etc/passwd
#**********************************************************************
for paket in glibc readline ncurses bash openssl acl attr libcap libpcre2 gmp coreutils sqlite \
util-linux grep sed mpfr gawk findutils libgcc libcap-ng gzip xz-utils zstd bzip2 elfutils libselinux tar zlib \
brotli curl
do
$rootfs/bin/kly -ri $paket $rootfs
#chroot $rootfs /bin/kly -ri $paket;
done
#--------------------------------------------------------------------------------------------------------------------
# scriptin devamı
for paket in shadow file eudev cpio libsepol kmod audit libxcrypt libnsl libbsd libtirpc \
e2fsprogs dosfstools initramfs-tools libxml2 expat libmd libaio lvm2 popt icu iproute2 \
net-tools dhcp openrc rsync kbd kernel dialog live-boot live-config parted busybox nano grub \
efibootmgr efivar libssh openssh pam
do
#$rootfs/bin/kly -i $paket $rootfs
chroot $rootfs /bin/kly -ri $paket;
done
# burası x11 için olan paketlerdi. arasınsa ek paket varmı kontrol etmedim. edeceğim
for paket in xorg-server pixman libpciaccess libXau libXdmcp libXfont2 libxshmfence libdrm libxcvt libfontenc freetype \
libpng harfbuzz glib \
xterm libXft fontconfig libXext libXaw libXmu libXinerama libXpm libXt libX11 libICE libXrender libxcb libSM \
xf86-input-libinput xf86-input-vmmouse xf86-video-amdgpu xf86-video-ast xf86-video-ati xf86-video-dummy \
xf86-video-fbdev xf86-video-intel \
xf86-video-mga xf86-video-nouveau xf86-video-qxl xf86-video-r128 xf86-video-siliconmotion xf86-video-vboxvideo \
xf86-video-vesa xkbcomp libxkbfile libglvnd mesa xkeyboard-config libinput mtdev libevdev libwacom libgudev libffi \
xinit xcalc libXi openbox libXcursor libXfixes pango libXrandr fribidi xcb-util libthai libdatrie startup-notification \
dejavu libunwind dbus polkit elogind
do
chroot $rootfs /bin/kly -ri $paket;
done
### user add and passwd
chroot $rootfs echo -e "1\n1\n"|chroot $rootfs passwd root
chroot $rootfs useradd live -m -s /bin/sh -d /home/live
chroot $rootfs echo -e "live\nlive\n"|chroot $rootfs passwd live
for grp in users tty wheel cdrom audio dip video plugdev netdev; do
chroot $rootfs usermod -aG $grp live || true
done
### update-initrd
fname=$(basename $rootfs/boot/config*)
kversion=${fname:7}
mv $rootfs/boot/config* $rootfs/boot/config-$kversion
cp $rootfs/boot/config-$kversion $rootfs/etc/kernel-config
chroot $rootfs update-initramfs -u -k $kversion
#### system chroot umount
for dir in dev dev/pts proc sys ; do while umount -lf -R $rootfs/$dir 2>/dev/null ; do true; done done
#************************iso *********************************
mkdir -p $distro/iso
mkdir -p $distro/iso/boot
mkdir -p $distro/iso/boot/grub
mkdir -p $distro/iso/live || true
#### Copy kernel and initramfs (Debian/Devuan)
cp -pf $rootfs/boot/initrd.img-* $distro/iso/boot/initrd.img
cp -pf $rootfs/boot/vmlinuz-* $distro/iso/boot/vmlinuz
rm -rf $rootfs/boot
#### Create squashfs
mksquashfs $rootfs $distro/filesystem.squashfs -comp xz -wildcards
mv $distro/filesystem.squashfs $distro/iso/live/filesystem.squashfs
# grub.cfg dosyasını yaz
cat << EOF > "$distro/iso/boot/grub/grub.cfg"
set timeout=6; set default=1; terminal_input console;
menuentry "Canli(live) GNU/Linux 64-bit" --class liveiso {
linux /boot/vmlinuz boot=live init=/sbin/openrc-init net.ifnames=0 \
biosdevname=0
initrd /boot/initrd.img
}
menuentry "Kur GNU/Linux 64-bit" --class liveiso {
linux /boot/vmlinuz boot=live init=/bin/kur quiet
initrd /boot/initrd.img
}
EOF
#iso oluşturuluyor
grub-mkrescue $distro/iso/ -o $distro/distro.iso
Kaynaklar:
- https://www.subrat.info/build-kernel-and-userspace/ - 08/07/2025
- https://medium.com/@chienhaotan/compiling-and-running-a-minimal-kernel-with-busybox-bfc45a991017 - 08/07/2025
- https://wiki.archlinux.org/title/GRUB_(T%C3%BCrk%C3%A7e) - 08/07/2025
- https://chatgpt.com/share/6875084c-6050-8012-9229-a37b47351aa2 - 14/07/2025