====== Debian ====== ===== debootstrap ===== https://blog.night-shade.org.uk/2013/12/building-a-pure-debian-armhf-rootfs/ :!: in jessie/Ubuntu 14.x (64bit) gibt es Probleme in der second-stage: [[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=857338|link]], hier muss ggf. debootstrap geupdated werden (erste Stufe muss erneut durchgeführt werden): [[https://packages.debian.org/jessie-backports/all/debootstrap/download|download]] sudo apt-get install qemu-user-static debootstrap binfmt-support distro=buster arch=armhf #r64: arch=arm64 targetdir=$(pwd)/debian_${distro}_${arch} mkdir $targetdir sudo debootstrap --arch=$arch --foreign $distro $targetdir sudo cp /usr/bin/qemu-arm-static $targetdir/usr/bin/ #r64:sudo cp /usr/bin/qemu-aarch64-static $targetdir/usr/bin/ sudo cp /etc/resolv.conf $targetdir/etc sudo distro=$distro chroot $targetdir export LANG=C /debootstrap/debootstrap --second-stage ggf. gleich root-pw setzen und/oder neue User anlegen (sudo nicht vergessen). sonst kein login (seriell/ssh) in das System möglich. Man kann auch vom hostsystem Befehle in der chroot ausführen. chroot rootordner/ ./chroot.sh chroot verlassen (exit oder strg+D) ggf. Packen: #sudo umount $targetdir/proc sudo tar -czf ${distro}_${arch}.tar.gz -C $targetdir $targetdir wie in der Quelle noch hostname,apt (ggf. De-Server),... einrichten * hostname (/etc/hostname) bpi-r2 * /etc/apt/sources.list deb http://ftp.de.debian.org/debian $distro main contrib non-free deb-src http://ftp.de.debian.org/debian $distro main contrib non-free deb http://ftp.de.debian.org/debian $distro-updates main contrib non-free deb-src http://ftp.de.debian.org/debian $distro-updates main contrib non-free deb http://security.debian.org/debian-security $distro/updates main contrib non-free deb-src http://security.debian.org/debian-security $distro/updates main contrib non-free * fstab (boot,root) # /dev/mmcblk0p2 / ext4 errors=remount-ro 0 1 /dev/mmcblk0p1 /boot vfat defaults 0 0 * Dns-server in /etc/resolv.conf eintragen nameserver 192.168.0.5 * [[#Netzwerk|Netzwerk-Konfiguration]] auto eth0 iface eth0 inet manual pre-up ip link set $IFACE up post-down ip link set $IFACE down auto lan0 iface lan0 inet static hwaddress ether 08:00:00:00:00:00 # if you want to set MAC manually address 192.168.0.10 netmask 255.255.255.0 gateway 192.168.0.5 pre-up ip link set $IFACE up post-down ip link set $IFACE down ... im bestehenden Jessie-Image die root-Partition (außer lib/modules/) leeren und den Inhalt des Bootstrap-ordners (debian_stretch) dorthin kopieren fertiges bootstrapped debian stretch (sd+emmc in separaten img's): [[https://drive.google.com/drive/folders/15Y5Y3NAOwg_IMmN3k6hdb7pAQj9oTVTl?usp=sharing|gdrive]] damit der root-login via SSH funktioniert muss noch in der /etc/ssh/sshd_config folgendes hinzugefügt werden: PermitRootLogin yes sowie der ssh-server neu gestartet werden mit service sshd restart ===== lauffähiges Image anpassen ===== * logs leeren (echo -n "">logdatei), * backup-dateien löschen, * cache (z.B. APT) löschen, * nicht benötigte Kernel-Module (/lib/modules/) * ggf. eigene User löschen * PW für root zurücksetzen freien Speicher im Image mit null-datei füllen (besseres packen): loopdev=$(losetup -f) #erstes freies loopdevice losetup ${loopdev} /path/to/file partprobe ${loopdev} mount ${loopdev}p2 /mnt #wenn man noch Sachen installieren will bzw. Updates machen cp /usr/bin/qemu-arm-static /mnt/usr/bin/ chroot /mnt #bei apt-update-fehler "Couldn't create temporary file /tmp/apt.conf.xxxxx for passing config to apt-key" mount -t tmpfs none /tmp #freien Speicherplatz überschreiben dd if=/dev/zero of=/mnt/null.dat rm /mnt/null.dat #uboot-update r2 dd of=${loopdev} if=u-boot.bin bs=1k seek=320; losetup -d ${loopdev} https://softwarebakery.com/shrinking-images-on-linux myimage=myimage.img size=$(fdisk -l $myimage | tail -1 | awk '{print $3}') truncate --size=$[($size+1)*512] $myimage alternative https://wiki.debian.org/DebianInstaller/Arm/OtherPlatforms ===== NTP ===== apt-get install ntpdate service ntp stop ntpdate -s ptbtime1.ptb.de service ntp start ===== Netzwerk ===== alles unter 4.14 in der /etc/network/interfaces: ==== normale Konfiguration ==== auto eth0 iface eth0 inet manual pre-up ip link set $IFACE up post-down ip link set $IFACE down auto lan0 iface lan0 inet static hwaddress ether 08:00:00:00:00:00 # if you want to set MAC manually address 192.168.0.10 netmask 255.255.255.0 gateway 192.168.0.5 pre-up ip link set $IFACE up post-down ip link set $IFACE down auto lan1 iface lan1 inet static hwaddress ether 08:00:00:00:00:01 # if you want to set MAC manually address 192.168.1.10 netmask 255.255.255.0 pre-up ip link set $IFACE up post-down ip link set $IFACE down auto lan2 iface lan2 inet static hwaddress ether 08:00:00:00:00:02 # if you want to set MAC manually #... auto lan3 iface lan3 inet static hwaddress ether 08:00:00:00:00:03 # if you want to set MAC manually #... auto wan iface wan inet static hwaddress ether 09:00:00:00:00:01 # if you want to set MAC manually #... unter debian 9 funktioniert hwaddress nicht mehr, hier lässt sich das setzen der MAC so erreichen: iface lan0 inet static address 192.168.0.10 netmask 255.255.255.0 gateway 192.168.0.5 # pre-up ip link set $IFACE up pre-up ip link set $IFACE address 02:01:02:03:04:08 up post-down ip link set $IFACE down ==== Netzwerkbrücke ==== apt-get install bridge-utils iface br0 inet static address 192.168.40.1 netmask 255.255.255.0 bridge_ports lan1 lan2 bridge_fd 5 bridge_stp no ==== vlan ==== auto lan3 iface lan3 inet manual auto lan3.60 iface lan3.60 inet static address 192.168.60.10 netmask 255.255.255.0 # gateway 192.168.0.5 pre-up ip link set $IFACE address 02:01:02:03:04:03 up #setting mac does not work currently