Hallo, ich versuche verzweifelt, meinen Raspberry Pi Zero W mit Hotspot und Buildroot zu kompilieren und zum Laufen zu bringen. Hier ist meine defconfig:
1 | # ----------------------- |
2 | # Architecture |
3 | BR2_arm=y |
4 | BR2_arm1176jzf_s=y |
5 | BR2_ARM_EABIHF=y |
6 | |
7 | # ----------------------- |
8 | # Toolchain (Optimiert: Headers fixieren) |
9 | BR2_KERNEL_HEADERS_6_1=y |
10 | BR2_TOOLCHAIN_BUILDROOT_GLIBC=y |
11 | BR2_TOOLCHAIN_BUILDROOT_WCHAR=y |
12 | BR2_TOOLCHAIN_BUILDROOT_CXX=y |
13 | |
14 | # ----------------------- |
15 | # System / Init |
16 | BR2_TARGET_GENERIC_HOSTNAME="yio-remote" |
17 | BR2_TARGET_GENERIC_ISSUE="YIO Remote (Minimal)" |
18 | BR2_INIT_SYSTEMD=y |
19 | # Wir nutzen systemd-networkd für minimalen Overhead |
20 | BR2_PACKAGE_SYSTEMD_NETWORKD=y |
21 | BR2_PACKAGE_SYSTEMD_RESOLVED=y |
22 | # ttyS0 ist korrekt für den Pi Zero (Mini-UART) |
23 | BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" |
24 | BR2_TARGET_GENERIC_BAUDRATE_115200=y |
25 | |
26 | # ----------------------- |
27 | # Kernel (Nutzt dein Fragment) |
28 | BR2_LINUX_KERNEL=y |
29 | BR2_LINUX_KERNEL_CUSTOM_GIT=y |
30 | BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/raspberrypi/linux.git" |
31 | BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="rpi-6.1.y" |
32 | BR2_LINUX_KERNEL_DEFCONFIG="bcmrpi" |
33 | BR2_LINUX_KERNEL_DTS_SUPPORT=y |
34 | BR2_LINUX_KERNEL_INTREE_DTS_NAME="bcm2708-rpi-zero-w" |
35 | BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="../board/remote/configs/remote_kernel.config" |
36 | |
37 | # ----------------------- |
38 | # Raspberry Pi Infrastructure |
39 | BR2_TARGET_RPI_FIRMWARE=y |
40 | BR2_TARGET_RPI_FIRMWARE_VARIANT_PI_ZERO_W=y |
41 | # DTS Overlays werden für dein sharp.dtbo benötigt |
42 | BR2_TARGET_RPI_FIRMWARE_INSTALL_DTB_OVERLAYS=y |
43 | |
44 | # ----------------------- |
45 | # WLAN & Networking |
46 | BR2_PACKAGE_LINUX_FIRMWARE=y |
47 | # Nur das absolut Nötige für den Pi Zero W Chip (Cypress/Broadcom 43430) |
48 | BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM43XXX=y |
49 | BR2_PACKAGE_WPA_SUPPLICANT=y |
50 | BR2_PACKAGE_WPA_SUPPLICANT_NL80211=y |
51 | BR2_PACKAGE_WPA_SUPPLICANT_DBUS=y |
52 | |
53 | # ----------------------- |
54 | # SSH & Utilities (Lightweight) |
55 | BR2_PACKAGE_DROPBEAR=y |
56 | BR2_PACKAGE_DROPBEAR_SMALL=y |
57 | # Hilft gegen "Entropy Starvation" beim Booten auf langsamen CPUs |
58 | BR2_PACKAGE_HAVEGED=y |
59 | # I2C Tools für deinen Check |
60 | BR2_PACKAGE_I2C_TOOLS=y |
61 | |
62 | # ----------------------- |
63 | # Filesystem & Image |
64 | BR2_ROOTFS_OVERLAY="../board/remote/root-overlays" |
65 | BR2_ROOTFS_POST_BUILD_SCRIPT="../board/remote/post-build.sh" |
66 | BR2_ROOTFS_POST_IMAGE_SCRIPT="../board/remote/post-image.sh" |
67 | |
68 | # Nur ext4 aktivieren (ext2 Definitionen entfernt für Konsistenz) |
69 | BR2_TARGET_ROOTFS_EXT4=y |
70 | BR2_TARGET_ROOTFS_EXT4_SIZE="256M" |
71 | BR2_TARGET_ROOTFS_EXT4_DISABLE_JOURNALING=y |
72 | |
73 | # Tools für Genimage |
74 | BR2_PACKAGE_HOST_DOSFSTOOLS=y |
75 | BR2_PACKAGE_HOST_MTOOLS=y |
76 | BR2_PACKAGE_HOST_GENIMAGE=y |
77 | BR2_TARGET_IMAGES_USE_CUSTOM_GENIMAGE=y |
78 | BR2_TARGET_GENIMAGE_CONFIG="../board/remote/genimage.cfg" |
79 | |
80 | |
81 | BR2_PACKAGE_HOSTAPD=y |
82 | BR2_PACKAGE_HOSTAPD_DRIVER_NL80211=y |
83 | BR2_PACKAGE_HOSTAPD_HAS_WIFI_DRIVERS=y |
84 | # You also need a DHCP server to give IPs to connecting devices |
85 | BR2_PACKAGE_DNSMASQ=y |
86 | BR2_PACKAGE_SYSTEMD_RFKILL=y |
87 | BR2_PACKAGE_UTIL_LINUX_RFKILL=y |
88 | BR2_PACKAGE_HAS_UDEV=y |
89 | BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y |
Und hier meine Kernel-Config:
1 | # ===================================== |
2 | # SYSTEMD CORE REQUIREMENTS (Wasserdicht) |
3 | # ===================================== |
4 | CONFIG_CGROUPS=y |
5 | CONFIG_CGROUP_FREEZER=y |
6 | CONFIG_CGROUP_DEVICE=y |
7 | CONFIG_CGROUP_CPUACCT=y |
8 | CONFIG_CGROUP_PIDS=y |
9 | CONFIG_CGROUP_BPF=y |
10 | CONFIG_NAMESPACES=y |
11 | CONFIG_USER_NS=y |
12 | CONFIG_PID_NS=y |
13 | CONFIG_NET_NS=y |
14 | CONFIG_DEVTMPFS=y |
15 | CONFIG_DEVTMPFS_MOUNT=y |
16 | CONFIG_FHANDLE=y |
17 | CONFIG_AUTOFS4_FS=y |
18 | CONFIG_SIGNALFD=y |
19 | CONFIG_TIMERFD=y |
20 | CONFIG_EPOLL=y |
21 | CONFIG_INOTIFY_USER=y |
22 | CONFIG_SYSFS=y |
23 | CONFIG_PROC_FS=y |
24 | CONFIG_DMIID=y |
25 | CONFIG_UNIX=y |
26 | CONFIG_INLINE_SPIN_UNLOCK_IRQ=y |
27 | |
28 | # --- HARDWARE CORE (UART, I2C, SPI) --- |
29 | CONFIG_SERIAL_AMBA_PL011=y |
30 | CONFIG_SERIAL_AMBA_PL011_CONSOLE=y |
31 | CONFIG_I2C=y |
32 | CONFIG_I2C_CHARDEV=y |
33 | CONFIG_I2C_BCM2835=y |
34 | CONFIG_SPI=y |
35 | CONFIG_SPI_MASTER=y |
36 | CONFIG_SPI_BCM2835=y |
37 | CONFIG_RASPBERRYPI_FIRMWARE=y |
38 | CONFIG_MMC=y |
39 | CONFIG_MMC_BCM2835=y |
40 | CONFIG_GPIOLIB=y |
41 | CONFIG_GPIO_SYSFS=y |
42 | CONFIG_LEDS_GPIO=y |
43 | |
44 | # --- NETWORKING & WLAN --- |
45 | CONFIG_NET=y |
46 | CONFIG_INET=y |
47 | CONFIG_WIRELESS=y |
48 | CONFIG_CFG80211=y |
49 | CONFIG_BRCMFMAC=y |
50 | CONFIG_BRCMFMAC_SDIO=y |
51 | CONFIG_IP_MULTICAST=y |
52 | |
53 | # --- FILESYSTEMS --- |
54 | CONFIG_EXT4_FS=y |
55 | CONFIG_VFAT_FS=y |
56 | CONFIG_TMPFS=y |
57 | CONFIG_TMPFS_POSIX_ACL=y |
58 | |
59 | # --- OPTIMIZATION --- |
60 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y |
61 | CONFIG_KERNEL_XZ=y |
62 | CONFIG_RFKILL=y |
63 | CONFIG_RFKILL_INPUT=y |
64 | |
65 | # --- WICHTIG FÜR WLAN-HOTSPOT --- |
66 | CONFIG_MAC80211=y # WLAN-Framework (wichtig für hostapd) |
67 | CONFIG_CFG80211_WEXT=y # Kompatibilität mit WLAN-Tools |
68 | CONFIG_PACKET=y # Für raw sockets (hostapd benötigt das) |
69 | |
70 | # --- NETZWERK GRUNDLAGEN --- |
71 | CONFIG_NETFILTER=y # Für Firewall (optional) |
72 | CONFIG_NETFILTER_ADVANCED=y |
73 | CONFIG_NF_CONNTRACK=y # Connection tracking |
74 | CONFIG_NF_NAT=y # Network Address Translation |
75 | |
76 | # --- FÜR BESSERES DEBUGGING --- |
77 | CONFIG_DEBUG_FS=y # Für Debug-Informationen |
78 | CONFIG_DYNAMIC_DEBUG=y # Detaillierte Kernel-Logs |
79 | CONFIG_MAGIC_SYSRQ=y # SysRq für Notfälle |
Weiterhin habe ich folgenden Device-Tree für das rootfs_overlay erstellt:
1 | ├── etc |
2 | │ ├── dnsmasq.conf |
3 | │ ├── hostapd.conf |
4 | │ ├── modules-load.d |
5 | │ │ └── modules.conf |
6 | │ ├── network |
7 | │ └── systemd |
8 | │ ├── network |
9 | │ │ └── 20-wlan0.network |
10 | │ └── system |
11 | │ ├── dnsmasq.service |
12 | │ ├── hostapd.service |
13 | │ └── multi-user.target.wants |
14 | ├── root |
15 | │ └── splash.png |
16 | └── usr |
17 | └── bin |
hier meine hostapd.service datei
1 | [Unit] |
2 | Description=Hostapd IEEE 802.11 AP, Cloud and Data Server |
3 | After=sys-subsystem-net-devices-wlan0.device |
4 | Before=network.target |
5 | Wants=network.target |
6 | |
7 | [Service] |
8 | Type=simple |
9 | ExecStartPre=-/usr/sbin/rfkill unblock wifi |
10 | # Set a static IP for the Pi so clients know where the gateway is |
11 | ExecStart=/usr/sbin/hostapd /etc/hostapd.conf |
12 | |
13 | [Install] |
14 | WantedBy=multi-user.target |
und meine dnsmasq.service datei
1 | [Unit] |
2 | Description=DNSmasq DHCP and DNS Server |
3 | # Wait for the WiFi interface to be initialized |
4 | After=hostapd.service |
5 | Wants=hostapd.service |
6 | Before=multi-user.target |
7 | |
8 | [Service] |
9 | Type=simple |
10 | # Ensure we don't start until hostapd has likely initialized the interface |
11 | ExecStartPre=/usr/bin/sleep 2 |
12 | # -k keeps it in the foreground for systemd |
13 | # -C points to your config file |
14 | ExecStart=/usr/sbin/dnsmasq -k -C /etc/dnsmasq.conf |
15 | Restart=on-failure |
16 | RestartSec=5 |
17 | |
18 | [Install] |
19 | WantedBy=multi-user.target |
Was ist daran falsch?