at 18.03-beta 12 kB view raw
1{ lib }: 2rec { 3 pcBase = { 4 name = "pc"; 5 kernelBaseConfig = "defconfig"; 6 # Build whatever possible as a module, if not stated in the extra config. 7 kernelAutoModules = true; 8 kernelTarget = "bzImage"; 9 }; 10 11 pc64 = pcBase // { kernelArch = "x86_64"; }; 12 13 pc32 = pcBase // { kernelArch = "i386"; }; 14 15 pc32_simplekernel = pc32 // { 16 kernelAutoModules = false; 17 }; 18 19 pc64_simplekernel = pc64 // { 20 kernelAutoModules = false; 21 }; 22 23 pogoplug4 = { 24 name = "pogoplug4"; 25 26 gcc = { 27 arch = "armv5te"; 28 float = "soft"; 29 }; 30 31 kernelMajor = "2.6"; 32 kernelBaseConfig = "multi_v5_defconfig"; 33 kernelArch = "arm"; 34 kernelAutoModules = false; 35 kernelExtraConfig = 36 '' 37 # Ubi for the mtd 38 MTD_UBI y 39 UBIFS_FS y 40 UBIFS_FS_XATTR y 41 UBIFS_FS_ADVANCED_COMPR y 42 UBIFS_FS_LZO y 43 UBIFS_FS_ZLIB y 44 UBIFS_FS_DEBUG n 45 ''; 46 kernelMakeFlags = [ "LOADADDR=0x8000" ]; 47 kernelTarget = "uImage"; 48 # TODO reenable once manual-config's config actually builds a .dtb and this is checked to be working 49 #kernelDTB = true; 50 }; 51 52 sheevaplug = { 53 name = "sheevaplug"; 54 kernelMajor = "2.6"; 55 kernelBaseConfig = "multi_v5_defconfig"; 56 kernelArch = "arm"; 57 kernelAutoModules = false; 58 kernelExtraConfig = '' 59 BLK_DEV_RAM y 60 BLK_DEV_INITRD y 61 BLK_DEV_CRYPTOLOOP m 62 BLK_DEV_DM m 63 DM_CRYPT m 64 MD y 65 REISERFS_FS m 66 BTRFS_FS m 67 XFS_FS m 68 JFS_FS m 69 EXT4_FS m 70 USB_STORAGE_CYPRESS_ATACB m 71 72 # mv cesa requires this sw fallback, for mv-sha1 73 CRYPTO_SHA1 y 74 # Fast crypto 75 CRYPTO_TWOFISH y 76 CRYPTO_TWOFISH_COMMON y 77 CRYPTO_BLOWFISH y 78 CRYPTO_BLOWFISH_COMMON y 79 80 IP_PNP y 81 IP_PNP_DHCP y 82 NFS_FS y 83 ROOT_NFS y 84 TUN m 85 NFS_V4 y 86 NFS_V4_1 y 87 NFS_FSCACHE y 88 NFSD m 89 NFSD_V2_ACL y 90 NFSD_V3 y 91 NFSD_V3_ACL y 92 NFSD_V4 y 93 NETFILTER y 94 IP_NF_IPTABLES y 95 IP_NF_FILTER y 96 IP_NF_MATCH_ADDRTYPE y 97 IP_NF_TARGET_LOG y 98 IP_NF_MANGLE y 99 IPV6 m 100 VLAN_8021Q m 101 102 CIFS y 103 CIFS_XATTR y 104 CIFS_POSIX y 105 CIFS_FSCACHE y 106 CIFS_ACL y 107 108 WATCHDOG y 109 WATCHDOG_CORE y 110 ORION_WATCHDOG m 111 112 ZRAM m 113 NETCONSOLE m 114 115 # Disable OABI to have seccomp_filter (required for systemd) 116 # https://github.com/raspberrypi/firmware/issues/651 117 OABI_COMPAT n 118 119 # Fail to build 120 DRM n 121 SCSI_ADVANSYS n 122 USB_ISP1362_HCD n 123 SND_SOC n 124 SND_ALI5451 n 125 FB_SAVAGE n 126 SCSI_NSP32 n 127 ATA_SFF n 128 SUNGEM n 129 IRDA n 130 ATM_HE n 131 SCSI_ACARD n 132 BLK_DEV_CMD640_ENHANCED n 133 134 FUSE_FS m 135 136 # systemd uses cgroups 137 CGROUPS y 138 139 # Latencytop 140 LATENCYTOP y 141 142 # Ubi for the mtd 143 MTD_UBI y 144 UBIFS_FS y 145 UBIFS_FS_XATTR y 146 UBIFS_FS_ADVANCED_COMPR y 147 UBIFS_FS_LZO y 148 UBIFS_FS_ZLIB y 149 UBIFS_FS_DEBUG n 150 151 # Kdb, for kernel troubles 152 KGDB y 153 KGDB_SERIAL_CONSOLE y 154 KGDB_KDB y 155 ''; 156 kernelMakeFlags = [ "LOADADDR=0x0200000" ]; 157 kernelTarget = "uImage"; 158 kernelDTB = true; # Beyond 3.10 159 gcc = { 160 arch = "armv5te"; 161 float = "soft"; 162 }; 163 }; 164 165 raspberrypi = { 166 name = "raspberrypi"; 167 kernelMajor = "2.6"; 168 kernelBaseConfig = "bcmrpi_defconfig"; 169 kernelDTB = true; 170 kernelArch = "arm"; 171 kernelAutoModules = false; 172 kernelExtraConfig = '' 173 BLK_DEV_RAM y 174 BLK_DEV_INITRD y 175 BLK_DEV_CRYPTOLOOP m 176 BLK_DEV_DM m 177 DM_CRYPT m 178 MD y 179 REISERFS_FS m 180 BTRFS_FS y 181 XFS_FS m 182 JFS_FS y 183 EXT4_FS y 184 185 IP_PNP y 186 IP_PNP_DHCP y 187 NFS_FS y 188 ROOT_NFS y 189 TUN m 190 NFS_V4 y 191 NFS_V4_1 y 192 NFS_FSCACHE y 193 NFSD m 194 NFSD_V2_ACL y 195 NFSD_V3 y 196 NFSD_V3_ACL y 197 NFSD_V4 y 198 NETFILTER y 199 IP_NF_IPTABLES y 200 IP_NF_FILTER y 201 IP_NF_MATCH_ADDRTYPE y 202 IP_NF_TARGET_LOG y 203 IP_NF_MANGLE y 204 IPV6 m 205 VLAN_8021Q m 206 207 CIFS y 208 CIFS_XATTR y 209 CIFS_POSIX y 210 CIFS_FSCACHE y 211 CIFS_ACL y 212 213 ZRAM m 214 215 # Disable OABI to have seccomp_filter (required for systemd) 216 # https://github.com/raspberrypi/firmware/issues/651 217 OABI_COMPAT n 218 219 # Fail to build 220 DRM n 221 SCSI_ADVANSYS n 222 USB_ISP1362_HCD n 223 SND_SOC n 224 SND_ALI5451 n 225 FB_SAVAGE n 226 SCSI_NSP32 n 227 ATA_SFF n 228 SUNGEM n 229 IRDA n 230 ATM_HE n 231 SCSI_ACARD n 232 BLK_DEV_CMD640_ENHANCED n 233 234 FUSE_FS m 235 236 # nixos mounts some cgroup 237 CGROUPS y 238 239 # Latencytop 240 LATENCYTOP y 241 ''; 242 kernelTarget = "zImage"; 243 gcc = { 244 arch = "armv6"; 245 fpu = "vfp"; 246 float = "hard"; 247 # TODO(@Ericson2314) what is this and is it a good idea? It was 248 # used in some cross compilation examples but not others. 249 # 250 # abi = "aapcs-linux"; 251 }; 252 }; 253 254 raspberrypi2 = armv7l-hf-multiplatform // { 255 name = "raspberrypi2"; 256 kernelBaseConfig = "bcm2709_defconfig"; 257 kernelDTB = true; 258 kernelAutoModules = false; 259 kernelExtraConfig = '' 260 BLK_DEV_RAM y 261 BLK_DEV_INITRD y 262 BLK_DEV_CRYPTOLOOP m 263 BLK_DEV_DM m 264 DM_CRYPT m 265 MD y 266 REISERFS_FS m 267 BTRFS_FS y 268 XFS_FS m 269 JFS_FS y 270 EXT4_FS y 271 272 IP_PNP y 273 IP_PNP_DHCP y 274 NFS_FS y 275 ROOT_NFS y 276 TUN m 277 NFS_V4 y 278 NFS_V4_1 y 279 NFS_FSCACHE y 280 NFSD m 281 NFSD_V2_ACL y 282 NFSD_V3 y 283 NFSD_V3_ACL y 284 NFSD_V4 y 285 NETFILTER y 286 IP_NF_IPTABLES y 287 IP_NF_FILTER y 288 IP_NF_MATCH_ADDRTYPE y 289 IP_NF_TARGET_LOG y 290 IP_NF_MANGLE y 291 IPV6 m 292 VLAN_8021Q m 293 294 CIFS y 295 CIFS_XATTR y 296 CIFS_POSIX y 297 CIFS_FSCACHE y 298 CIFS_ACL y 299 300 ZRAM m 301 302 # Disable OABI to have seccomp_filter (required for systemd) 303 # https://github.com/raspberrypi/firmware/issues/651 304 OABI_COMPAT n 305 306 # Fail to build 307 DRM n 308 SCSI_ADVANSYS n 309 USB_ISP1362_HCD n 310 SND_SOC n 311 SND_ALI5451 n 312 FB_SAVAGE n 313 SCSI_NSP32 n 314 ATA_SFF n 315 SUNGEM n 316 IRDA n 317 ATM_HE n 318 SCSI_ACARD n 319 BLK_DEV_CMD640_ENHANCED n 320 321 FUSE_FS m 322 323 # nixos mounts some cgroup 324 CGROUPS y 325 326 # Latencytop 327 LATENCYTOP y 328 329 # Disable the common config Xen, it doesn't build on ARM 330 XEN? n 331 ''; 332 kernelTarget = "zImage"; 333 }; 334 335 scaleway-c1 = armv7l-hf-multiplatform // { 336 gcc = { 337 cpu = "cortex-a9"; 338 fpu = "vfpv3"; 339 float = "hard"; 340 }; 341 }; 342 343 utilite = { 344 name = "utilite"; 345 kernelMajor = "2.6"; 346 kernelBaseConfig = "multi_v7_defconfig"; 347 kernelArch = "arm"; 348 kernelAutoModules = false; 349 kernelExtraConfig = 350 '' 351 # Ubi for the mtd 352 MTD_UBI y 353 UBIFS_FS y 354 UBIFS_FS_XATTR y 355 UBIFS_FS_ADVANCED_COMPR y 356 UBIFS_FS_LZO y 357 UBIFS_FS_ZLIB y 358 UBIFS_FS_DEBUG n 359 ''; 360 kernelMakeFlags = [ "LOADADDR=0x10800000" ]; 361 kernelTarget = "uImage"; 362 kernelDTB = true; 363 gcc = { 364 cpu = "cortex-a9"; 365 fpu = "neon"; 366 float = "hard"; 367 }; 368 }; 369 370 guruplug = sheevaplug // { 371 # Define `CONFIG_MACH_GURUPLUG' (see 372 # <http://kerneltrap.org/mailarchive/git-commits-head/2010/5/19/33618>) 373 # and other GuruPlug-specific things. Requires the `guruplug-defconfig' 374 # patch. 375 376 kernelBaseConfig = "guruplug_defconfig"; 377 }; 378 379 fuloong2f_n32 = { 380 name = "fuloong2f_n32"; 381 kernelMajor = "2.6"; 382 kernelBaseConfig = "lemote2f_defconfig"; 383 kernelArch = "mips"; 384 kernelAutoModules = false; 385 kernelExtraConfig = '' 386 MIGRATION n 387 COMPACTION n 388 389 # nixos mounts some cgroup 390 CGROUPS y 391 392 BLK_DEV_RAM y 393 BLK_DEV_INITRD y 394 BLK_DEV_CRYPTOLOOP m 395 BLK_DEV_DM m 396 DM_CRYPT m 397 MD y 398 REISERFS_FS m 399 EXT4_FS m 400 USB_STORAGE_CYPRESS_ATACB m 401 402 IP_PNP y 403 IP_PNP_DHCP y 404 IP_PNP_BOOTP y 405 NFS_FS y 406 ROOT_NFS y 407 TUN m 408 NFS_V4 y 409 NFS_V4_1 y 410 NFS_FSCACHE y 411 NFSD m 412 NFSD_V2_ACL y 413 NFSD_V3 y 414 NFSD_V3_ACL y 415 NFSD_V4 y 416 417 # Fail to build 418 DRM n 419 SCSI_ADVANSYS n 420 USB_ISP1362_HCD n 421 SND_SOC n 422 SND_ALI5451 n 423 FB_SAVAGE n 424 SCSI_NSP32 n 425 ATA_SFF n 426 SUNGEM n 427 IRDA n 428 ATM_HE n 429 SCSI_ACARD n 430 BLK_DEV_CMD640_ENHANCED n 431 432 FUSE_FS m 433 434 # Needed for udev >= 150 435 SYSFS_DEPRECATED_V2 n 436 437 VGA_CONSOLE n 438 VT_HW_CONSOLE_BINDING y 439 SERIAL_8250_CONSOLE y 440 FRAMEBUFFER_CONSOLE y 441 EXT2_FS y 442 EXT3_FS y 443 REISERFS_FS y 444 MAGIC_SYSRQ y 445 446 # The kernel doesn't boot at all, with FTRACE 447 FTRACE n 448 ''; 449 kernelTarget = "vmlinux"; 450 gcc = { 451 arch = "loongson2f"; 452 abi = "n32"; 453 }; 454 }; 455 456 beaglebone = armv7l-hf-multiplatform // { 457 name = "beaglebone"; 458 kernelBaseConfig = "bb.org_defconfig"; 459 kernelAutoModules = false; 460 kernelExtraConfig = ""; # TBD kernel config 461 kernelTarget = "zImage"; 462 }; 463 464 armv7l-hf-multiplatform = { 465 name = "armv7l-hf-multiplatform"; 466 kernelMajor = "2.6"; # Using "2.6" enables 2.6 kernel syscalls in glibc. 467 kernelBaseConfig = "multi_v7_defconfig"; 468 kernelArch = "arm"; 469 kernelDTB = true; 470 kernelAutoModules = true; 471 kernelPreferBuiltin = true; 472 kernelTarget = "zImage"; 473 kernelExtraConfig = '' 474 # Serial port for Raspberry Pi 3. Upstream forgot to add it to the ARMv7 defconfig. 475 SERIAL_8250_BCM2835AUX y 476 SERIAL_8250_EXTENDED y 477 SERIAL_8250_SHARE_IRQ y 478 479 # Fix broken sunxi-sid nvmem driver. 480 TI_CPTS y 481 482 # Hangs ODROID-XU4 483 ARM_BIG_LITTLE_CPUIDLE n 484 ''; 485 gcc = { 486 # Some table about fpu flags: 487 # http://community.arm.com/servlet/JiveServlet/showImage/38-1981-3827/blogentry-103749-004812900+1365712953_thumb.png 488 # Cortex-A5: -mfpu=neon-fp16 489 # Cortex-A7 (rpi2): -mfpu=neon-vfpv4 490 # Cortex-A8 (beaglebone): -mfpu=neon 491 # Cortex-A9: -mfpu=neon-fp16 492 # Cortex-A15: -mfpu=neon-vfpv4 493 494 # More about FPU: 495 # https://wiki.debian.org/ArmHardFloatPort/VfpComparison 496 497 # vfpv3-d16 is what Debian uses and seems to be the best compromise: NEON is not supported in e.g. Scaleway or Tegra 2, 498 # and the above page suggests NEON is only an improvement with hand-written assembly. 499 arch = "armv7-a"; 500 fpu = "vfpv3-d16"; 501 float = "hard"; 502 503 # For Raspberry Pi the 2 the best would be: 504 # cpu = "cortex-a7"; 505 # fpu = "neon-vfpv4"; 506 }; 507 }; 508 509 aarch64-multiplatform = { 510 name = "aarch64-multiplatform"; 511 kernelMajor = "2.6"; # Using "2.6" enables 2.6 kernel syscalls in glibc. 512 kernelBaseConfig = "defconfig"; 513 kernelArch = "arm64"; 514 kernelDTB = true; 515 kernelAutoModules = true; 516 kernelPreferBuiltin = true; 517 kernelExtraConfig = '' 518 # Raspberry Pi 3 stuff. Not needed for kernels >= 4.10. 519 ARCH_BCM2835 y 520 BCM2835_MBOX y 521 BCM2835_WDT y 522 RASPBERRYPI_FIRMWARE y 523 RASPBERRYPI_POWER y 524 SERIAL_8250_BCM2835AUX y 525 SERIAL_8250_EXTENDED y 526 SERIAL_8250_SHARE_IRQ y 527 528 # Cavium ThunderX stuff. 529 PCI_HOST_THUNDER_ECAM y 530 531 # Nvidia Tegra stuff. 532 PCI_TEGRA y 533 534 # The default (=y) forces us to have the XHCI firmware available in initrd, 535 # which our initrd builder can't currently do easily. 536 USB_XHCI_TEGRA m 537 ''; 538 kernelTarget = "Image"; 539 gcc = { 540 arch = "armv8-a"; 541 }; 542 }; 543 544 riscv-multiplatform = bits: { 545 name = "riscv-multiplatform"; 546 kernelArch = "riscv"; 547 bfdEmulation = "elf${bits}lriscv"; 548 kernelTarget = "vmlinux"; 549 kernelAutoModules = true; 550 kernelBaseConfig = "defconfig"; 551 kernelExtraConfig = '' 552 FTRACE n 553 SERIAL_OF_PLATFORM y 554 ''; 555 }; 556 557 selectBySystem = system: { 558 "i686-linux" = pc32; 559 "x86_64-linux" = pc64; 560 "armv5tel-linux" = sheevaplug; 561 "armv6l-linux" = raspberrypi; 562 "armv7l-linux" = armv7l-hf-multiplatform; 563 "aarch64-linux" = aarch64-multiplatform; 564 "mipsel-linux" = fuloong2f_n32; 565 }.${system} or pcBase; 566}