Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
 
 
 
 
 
 

567 Zeilen
12 KiB

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