====== 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