http://gitlab.fjfi.cvut.cz/culikzde/uop-2022
Interfacing the PC: Using Interrupts
http://wearcam.org/seatsale/programs/www.beyondlogic.org/interrupts/interupt.htm
The PC's keyboard
http://wearcam.org/seatsale/programs/www.beyondlogic.org/keyboard/keybrd.htm
Parallel Port
http://wearcam.org/seatsale/programs/www.beyondlogic.org/spp/parallel.htm
Serial RS232 Port
http://wearcam.org/seatsale/programs/www.beyondlogic.org/serial/serial.htm
http://download-mirror.savannah.gnu.org/releases/pgubook/ProgrammingGroundUp-1-0-lettersize.pdf
Assembly Language (video)
https://www.youtube.com/watch?v=rxsBghsrvpI&list=PLKK11Ligqitg9MOX3-0tFT1Rmh3uJp7kA \\
https://www.youtube.com/watch?v=Dh7GQ_joeE4
Cuda (video)
https://www.youtube.com/watch?v=kzXjRFL-gjo&list=PLKK11Ligqititws0ZOoGk3SW-TZCar4dK
Write your own Operating System
https://www.youtube.com/playlist?list=PLHh55M_Kq4OApWScZyPl5HhgsTJS9MZ6M \\
https://github.com/AlgorithMan-de/wyoos
======Emulátory======
http://bellard.org/jslinux/
http://bellard.org/tinyemu/
jor1k: OpenRISC OR1K Javascript Emulator https://s-macke.github.io/jor1k
======FPGA======
Fpga4Student https://www.fpga4student.com/2017/04/verilog-code-for-16-bit-risc-processor.html
Fomu - ICE40 FPGA Development Board https://www.adafruit.com/product/4332 https://github.com/skordal/potato/tree/master/src
FemtoRV - https://github.com/BrunoLevy/learn-fpga/blob/master/FemtoRV/TUTORIALS/FROM_BLINKER_TO_RISCV/README.md
Quark - https://github.com/BrunoLevy/learn-fpga/blob/master/FemtoRV/RTL/PROCESSOR/femtorv32_quark.v
Float Add, Mul - https://github.com/BrunoLevy/learn-fpga/blob/master/FemtoRV/RTL/PROCESSOR/petitbateau.v#L397
Nanland RISC-V https://github.com/Mecrisp/Nandland-RISC-V
FleaFPGA Ohm - Next186, NextZ80 - https://github.com/Basman74/Next186/blob/master/Next186_SoC_Diamond_Project.zip
GHDL - https://ghdl.github.io/ghdl/
Verilator - https://www.veripool.org/verilator/
RISC-V Verilator model - https://github.com/aignacio/riscv_verilator_model
RPU - Basic RISC-V CPU implementation in VHDL - https://github.com/Domipheus/RPU
Designing a CPU in VHDL - https://domipheus.com/blog/rpu-series-quick-links
Fpga4Fun - Ethernet - https://www.fpga4fun.com/10BASE-T0.html https://www.fpga4fun.com/10BASE-T1.html ( RaspberiPi https://github.com/osnr/rpi-bitbang-ethernet/blob/master/README.md )
USB https://xess.com/projects/fpga-usb-v2-project/
Fomu, ValentyUSB https://github.com/im-tomu/valentyusb
Qomu https://workshop.fomu.im/en/latest/renode-verilator.html
QtRvSim VHDL https://gitlab.fel.cvut.cz/b4m35pap/rvapo-vhdl/-/tree/main/rvapo/core/logic
RudoIV, RiscV implementation https://github.com/bobbl/rudolv
BiRISC-V, RiscV implementation https://github.com/ultraembedded/biriscv
Niklaus Wirth: Risc5 https://people.inf.ethz.ch/wirth/Lola/index.html
====== VexRiscv ======
VexRiscv https://github.com/SpinalHDL/VexRiscv
NaxRisc https://github.com/SpinalHDL/NaxRiscv#running-verilator-simulation
https://github.com/litex-hub/zephyr-on-litex-vexriscv
https://github.com/litex-hub/linux-on-litex-vexriscv
sbt https://repo.scala-sbt.org/scalasbt/rpm
https://www.controlpaths.com/2022/03/28/running-linux-on-a-litex-soc/
https://antmicro.com/blog/2020/05/multicore-vex-in-litex
https://www.luffca.com/tag/vexriscv
https://github.com/SpinalHDL/NaxRiscv
dnf install dtc libevent-devel json-c-devel zlib-devel
dnf install verilator gcc-c++-riscv64-linux-gnu scala
https://github.com/litex-hub/linux-on-litex-vexriscv/files/8331338/linux_2022_03_23.zip
mkdir litex
cd latex
wget https://raw.githubusercontent.com/enjoy-digital/litex/master/litex_setup.py
chmod +x litex_setup.py
./litex_setup.py --init --install --user
curl -L https://www.scala-sbt.org/sbt-rpm.repo > sbt-rpm.repo
sudo mv sbt-rpm.repo /etc/yum.repos.d/
sudo yum install sbt
cd linux-on-litex-vexriscv
./sim.py
======FPGA Poznámky======
CPU 0 LLVM http://jonathan2251.github.io/lbd/TutorialLLVMBackendCpu0.pdf
AES 256 FPGA https://cryptography.gmu.edu/athena/sources/Cryptographic_Engineering_Chapter_10.pdf
Elliptic Curve FPGA https://www.esat.kuleuven.be/cosic/publications/article-2661.pdf
https://www.mikekohn.net/micro/riscv_fpga.php
======Debuggers======
https://sourceware.org/gdb/current/onlinedocs/gdb.html/File-Transfer.html
https://sourceware.org/gdb/current/onlinedocs/gdb.html/Basic-Python.html
https://stackoverflow.com/questions/4792483/how-to-import-gdb-in-python
https://github.com/bminor/binutils-gdb/blob/master/gdb/python/python.c#L2589
https://sourceware.org/gdb/wiki/PythonGdbTutorial
gdbserver host:2345 executable
gdb
target remote host:2345
remote get remote_file local_file
remote put local_file remote_file
https://lldb.llvm.org/use/remote.html get-file put-file
https://lldb.llvm.org/python_api/lldb.SBPlatform.html
https://lldb.llvm.org/python_api/lldb.SBPlatformShellCommand.html
======Poznámky======
http://www.codeproject.com/Articles/45788/The-Real-Protected-Long-mode-assembly-tutorial-for
http://czak.pl/2020/04/09/three-levels-of-qemu-graphics.html
http://github.com/rochus-keller/LeanQt
http://www.ibiblio.org/pub/Linux/docs/HOWTO/Large-Disk-HOWTO
For large IDE disks (over 137 GB): make sure your kernel is 2.4.19/2.5.3 or later.
======Mini OS======
https://github.com/klange/toaruos/releases
https://github.com/ghaiklor/ghaiklor-os-gcc
======Raspberry======
http://github.com/bztsrc/raspi3-tutorial
https://github.com/isometimes/rpi4-osdev
http://s-matyukevich.github.io/raspberry-pi-os
http://s-matyukevich.github.io/raspberry-pi-os/docs/lesson06/rpi-os.html
Ultibo https://ultibo.org/
======NVidia======
OpenCL Tutorial https://cnugteren.github.io/tutorial/pages/page2.html
Gdev: Open-Source GPGPU Runtime and Driver http://github.com/shinpei0208/gdev
NVidia driver https://download.nvidia.com/XFree86/Linux-x86_64/515.43.04/README/supportedchips.html
NVidia PCI https://pci-ids.ucw.cz/read/PC/10de
http://jlk.fjfi.cvut.cz
======Realtek 8125======
/etc/default/grub
GRUB_DISABLE_OS_PROBER=true
/etc/apt/sources.list
deb [allow-insecure=yes] file:///mnt/other/debian/ buster main contrib
/etc/apt/apt.conf.d/...
Acquire::AllowInsecureRepositories "true";
https://packages.debian.org/bookworm/r8125-dkms
https://packages.debian.org/bookworm/all/r8125-dkms/download
======QEMU======
=====Debian Arm64=====
qemu-system-aarch64 \
-M virt \
-cpu cortex-a72 \
-m 1G \
-kernel kernel \
-initrd initrd \
-device virtio-blk-device,drive=hd \
-drive file=image.qcow2,if=none,id=hd \
-append "root=LABEL=rootfs" \
-device virtio-net-device,netdev=net \
-netdev user,id=net,hostfwd=tcp::2223-:22 \
-device virtio-vga \
-device virtio-keyboard \
-device virtio-mouse
https://people.debian.org/~gio/dqib/
=====Debian RISC-V=====
qemu-system-riscv64 \
-M virt \
-cpu rv64 \
-m 1G \
-kernel kernel \
-initrd initrd \
-device virtio-blk-device,drive=hd \
-drive file=image.qcow2,if=none,id=hd \
-append "root=LABEL=rootfs" \
-device virtio-net-device,netdev=net \
-netdev user,id=net,hostfwd=tcp::2222-:22 \
-device virtio-vga \
-device virtio-keyboard \
-device virtio-mouse
http://colatkinson.site/linux/riscv/2021/01/27/riscv-qemu/
https://people.debian.org/~gio/dqib/
=====Fedora Arm64=====
qemu-system-aarch64 \
-M virt \
-cpu cortex-a72 \
-smp 4 \
-m 4G \
-device virtio-vga \
-kernel vmlinuz \
-initrd initrd.img \
-append "console=ttyAMA root=live:CDLABEL=Fedora-WS-Live-35-1-2" \
-cdrom Fedora-Workstation-Live-aarch64-35-1.2.iso \
-boot d \
-device virtio-keyboard \
-device virtio-mouse \
-netdev user,id=net0,hostfwd=tcp::5022-:22 \
-device virtio-net-device,netdev=net0 \
-no-reboot
http://mirror.karneval.cz/pub/linux/fedora/linux/releases/35/Everything/aarch64/iso/
=====HaikuOS RISC-V=====
qemu-system-riscv64 \
-M virt \
-m 1G \
-device ati-vga \
-kernel u-boot.bin \
-drive file=haiku-master-hrev55697-riscv64-mmc.image,format=raw,if=virtio \
-usb -device usb-ehci,id=echi \
-device usb-kbd \
-device usb-tablet
http://www.haiku-os.org/blog/kallisti5/2021-11-07_booting_our_risc-v_images/
http://discuss.haiku-os.org/t/my-haiku-risc-v-port-progress
vgabios-ati.bin from debian package seabios_1.14.0-2_all.deb
=====Raspbian Arm32=====
qemu-system-arm \
-M raspi2 \
-cpu arm1176 \
-smp 4 \
-m 1G \
-append "rw earlyprintk loglevel=8 console=ttyAMA0,115200 dwc_otg.lpm_enable=0 root=/dev/mmcblk0p2" \
-dtb bcm2709-rpi-2-b.dtb \
-sd 2016-05-27-raspbian-jessie.img \
-kernel kernel7.img
https://downloads.raspberrypi.org/raspbian/images/
(Rasbian 7 Wheezy nestartuje, je nezbytne pouzit kernel specielne urceny pro qemu)
=====RaspiOS Arm64=====
IMG=2021-10-30-raspios-bullseye-arm64.img
CMD="console=ttyAMA0 root=/dev/mmcblk0p2 rw rootwait rootfstype=ext4"
qemu-system-aarch64 \
-M raspi3 \
-m 1024 \
-kernel kernel8.img \
-dtb bcm2710-rpi-3-b.dtb \
-drive file=$IMG,format=raw,if=sd \
-append "$CMD"
http://downloads.raspberrypi.org/raspios_arm64/images/
qemu-img resize image_file 4G
fdisk -l image_file
mount -r image_file directory -o offset=`echo 8192*512 | bc`
======Cuda======
http://en.wikipedia.org/wiki/CUDA
Cuda 8.0, compute capability 2.0 – 6.x (Fermi, Kepler, Maxwell, Pascal) (VS 2010 .. 2015)
Cuda 9.0, compute capability 3.0 – 7.0 (Kepler, Maxwell, Pascal, Volta)
Cuda 10.2, compute capability 3.0 – 7.5 (Kepler, Maxwell, Pascal, Volta, Turing) (VS 2012 ..2019)
Cuda 11.0, compute capability 3.5 – 8.0 (Kepler (in part), Maxwell, Pascal, Volta, Turing, ...)
Cuda 12.0, compute capability 5.0 – 9.0 (Maxwell, Pascal, Volta, Turing, ...)
GT 460, GF104, compute capability 2.1, Cuda 8.0, NVidia Driver 390, GCC 6
GT 640, GK107, compute capability 3.0, Cuda 10.2, NVidia Driver 470, GCC 8
GT 730, GK208B, compute capability 3.5, Cuda 10.2, Cuda 11.2, NVidia Driver 470
===== Arch Linux Cuda 10 =====
pacman -S --needed base-devel
pacman -S git
git clone https://aur.archlinux.org/yay.git
edit /etc/makepkg.conf ... MAKEFLAGS="-j4"
cd yay ; makepkg -si
yay gcc8
yay cuda-10.2
yay nvidia-470xx-dkms
remove current nvidia drivers
pacman -R nvidia nvidia-utils opencl-nvidia
install old nvidia drivers and cuda
pacman -U nvidia-470xx-dkms-470.86-2-x86_64.pkg.tar.zst nvidia-470xx-utils-470.86-2-x86_64.pkg.tar.zst opencl-nvidia-470xx-470.86-2-x86_64.pkg.tar.zst
pacman -U cuda-10.2-10.2.89-3-x86_64.pkg.tar.zst
disable nouveau
file /modprobe/nouveau
blacklist nouveau
===== Arch Linux Cuda 8 =====
https://jlk.fjfi.cvut.cz/arch/repo/README.html
pacman -S nvidia-470xx-dkms
https://wiki.archlinux.org/title/unofficial_user_repositories#arch4edu
pacman -S gcc8 (qt4)
edit /etc/makepkg.conf ... MAKEFLAGS="-j4"
cd yay ; makepkg -si
yay cuda-8.0
=====Debian 10 Cuda 9=====
===Install===
menuentry "Install Debian 10 (64-bit)" {
linux /debian10/gtk/vmlinuz vga=788
initrd /debian10/gtk/initrd.gz
# vmlinuz and initrd.gz from ftp://.../dists/Debian10.12/main/installer-amd64/current/images/hd-media/gtk
# iso image in root directory https://cdimage.debian.org/mirror/cdimage/archive/10.12.0/amd64/iso-dvd/
# linux /debian10/gtk/linux vga=788
# initrd /debian10/gtk/initrd.gz
# linux and initrd.gz from ftp://.../dists/Debian10.9/main/installer-amd64/current/images/netboot/gtk/debian-installer/amd64
}
debian-10.12.0-amd64-DVD-1.iso do kořenového adresáře nebo do adresáře "první úrovně"
===Clone===
# dnf install partclone
# umount /mnt/disk9
partclone.ext4 -c -s /dev/sda9 -o debian-10.12-fresh-inst.img -L clone.log -x 'gzip -c -9'
===Boot from btrfs===
menuentry "Debian 10 Buster" {
set root=($sda,15)
set dev="/dev/sda15"
set vol="/debian10-a"
linux $vol/vmlinuz root=$dev rootflags=subvol=$vol ro quiet
initrd $vol/initrd.img
}
/etc/fstab
dev/sda15 btrfs defaults,subvol=/debian10-a 0 0
===Config===
# Resume=none
mcedit /etc/initramfs-tools/conf.d/resume
update-initramfs -u
/etc/apt/apt.conf.d/...
APT::Keep-Downloaded-Packages "true";
===Cuda===
apt-get install nvidia-driver nvidia-cuda-toolkit freeglut3-dev
apt-get install mc qtcreator kdevelop python3-pyqt5
Mandelbrot
apt-get install freeglut3-dev
Makefile
CUDA_PATH ?= /usr/
SMS ?= 30
GLPATH=/usr/lib make
===== Slax 9 Cuda 8 =====
menuentry "Slax 32-bit (Fresh start)" {
linux /slax32/boot/vmlinuz from=/slax32/ vga=normal load_ramdisk=1 prompt_ramdisk=0 rw printk.time=0
initrd /slax32/boot/initrfs.img
# slax.flags=automount
}
menuentry "Slax 64-bit (Persistent changes)" {
linux /slax64/boot/vmlinuz from=/slax64/ vga=normal load_ramdisk=1 prompt_ramdisk=0 rw printk.time=0 slax.flags=perch
initrd /slax64/boot/initrfs.img
}
menuentry "Slax 64-bit (Fresh start)" {
linux /slax64/boot/vmlinuz from=/slax64/ vga=normal load_ramdisk=1 prompt_ramdisk=0 rw printk.time=0
initrd /slax64/boot/initrfs.img
}
menuentry "Slax 64-bit (Copy to RAM)" {
linux /slax64/boot/vmlinuz from=/slax64/ vga=normal load_ramdisk=1 prompt_ramdisk=0 rw printk.time=0 slax.flags=toram
initrd /slax64/boot/initrfs.img
}
menuentry "Slax 11 64-bit (Copy to RAM)" {
linux /slax11_64/boot/vmlinuz from=/slax11_64/ vga=normal load_ramdisk=1 prompt_ramdisk=0 rw printk.time=0 consoleblank=0 slax.flags=toram
initrd /slax11_64/boot/initrfs.img
}
https://www.slax.org/starting.php
https://www.slax.org/customize.php
====modprobe.blacklist=nouveau====
menuentry "Slax 64-bit (Mini)" {
linux /slax64-mini/boot/vmlinuz from=/slax64-mini/ vga=normal load_ramdisk=1 prompt_ramdisk=0 rw printk.time=0 slax.flags=automount modprobe.blacklist=nouveau
initrd /slax64-mini/boot/initrfs.img
}
boot/initrfs.img
boot/vmlinuz
01-core.sb
01-firmware.sb
==== NVidia Driver ===
slax-64bit-9.9.0.iso uses kernel linux-image-4.9.0-9-amd64_4.9.168-1_amd64.deb
But repository contains linux-headers-4.9.0-19 **(19, not 9)**
** start installation nvidia-driver with original Slax /etc/apt/sources.list **
apt install nvidia-driver
apt remove linux-headers-4.9.0-19-amd64
apt remove linux-headers-4.9.0-19-common
====Install linux headers====
=== First variant - change to 4.9.0-9 /etc/apt/sources.list ===
# deb http://deb.debian.org/debian/ stretch main contrib non-free
# deb http://deb.debian.org/debian/ stretch-updates main contrib non-free
# deb http://security.debian.org/debian-security stretch/updates main contrib non-free
deb http://snapshot.debian.org/archive/debian/20190501T041322Z stretch main contrib non-free
deb http://snapshot.debian.org/archive/debian/20190501T041322Z stretch-updates main contrib non-free
deb http://snapshot.debian.org/archive/debian-security/20190501T041322Z stretch/updates main contrib non-free
# deb-src http://deb.debian.org/debian/ stretch main contrib non-free
/etc/apt/apt.conf.d/80no_time_check
Acquire::Check-Valid-Until "0";
** install old linux headers 4.8.0-9 , not old nvidia-driver **
apt update
apt install linux-headers-4.9.0-9-amd64
=== Second variant - Debian CD/DVD ===
https://cdimage.debian.org/mirror/cdimage/archive/9.9.0/amd64/list-dvd/
debian-9.9.0-amd64-DVD-1
linux-headers-4.9.0-9-common_4.9.168-1_all.deb
linux-headers-4.9.0-9-amd64_4.9.168-1_amd64.deb
https://ftp.cae.tntech.edu/debian-cd/dvd/
=== Third variant - snapshot.debian.org ===
http://snapshot.debian.org/archive/debian/20190501T041322Z/pool/main/l/linux/linux-headers-4.9.0-9-amd64_4.9.168-1_amd64.deb
http://snapshot.debian.org/archive/debian/20190501T041322Z/pool/main/l/linux/linux-headers-4.9.0-9-common_4.9.168-1_all.deb
==== Continue with original Slax /etc/apt/sources.list ====
deb http://deb.debian.org/debian/ stretch main contrib non-free
deb http://deb.debian.org/debian/ stretch-updates main contrib non-free
deb http://security.debian.org/debian-security stretch/updates main contrib non-free
deb-src http://deb.debian.org/debian/ stretch main contrib non-free
apt update
dkms remove nvidia-current/390.116 --all
dkms install nvidia-current/390.116
dkms status
apt install nvidia-cuda-toolkit
apt install task-mate-desktop
savechanges 02-cuda.sb
modprobe nvidia-drm
modprobe nvidia
startx
==== Applications =====
nvcc --ccbin clang-3.8 cuda-mini.cc -lstdc++
apt install freeglut3-dev libglew-dev
apt install build-essential qtbase5-dev qtcreator python3-pyqt5
(python3 view.py)
=== Other applications ===
apt install mate-desktop-environment
apt install firefox-esr
apt install qtcreator
apt install kdevelop kdevelop-dev kdevelop-php kdevelop-python
apt install libreoffice
apt install meld
apt install kate
apt install build-essential
apt install automake binutils-dev libltdl-dev
apt install libgtk2.0-dev
apt install libgtk-3-dev
apt install libqt4-dev
apt install qtbase5-dev
apt install python-qt4
apt install python-pyqt5
apt install python3-pyqt4
apt install python3-pyqt5
apt install python-pyqt5.qtwebengine
=== Download all source packages ===
#!/bin/bash
mkdir source
cd source
dpkg --get-selections | while read line
do
package=`echo $line | awk '{print $1}'`
apt-get -q source --download-only $package
done
======Grub 2======
# file /boot/grub2/grub.cfg or /boot/grub/grub.cfg
# set root=(hd0,1) # (hd0,1) ... sda1
# mkfs.ext4 -O ^has_journal /dev/sdx1
# tune2fs -l /dev/sdx1
# tune2fs -m 0 /dev/sdx1 # no reservered blocks
# mkdir /mnt/other
# mount /dev/sdx1 /mnt/other
# mkdir /mnt/other/dev
# mount --bind /dev /mnt/other/dev
# grub2-install /dev/sdx --boot-directory=/mnt/other/boot
set default=1
set timeout=60
set menu_color_normal=cyan/blue
set menu_color_highlight=white/blue
# set menu_color_normal=white/blue
# set menu_color_highlight=yellow/red
# set color_normal=yellow/black
# set color_highlight=green/dark-gray
# menuentry "sda1 Microsoft Windows 7/8" {
# set root=(hd0,1)
# insmod part_msdos
# insmod ntfs
# insmod ntldr
# ntldr /bootmgr
# }
# menuentry "sda1 Microsoft Windows XP" {
# set root=(hd0,1)
# insmod part_msdos
# insmod ntfs
# insmod ntldr
# ntldr /ntldr
# }
menuentry "sda2 Windows" {
insmod part_msdos
insmod ntfs
set root='hd0,msdos2'
parttool ${root} hidden-
drivemap -s (hd0) ${root}
chainloader +1
}
menuentry "Grub from sda3" {
set root=(hd1,3) # hd1 ... sda, when booting from second disk
drivemap -s (hd0) (hd1)
chainloader +1
}
menuentry "sda7 Fedora 34" {
set root=(hd0,7)
chainloader +1
# configfile /boot/grub2/grub.cfg
# linux /boot/vmlinuz-5.11.12-300.fc34.x86_64 root=/dev/sda7 ro quiet
# initrd /boot/initramfs-5.11.12-300.fc34.x86_64.img
}
===== BTRFS =====
menuentry "Arch Linux" {
set root=(hd0,15)
set dev="/dev/sda15"
set vol="/archlinux-a"
linux $vol/boot/vmlinuz-linux root=$dev rootflags=subvol=$vol rw quiet
initrd $vol/boot/initramfs-linux.img
}
menuentry "Debian 9 Stretch" {
set root=(hd0,15)
linux /debian9/boot/vmlinuz-4.9.0-15-amd64 root=/dev/sda15 rootflags=subvol=/debian9 ro quiet
initrd /debian9/boot/initrd.img-4.9.0-15-amd64
}
menuentry "Debian 10 Buster" {
set root=(hd0,15)
linux /debian10/boot/vmlinuz-4.19.0-16-amd64 root=/dev/sda15 rootflags=subvol=/debian10 ro quiet
initrd /debian10/boot/initrd.img-4.19.0-16-amd64
}
menuentry "Debian 11 Bullseye" {
set root=(hd0,15)
linux /debian11/boot/vmlinuz-5.10.0-6-amd64 root=/dev/sda15 rootflags=subvol=/debian11 ro quiet
initrd /debian11/boot/initrd.img-5.10.0-6-amd64
}
menuentry "Fedora 33" {
set root=(hd0,15)
set dev="/dev/sda15"
set vol="/fedora33"
set dir="$vol/boot"
set ver="5.8.15-301.fc33.x86_64"
linux $dir/vmlinuz-$ver root=$dev rootflags=subvol=$vol ro rhgb quiet
initrd $dir/initramfs-$ver.img
# /etc/fstab /dev/sda15 / btrfs subvol=/fedora33 0 0
}
menuentry "Fedora 34" {
set root=(hd0,15)
set dev="/dev/sda15"
set vol="/fedora34"
set dir="$vol/boot"
set ver="5.11.12-300.fc34.x86_64"
linux $dir/vmlinuz-$ver root=$dev rootflags=subvol=$vol ro rhgb quiet
initrd $dir/initramfs-$ver.img
# /etc/fstab subvol=/fedora34
}
menuentry "Ubuntu 18.04" {
set root=($sda,15)
set dev="/dev/sda15"
set vol="/ubuntu18.04-a"
set dir="$vol/boot"
set ver="5.4.0-48-generic"
linux $dir/vmlinuz-$ver root=$dev rootflags=subvol=$vol ro quiet
initrd $dir/initrd.img-$ver
# /etc/fstab subvol=/ubuntu18.04-a WITHOUT errors=remount-ro
}
grep -i btrfs /boot/config-4.13.9-300.fc27.x86_64
mkinitrd /boot/initramfs.img 4.13.9-300.fc27.x86_64 --force
lsinitrd initramfs-4.18.16-300.fc29.x86_64.img | grep nouveau
lsinitrd | grep btrfs
===== Install ====
menuentry "Install Arch Linux" {
# set root=(hd0,1)
set label="start"
linux /archlinux/vmlinuz-linux archisobasedir=archlinux archisolabel=$label
initrd /archlinux/initramfs-linux.img
# archisodevice=/dev/...
}
menuentry "Install Arch Linux (from iso)" {
# set label="start"
set device="/dev/..."
set isofile="/boot/archlinux/archlinux-2022.05.01-x86_64.iso"
loopback loop $isofile
# linux (loop)/arch/boot/x86_64/vmlinuz-linux img_label=$label img_loop=$isofile earlymodules=loop
linux (loop)/arch/boot/x86_64/vmlinuz-linux img_dev=$device img_loop=$isofile earlymodules=loop
initrd (loop)/arch/boot/intel-ucode.img
initrd (loop)/arch/boot/amd-ucode.img
initrd (loop)/arch/boot/x86_64/initramfs-linux.img
}
menuentry "Install Debian 7 (32-bit)" {
linux /debian7/gtk/vmlinuz vga=788
initrd /debian7/gtk/initrd.gz
# vmlinuz and initrd from ftp://.../dists/.../main/installer-i386/.../images/hd-media
# .iso file in root directory on some disk partition
}
menuentry "Install Debian 8 (32-bit)" {
linux /debian8/gtk/vmlinux vga=788
initrd /debian8/gtk/initrd.gz
# linux and initrd.gz from ftp://.../dists/Debian8.11/main/installer-i386/current/images/netboot/gtk/debian-installer/i386
}
menuentry "Install Debian 9 (64-bit)" {
linux /debian9/gtk/linux vga=788
initrd /debian9/gtk/initrd.gz
# linux and initrd.gz from ftp://.../dists/Debian9.13/main/installer-amd64/current/images/netboot/gtk/debian-installer/amd64
}
menuentry "Install Debian 10 (64-bit)" {
linux /debian10/gtk/linux vga=788
initrd /debian10/gtk/initrd.gz
# linux and initrd.gz from ftp://.../dists/Debian10.9/main/installer-amd64/current/images/netboot/gtk/debian-installer/amd64
}
menuentry "Install Fedora 34 (64-bit)" {
# set root=(hd0,1)
set disk="sda3"
linux /fedora34/x86_64/isolinux/vmlinuz inst.repo=hd:$disk:/fedora34/x86_64 inst.ks=hd:$disk:/fedora34/x86_64/fedora34.ks
initrd /fedora34/x86_64/isolinux/initrd.img
}
menuentry "Install Fedora 37" {
set disk="hd:LABEL=start"
set dir="/fedora37/x86_64"
set ks="fedora37.ks"
linux $dir/images/pxeboot/vmlinuz inst.repo=$disk:$dir inst.ks=hd:$disk:$dir/$ks
initrd $dir/images/pxeboot/initrd.img
}
From http://gist.github.com/hzhangxyz/c61447d5dd8720d3ae67794444c3dfe3
/EFI/Fedora/grub.cfg ( and grubx64.efi )
search --no-floppy --fs-uuid --set=dev aaaabbbb-cccc-dddd-eeee-ffffaaaabbbb
set prefix=($dev)/boot/grub2
export $prefix
configfile $prefix/grub.cfg
/EFI/Install/grub.cfg ( and grubx64.efi and images subdirectory from net-install)
menuentry 'Install Fedora 38' {
linuxefi /EFI/Install/images/pxeboot/vmlinuz inst.stage2=hd:UUID=ABCD-ABCD:/EFI/Install
initrdefi /EFI/Install/images/pxeboot/initrd.img
}
===== Fedora Live =====
menuentry "Fedora 38 Mate Live" {
set iso_name="Fedora-MATE-Live-38-1-6"
set iso_file="Fedora-MATE_Compiz-Live-x86_64-38-1.6.iso"
loopback loop /$iso_file # only one slash
linux (loop)/images/pxeboot/vmlinuz rd.live.image verbose root=live:LABEL=$iso_name iso-scan/filename=$iso_file
initrd (loop)/images/pxeboot/initrd.img
}
menuentry "Fedora 38 LXQt Live" {
set iso_name="Fedora-LXQt-Live-38-1-6"
set iso_file="Fedora-LXQt-Live-x86_64-38-1.6.iso"
loopback loop /$iso_file # only one slash
# loopback loop (hdN,M)/$iso_file # only one slash
linux (loop)/images/pxeboot/vmlinuz rd.live.image verbose root=live:LABEL=$iso_name iso-scan/filename=$iso_file
initrd (loop)/images/pxeboot/initrd.img
}
http://man7.org/linux/man-pages/man7/dracut.cmdline.7.html
https://github.com/dracutdevs/dracut/blob/master/modules.d/90dmsquash-live/dmsquash-generator.sh#L5
[[http://github.com/dracutdevs/dracut/blob/master/modules.d/90dmsquash-live/iso-scan.sh|iso-scan/filename=]]
===== Gentoo CD =====
menuentry "System Rescue CD 5.3.2 (64-bit)" {
linux /boot/sysrcd-5.3.2/rescue64 subdir=boot/sysrcd-5.3.2 setkmap=us docache ar_source=/dev/sdb1
initrd /boot/sysrcd-5.3.2/initram.igz
}
===== Arch Linux CD =====
menuentry "System Rescue CD 6.0.3 (64-bit)" {
set label="start"
set dir="sysrcd-6.0.3"
linux /boot/$dir/vmlinuz archisobasedir=boot/$dir archisolabel=$label copytoram
initrd /boot/$dir/intel_ucode.img /boot/$dir/amd_ucode.img /boot/$dir/sysresccd.img
# file in /boot/sysrcd-6.0.3/x86_64 : airootfs.sfs
# file in /boot/sysrcd-6.0.3 : vmlinuz sysresccd.img intel_ucode.img amd_ucode.img
}
menuentry "System Rescue CD 8.0.3 (64-bit)" {
set label="start"
set dir="sysrcd-8.0.3"
linux /boot/$dir/vmlinuz archisobasedir=boot/$dir archisolabel=$label copytoram
initrd /boot/$dir/intel_ucode.img /boot/$dir/amd_ucode.img /boot/$dir/sysresccd.img
# file in /boot/sysrcd-8.0.3/x86_64 : airootfs.sfs
# file in /boot/sysrcd-8.0.3 : vmlinuz sysresccd.img intel_ucode.img amd_ucode.img
}
https://github.com/alfredopalhares/Archiso/blob/master/README
( cow_label=FS_LABEL or cow_device=/dev/DEVICE )
[[http://github.com/archlinux/mkinitcpio-archiso/blob/master/hooks/archiso#L177|archisodevice=]]
===== Ubuntu =====
menuentry "Ubuntu Mate 18.04 (32-bit)" {
set dir="/ubuntu-mate-18.04"
linux $dir/casper/vmlinuz boot=casper iso-scan/filename=$dir layerfs-path=filesystem.prog.squashfs showmounts
initrd $dir/casper/initrd
# sudo umount -l -r -f /isodevice
# files casper/filesystem.squashfs and casper/filesystem.prog.squashfs
}
menuentry "Ubuntu Mate 20.04" {
set dir="/ubuntu-mate-20.04"
linux $dir/casper/vmlinuz boot=casper iso-scan/filename=$dir showmounts
initrd $dir/casper/initrd
# linux $dir/casper/vmlinuz boot=casper iso-scan/filename=$dir layerfs-path=filesystem.prog.squashfs showmounts
# sudo umount -l -r -f /isodevice
# files casper/filesystem.squashfs and casper/filesystem.prog.squashfs
}
menuentry "Ubuntu Mate 20.04 (from iso)" {
set dir="/ubuntu-mate-20.04-iso"
set isofile="$dir/ubuntu-mate-20.04-desktop-amd64.iso"
loopback loop $isofile
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile showmounts noprompt noeject
initrd (loop)/casper/initrd
}
http://manpages.ubuntu.com/manpages/focal/en/man7/casper.7.html
( persistent, persistent-path )
[[http://git.launchpad.net/casper/tree/scripts/casper#n59|live-media=]]
===== Debian Live =====
menuentry "Install Debian 9 (32-bit, from iso)" {
set dir="/debian9-iso"
set isofile="$dir/debian-live-9.0.0-i386-mate.iso"
loopback loop $isofile
set root=(loop)
linux /live/vmlinuz-4.9.0-3-686 boot=live components splash quiet findiso=$isofile
initrd /live/initrd.img-4.9.0-3-686
}
menuentry "Debian 11 (from iso)" {
set dir="/debian11-lxqt"
set isofile="$dir/debian-live-11.4.0-i386-lxqt+nonfree.iso"
loopback loop $isofile
set root=(loop)
linux /live/vmlinuz-5.10.0-16-686 boot=live components splash quiet findiso=$isofile
initrd /live/initrd.img-5.10.0-16-686
}
http://manpages.debian.org/bookworm/live-boot-doc/live-boot.7.en.html
fromiso=/dev/sda1/live/image.iso
[[http://salsa.debian.org/live-team/live-boot/-/blob/master/components/9990-misc-helpers.sh#L104|fromiso=]]
===== Slax =====
http://www.slax.org/starting.php
[[https://github.com/Tomas-M/linux-live/blob/master/livekitlib#L598|from=]]
menuentry "Slax 32-bit (Fresh start)" {
linux /slax32/boot/vmlinuz from=/slax32/ vga=normal load_ramdisk=1 prompt_ramdisk=0 rw printk.time=0
initrd /slax32/boot/initrfs.img
}
menuentry "Slax 64-bit (Persistent changes)" {
linux /slax64/boot/vmlinuz from=/slax64/ vga=normal load_ramdisk=1 prompt_ramdisk=0 rw printk.time=0 slax.flags=perch
initrd /slax64/boot/initrfs.img
}
menuentry "Slax 64-bit (Fresh start)" {
linux /slax64/boot/vmlinuz from=/slax64/ vga=normal load_ramdisk=1 prompt_ramdisk=0 rw printk.time=0
initrd /slax64/boot/initrfs.img
}
menuentry "Slax 64-bit (Copy to RAM)" {
linux /slax64/boot/vmlinuz from=/slax64/ vga=normal load_ramdisk=1 prompt_ramdisk=0 rw printk.time=0 slax.flags=toram
initrd /slax64/boot/initrfs.img
}
===== OpenMandriva =====
https://github.com/dracutdevs/dracut/blob/master/modules.d/90dmsquash-live/dmsquash-generator.sh#L5
https://github.com/dracutdevs/dracut/blob/master/modules.d/90dmsquash-live/iso-scan.sh
[[https://github.com/dracutdevs/dracut/blob/master/modules.d/90dmsquash-live/parse-iso-scan.sh#L5|iso-scan/filename=]]
====== Win 7 ======
32-bit Win 7
Git-2.37.2.2-32-bit.exe
TortoiseGit-2.13.0.1-32bit.msi
SharpDevelop_5.1.0.5216_Xcopyable.zip
tcmdr702.exe
WinSCP-5.21.2-Setup.exe
7z2301.msi
===== Updates ====
http://servispckupka.cz/jak_reinstalovat_windows_7_dokonceni_nastaveni.php
aktualizaci KB3020369 a poté KB3125574, což je právě "Service Pack 2"
pro 32bitovou verzi Windows 7:
KB3020369 http://servispckupka.cz/data/windows-7/Windows6.1-KB3020369-x86.msu
"Service Pack 2" KB3125574 http://www.catalog.update.microsoft.com/Search.aspx?q=3125574
===== Notepad Plus Plus =====
https://notepad-plus-plus.org/downloads/v6.9/
===== Python =====
https://www.python.org/ftp/python/3.7.4/python-3.7.4.exe
https://support.microsoft.com/en-us/topic/update-for-universal-c-runtime-in-windows-c0514201-7fe6-95a3-b0a5-287930f3560c
pip install PyQt5==5.12
===== Qt Creator ====
https://download.qt.io/archive/qt/5.14/5.14.2/
https://download.qt.io/archive/qt/5.12/5.12.2/
===== MSYS =====
https://stackoverflow.com/questions/75660136/is-it-possible-to-install-msys2-in-windows-7
https://repo.msys2.org/distrib/msys2-i686-latest.tar.xz
https://forum.freecad.org/viewtopic.php?t=70782
https://github.com/nalexandru/api-ms-win-core-path-HACK/releases
GetSystemTimePreciseAsFileTime
https://stackoverflow.com/questions/70051785/is-it-possible-to-install-a-newer-version-of-kernel32-dll-into-win-7-x64-that-in
MSYS2 MinGW 32-bit ( C:\MSys32\msys2_shell.cmd -mingw32 )
pacman -Sy
pacman -S mingw32/mingw-w64-i686-ktexteditor-qt5
pacman -S mingw32/mingw-w64-i686-cmake
pacman -S mingw32/mingw-w64-i686-extra-cmake-modules
pacman -S mingw32/mingw-w64-i686-gcc
pacman -S mingw32/mingw-w64-i686-kate
pacman -S mc
pacman -S mingw32/mingw-w64-i686-python
pacman -S mingw32/mingw-w64-i686-python-pyqt5
====== Arch Linux ======
**boot**
menuentry "Install Arch Linux" {
# set label="start"
set device="/dev/..."
set isofile="/archlinux/archlinux-2022.12.01-x86_64.iso"
loopback loop $isofile
# linux (loop)/arch/boot/x86_64/vmlinuz-linux img_label=$label img_loop=$isofile earlymodules=loop
linux (loop)/arch/boot/x86_64/vmlinuz-linux img_dev=$device img_loop=$isofile earlymodules=loop
initrd (loop)/arch/boot/intel-ucode.img
initrd (loop)/arch/boot/amd-ucode.img
initrd (loop)/arch/boot/x86_64/initramfs-linux.img
}
menuentry "System Rescue CD 9.0.6 (64-bit)" {
linux /sysrcd-9.0.6/vmlinuz archisolabel=start archisobasedir=sysrcd-9.0.6 copytoram
# archisodevice=/dev/...
initrd /sysrcd-9.0.6/intel_ucode.img /sysrcd-9.0.6/amd_ucode.img /sysrcd-9.0.6/sysresccd.img
# files:
# x86_64/airootfs.sfs
# x86_64/airootfs.sha512
# amd_ucode.img
# intel_ucode.img
# sysresccd.img
# VERSION
# vmlinuz
}
**mkfs**
mkfs.ext4 /dev/... -L archlinux
**mount**
mount /dev/... /mnt
mkdir -p /mnt/boot/efi
mount /dev/... /mnt/boot/efi
**mirrorlist**
cat > /etc/pacman.d/mirrorlist << 'EOF'
Server = http://ftp.linux.cz/pub/linux/arch/$repo/os/$arch
Server = http://ftp.fi.muni.cz/pub/linux/arch/$repo/os/$arch
Server = http://ftp.uni-hannover.de/archlinux/$repo/os/$arch
EOF
# 'EOF' ... single quotes ... no variable substitution
**wifi - iwctl**
station list
station wlan0 connect inet
** wifi - nmcli **
nmcli device wifi connect ...network... password "...password..."
**pacstrap**
PACKAGES=""
PACKAGES="$PACKAGES base linux linux-firmware linux-headers"
PACKAGES="$PACKAGES mc sudo networkmanager"
PACKAGES="$PACKAGES grub efibootmgr"
PACKAGES="$PACKAGES xorg-server xorg-xinit xorg-drivers xorg-twm xterm mate mate-extra network-manager-applet"
PACKAGES="$PACKAGES openssh"
PACKAGES="$PACKAGES firefox"
PACKAGES="$PACKAGES man"
pacstrap /mnt $PACKAGES
https://wiki.archlinux.org/title/Pacman/Package_signing
https://man.archlinux.org/man/pacman.conf.5#PACKAGE_AND_DATABASE_SIGNATURE_CHECKING
/etc/pacman.conf [options] SigLevel = Never
**fstab**
genfstab -U /mnt >> /mnt/etc/fstab
echo "UUID=... /boot/efi auto defaults 0 0" >> /mnt/etc/fstab
===== arch-chroot /mnt =====
**time**
ln -sf /usr/share/zoneinfo/Europe/Prague /etc/localtime
hwclock --systohc
**locale**
# edit /etc/locale.gen and uncomment en_US.UTF-8 UTF-8
locale-gen
**passwd**
passwd
**mkinitcpio**
mkinitcpio -P
nebo
pacman -S linux
**local grub**
echo "GRUB_DISABLE_OS_PROBER=true" >> /etc/default/grub
# or edit /etc/grub.d/30_os-prober
grub-install --force /dev/...
mkdir -p /boot/efi
mount /dev/... /boot/efi
grub-install --target=x86_64-efi --efi-dir=/boot/efi --bootloader-id=ArchLinux
**network**
systemctl start NetworkManager
systemctl enable NetworkManager
**packages**
pacman -Syyu
# yy ... refresh repositories
pacman -S plocate
updatedb
**startx mate**
FILE="/etc/X11/xinit/xinitrc.d/80-mate.sh"
echo "exec mate-session" > $FILE
chmod +x $FILE
**desktop**
pacman -S gnome gnome-extra
pacman -S mate mate-extra
pacman -S xfce4 xfce4-goodies
pacman -S lxqt pcmanfm-qt
pacman -S sddm
pacman -S gdm
pacman -S pipewire
.xinitrc
exec mate-session
# exec startxfce4
# exec lxqt-session
# exec xterm
# exec twm
systemctl start gdm
or
systemctl start sddm
====== Debian ======
https://www.debian.org/releases/stable/amd64/apds03.en.html
https://www.debian.org/releases/bookworm/amd64/apds03.en.html
https://www.debian.org/releases/bullseye/amd64/apds03.en.html
https://www.debian.org/releases/buster/amd64/apds03.en.html
https://www.debian.org/releases/stretch/amd64/release-notes.en.txt
ROOT_DIR="/mnt/..."
DEBIAN_URL="http://ftp.cz.debian.org/debian"
# pacman -S debootstrap
PACKAGES="mc"
PACKAGES="$PACKAGES,linux-image-amd64"
PACKAGES="$PACKAGES,linux-headers-amd64"
PACKAGES="$PACKAGES,grub-pc"
PACKAGES="$PACKAGES,task-mate-desktop"
PACKAGES="$PACKAGES,firefox-esr"
# PACKAGES="$PACKAGES libreoffice"
PACKAGES="$PACKAGES,kate"
PACKAGES="$PACKAGES,kompare"
PACKAGES="$PACKAGES,meld"
PACKAGES="$PACKAGES,kdevelop,kdevelop-dev"
PACKAGES="$PACKAGES,qtcreator"
PACKAGES="$PACKAGES,build-essential"
PACKAGES="$PACKAGES,automake,binutils-dev,libltdl-dev"
PACKAGES="$PACKAGES,libgtk2.0-dev,libgtk-3-dev"
PACKAGES="$PACKAGES,qtbase5-dev"
PACKAGES="$PACKAGES,python3-pyqt5"
PACKAGES="$PACKAGES,python3-pyqt5.qtwebengine"
if true ; then
debootstrap --arch=amd64 --include=$PACKAGES bookworm $ROOT_DIR $DEBIAN_URL
genfstab -U $ROOT_DIR >> $ROOT_DIR/etc/fstab
echo "allow-hotplug enp7s0" >> $ROOT_DIR/etc/network/interfaces
echo "iface enp7s0 inet dhcp" >> $ROOT_DIR/etc/network/interfaces
fi
cp start-debian.sh $ROOT_DIR
chroot $ROOT_DIR /bin/bash start-debian.sh
debootstrap --arch=i386 --include mc,grub,kernel-image-2.4.16-386 woody /mnt/other
debootstrap --arch=i386 --include mc,grub,kernel-image-2.6.8-4-686 sarge /mnt/other
====== Antix ======
http://github.com/antiX-Linux/cli-installer-antix/blob/master/cli-installer
http://antixlinux.com/forum-archive/solved-new-to-window-managers-how-do-i-select-them-t1097.html
https://bugs.freedesktop.org/show_bug.cgi?id=96441
Notebook video=SVIDEO-1:d
update-initramfs -u -t
====== Fedora ======
#!/bin/sh
RELEASE_VER=39
# KEY_DIR="..../etc/pki/rpm-gpg"
KEY_DIR="keys"
# ROOT_DIR="root"
ROOT_DIR="/mnt/..."
FROM_DIR="/mnt/.../install/fedora39"
# pacman -S dnf ;)
# https://glacion.com/2019/06/16/Fedora.html
# https://glacion.com/2021/02/01/Fedora.html
# ---------------------------------------------------------------------------
PACKAGES=""
PACKAGES="$PACKAGES @admin-tools"
PACKAGES="$PACKAGES @base-x"
PACKAGES="$PACKAGES @core"
PACKAGES="$PACKAGES @dial-up"
PACKAGES="$PACKAGES @fonts"
PACKAGES="$PACKAGES @guest-desktop-agents"
PACKAGES="$PACKAGES @hardware-support"
PACKAGES="$PACKAGES @input-methods"
PACKAGES="$PACKAGES @multimedia"
PACKAGES="$PACKAGES @networkmanager-submodules"
PACKAGES="$PACKAGES @printing"
PACKAGES="$PACKAGES @standard"
PACKAGES="$PACKAGES @mate-desktop-environment"
PACKAGES="$PACKAGES @mate-desktop"
PACKAGES="$PACKAGES @firefox"
PACKAGES="$PACKAGES mc"
PACKAGES="$PACKAGES grub2-pc"
# ---------------------------------------------------------------------------
# PACKAGES="@standard kernel-core mc grub2-pc"
# ---------------------------------------------------------------------------
# OPTIONS="--setopt=install_weak_deps=False --nodocs"
# PACKAGES=""
# PACKAGES="$PACKAGES systemd dnf glibc-langpack-en passwd rtkit policycoreutils"
# PACKAGES="$PACKAGES NetworkManager audit firewalld selinux-policy-targeted kbd sudo"
# PACKAGES="$PACKAGES vim-minimal systemd-udev rootfiles less iputils deltarpm sqlite"
# ---------------------------------------------------------------------------
FROM_ABS_DIR=`cd $FROM_DIR; pwd`
REPO_SPEC="file://$FROM_ABS_DIR"
mkdir -p $ROOT_DIR
ROOT_ABS_DIR=`cd $ROOT_DIR; pwd`
mkdir -p $ROOT_DIR/etc
mkdir -p $ROOT_DIR/etc/yum.repos.d # empty directory, prevent using global /etc/yum.repos.d
rpmkeys --root=$ROOT_ABS_DIR --import $KEY_DIR/*$RELEASE_VER*
dnf install --installroot=$ROOT_ABS_DIR --repofrompath abc,$REPO_SPEC --releasever=$RELEASE_VER $OPTIONS $PACKAGES
# ---------------------------------------------------------------------------
systemd-firstboot \
--root=$ROOT_DIR \
--locale=en_US.UTF-8 \
--timezone=Europe/Prague \
--keymap=us \
--hostname=pc \
--setup-machine-id
genfstab -U $ROOT_DIR >> $ROOT_DIR/etc/fstab
cp start.sh $ROOT_DIR
systemd-nspawn -D $ROOT_DIR /bin/sh start.sh
# Chroot without booting and add an user
# systemd-nspawn -D $ROOT_DIR
# Boot the system as a container
# systemd-nspawn -b -D $ROOT_DIR
Boot: linux ... root=/dev/sdXY ro selinux=0
menuentry "Fedora 39" {
set root=(hdX,Y)
linux /boot/vmlinuz-6.5.6-300.fc39.x86_64 root=/dev/sdXY ro quiet selinux=0
initrd /boot/initramfs-6.5.6-300.fc39.x86_64.img
}
DOWNLOAD_DIR="download"
REPO="http://ftp.linux.cz/pub/linux/fedora/linux/releases/39/Everything/x86_64/os"
dnf install \
--releasever=39 \
--repofrompath abc,$REPO \
--nogpgcheck \
--downloadonly \
--downloaddir=$DOWNLOAD_DIR \
$PACKAGES