| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- device=$1
- boot_dir=`mktemp -d /tmp/BOOT.XXXXXXXXXX`
- root_dir=`mktemp -d /tmp/ROOT.XXXXXXXXXX`
- linux_dir=tmp/linux-6.12
- linux_ver=6.12.52-xilinx
- # Choose mirror automatically, depending the geographic and network location
- mirror=http://deb.debian.org/debian
- distro=trixie
- arch=armhf
- passwd=changeme
- timezone=Europe/Brussels
- # Create partitions
- parted -s $device mklabel msdos
- parted -s $device mkpart primary fat16 4MiB 16MiB
- parted -s $device mkpart primary ext4 16MiB 100%
- boot_dev=/dev/`lsblk -ln -o NAME -x NAME $device | sed '2!d'`
- root_dev=/dev/`lsblk -ln -o NAME -x NAME $device | sed '3!d'`
- # Create file systems
- mkfs.vfat -v $boot_dev
- mkfs.ext4 -F -j $root_dev
- # Mount file systems
- mount $boot_dev $boot_dir
- mount $root_dev $root_dir
- # Copy files to the boot file system
- cp boot-rootfs.bin $boot_dir/boot.bin
- # Install Debian base system to the root file system
- debootstrap --foreign --arch $arch $distro $root_dir $mirror
- # Install Linux modules
- modules_dir=$root_dir/lib/modules/$linux_ver
- mkdir -p $modules_dir/kernel
- find $linux_dir -name \*.ko -printf '%P\0' | tar --directory=$linux_dir --owner=0 --group=0 --null --files-from=- -zcf - | tar -zxf - --directory=$modules_dir/kernel
- cp $linux_dir/modules.order $linux_dir/modules.builtin $modules_dir/
- depmod -a -b $root_dir $linux_ver
- # Add missing configuration files and packages
- cp /etc/resolv.conf $root_dir/etc/
- cp /usr/bin/qemu-arm-static $root_dir/usr/bin/
- rm $root_dir/etc/apt/sources.list
- cp -r debian/etc/apt $root_dir/etc/
- cp -r debian/etc/systemd $root_dir/etc/
- chroot $root_dir <<- EOF_CHROOT
- export LANG=C
- export LC_ALL=C
- export DEBIAN_FRONTEND=noninteractive
- export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
- /debootstrap/debootstrap --second-stage
- apt-get update
- apt-get -y upgrade
- apt-get -y install locales
- sed -i "/^# en_US.UTF-8 UTF-8$/s/^# //" etc/locale.gen
- locale-gen
- update-locale LANG=en_US.UTF-8
- ln -sf /usr/share/zoneinfo/$timezone etc/localtime
- dpkg-reconfigure tzdata
- apt-get -y install openssh-server ca-certificates chrony fake-hwclock \
- usbutils psmisc lsof parted curl vim wpasupplicant hostapd dnsmasq \
- firmware-atheros firmware-brcm80211 firmware-mediatek firmware-realtek \
- iw iptables dhcpcd-base ntfs-3g libubootenv-tool
- systemctl enable dhcpcd
- systemctl disable hostapd
- systemctl disable dnsmasq
- systemctl disable nftables
- systemctl disable wpa_supplicant
- sed -i 's/^#PermitRootLogin.*/PermitRootLogin yes/' etc/ssh/sshd_config
- echo root:$passwd | chpasswd
- apt-get clean
- service chrony stop
- service ssh stop
- history -c
- sync
- EOF_CHROOT
- cp -r debian/etc $root_dir/
- rm $root_dir/etc/resolv.conf
- rm $root_dir/usr/bin/qemu-arm-static
- # Unmount file systems
- umount $boot_dir $root_dir
- rmdir $boot_dir $root_dir
- zerofree $root_dev
|