Compare commits

..

7 Commits

Author SHA1 Message Date
Timmy Welch
d9f241f304 Update to 6.18.5 2026-01-19 19:38:31 -08:00
Timmy Welch
e0aea21341 Merge gokr-build-uboot into gokr-rebuild-uboot 2026-01-19 19:31:46 -08:00
Timmy Welch
0e1b7b2846 Add quirks for adata sd card 2026-01-19 18:45:47 -08:00
Timmy Welch
5c5b71cda4 Make build commands more robust 2026-01-19 18:41:18 -08:00
Timmy Welch
3f9569c706 Fix bootscript 2026-01-19 18:41:18 -08:00
Timmy Welch
ef7d105368 Update to 6.18.5 2026-01-19 18:41:18 -08:00
Timmy Welch
7aa87ab30f Updates 2026-01-19 18:40:17 -08:00
36 changed files with 302 additions and 498 deletions

12
.gitignore vendored Normal file
View File

@@ -0,0 +1,12 @@
/_build/lib
/_build/vmlinuz
/_build/vmlinuz.config
/_build/u-boot-rockchip.bin
/_build/dtbs
/_build/*.dtb
/_build/gokr-rebuild*
/_build/overlays
/_build/Dockerfile
/_build/src_build
/_build/*.tar.gz
/_build/*.tar.xz

View File

@@ -1,49 +0,0 @@
FROM docker.io/library/debian:trixie
RUN apt-get update && apt-get install -y \
crossbuild-essential-arm64 \
build-essential bc libssl-dev bison flex libelf-dev ncurses-dev ca-certificates zstd kmod python3
COPY gokr-rebuild-kernel /usr/bin/gokr-rebuild-kernel
COPY config.addendum.txt /usr/_src/config.addendum.txt
COPY config.addendum.txt /usr/_src/.config
COPY config.addendum.txt /usr/src/.config
COPY patch/0001-gokrazy-logo.patch /usr/_src/0001-gokrazy-logo.patch
COPY patch/drv-spi-spidev-remove-warnings.patch /usr/_src/drv-spi-spidev-remove-warnings.patch
COPY patch/general-add-hdmi-mks-ips50-resolutions.patch /usr/_src/general-add-hdmi-mks-ips50-resolutions.patch
COPY patch/general-add-pll-hdmi-timings.patch /usr/_src/general-add-pll-hdmi-timings.patch
COPY patch/general-cryptov1-trng.patch /usr/_src/general-cryptov1-trng.patch
COPY patch/general-disable-mtu-validation.patch /usr/_src/general-disable-mtu-validation.patch
COPY patch/general-drm-rockchip-Set-dma-mask-to-64-bit.patch /usr/_src/general-drm-rockchip-Set-dma-mask-to-64-bit.patch
COPY patch/general-fix-es8316-kernel-panic.patch /usr/_src/general-fix-es8316-kernel-panic.patch
COPY patch/general-fix-mmc-signal-voltage-before-reboot.patch /usr/_src/general-fix-mmc-signal-voltage-before-reboot.patch
COPY patch/general-hdmi-clock-fixes.patch /usr/_src/general-hdmi-clock-fixes.patch
COPY patch/general-increase-spdif-dma-burst.patch /usr/_src/general-increase-spdif-dma-burst.patch
COPY patch/general-increasing_DMA_block_memory_allocation_to_2048.patch /usr/_src/general-increasing_DMA_block_memory_allocation_to_2048.patch
COPY patch/general-pl330-01-fix-periodic-transfers.patch /usr/_src/general-pl330-01-fix-periodic-transfers.patch
COPY patch/general-pl330-02-add-support-for-interleaved-transfers.patch /usr/_src/general-pl330-02-add-support-for-interleaved-transfers.patch
COPY patch/general-pl330-04-bigger-mcode-buffer.patch /usr/_src/general-pl330-04-bigger-mcode-buffer.patch
COPY patch/general-pl330-05-fix-unbalanced-power-down.patch /usr/_src/general-pl330-05-fix-unbalanced-power-down.patch
COPY patch/general-pl330-06-fix-buffer-underruns.patch /usr/_src/general-pl330-06-fix-buffer-underruns.patch
COPY patch/general-possibility-of-disabling-rk808-rtc.patch /usr/_src/general-possibility-of-disabling-rk808-rtc.patch
COPY patch/general-rk808-configurable-switch-voltage-steps.patch /usr/_src/general-rk808-configurable-switch-voltage-steps.patch
COPY patch/general-v4l2-iep-driver.patch /usr/_src/general-v4l2-iep-driver.patch
COPY patch/media-0001-Add-rkvdec-Support-v5.patch /usr/_src/media-0001-Add-rkvdec-Support-v5.patch
COPY patch/media-0002-media-rkvdec-remove-vb2_is_busy-check-in-rkvdec_s_ct.patch /usr/_src/media-0002-media-rkvdec-remove-vb2_is_busy-check-in-rkvdec_s_ct.patch
COPY patch/media-0002-v4l2-core-Initialize-h264-frame_mbs_only_flag-.patch /usr/_src/media-0002-v4l2-core-Initialize-h264-frame_mbs_only_flag-.patch
COPY patch/media-0003-rk3568-disable-hantro-h264.patch /usr/_src/media-0003-rk3568-disable-hantro-h264.patch
COPY patch/net-ethernet-realtek-add-r8169-LED-configuration-from-OF.patch /usr/_src/net-ethernet-realtek-add-r8169-LED-configuration-from-OF.patch
COPY patch/regulator-add-fan53200-driver.patch /usr/_src/regulator-add-fan53200-driver.patch
COPY patch/rk3588-0010-fix-clk-divisions.patch /usr/_src/rk3588-0010-fix-clk-divisions.patch
COPY patch/rk3588-1063-arm64-dts-rockchip-Enable-automatic-fan-control-on-t.patch /usr/_src/rk3588-1063-arm64-dts-rockchip-Enable-automatic-fan-control-on-t.patch
COPY patch/rk3588-1201-arm64-dts-rockchip-Enable-the-NPU-on-CM3588.patch /usr/_src/rk3588-1201-arm64-dts-rockchip-Enable-the-NPU-on-CM3588.patch
COPY patch/rk35xx-montjoie-crypto-v2-rk35xx.patch /usr/_src/rk35xx-montjoie-crypto-v2-rk35xx.patch
RUN echo 'builduser:x:1000:1000:nobody:/:/bin/sh' >> /etc/passwd && \
chown -R 1000:1000 /usr/src /usr/_src
USER builduser
WORKDIR /usr/src
ENV GOKRAZY_IN_DOCKER=1
ENTRYPOINT ["/usr/bin/gokr-rebuild-kernel"]

View File

@@ -394,200 +394,3 @@ CONFIG_BPQETHER=y
CONFIG_BAYCOM_SER_FDX=y CONFIG_BAYCOM_SER_FDX=y
CONFIG_BAYCOM_SER_HDX=y CONFIG_BAYCOM_SER_HDX=y
CONFIG_YAM=y CONFIG_YAM=y
# Digital Potentiometers
# CONFIG_AD525X_DPOT=y
# CONFIG_AD525X_DPOT_I2C=y
# CONFIG_AD525X_DPOT_SPI=y
# For tinyconfig
CONFIG_EXT4_FS=y
CONFIG_EXT4_FS_POSIX_ACL=y
CONFIG_NET=y
CONFIG_INET=y
CONFIG_NETFILTER=y
CONFIG_IP_MULTICAST=y
CONFIG_UNIX=y
# tcpdump
CONFIG_PACKET=y
# ??
CONFIG_POSIX_MQUEUE=y
CONFIG_BINFMT_SCRIPT=y
CONFIG_BINFMT_ELF=y
# Possibly need more for podman
CONFIG_CGROUPS=y
CONFIG_SUSPEND=y
CONFIG_CPU_IDLE=y
CONFIG_ARM_PSCI_CPUIDLE=y
CONFIG_CPU_FREQ=y
CONFIG_CPU_FREQ_GOV_ATTR_SET=y
CONFIG_CPU_FREQ_GOV_COMMON=y
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
CONFIG_CPU_FREQ_GOV_USERSPACE=y
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y
CONFIG_ROCKCHIP_ERRATUM_3588001=y
CONFIG_ARM64_ERRATUM_1165522=y
CONFIG_ARM64_ERRATUM_1319367=y
CONFIG_ARM64_ERRATUM_1530923=y
CONFIG_ACPI=y
# CONFIG_SECCOMP=y
# CONFIG_SECCOMP_FILTER=y
CONFIG_BLOCK=y
# block device writeback performance
CONFIG_BLK_WBT=y
CONFIG_COMPACTION=y
CONFIG_ZONE_DMA=y
CONFIG_ZONE_DMA32=y
CONFIG_VM_EVENT_COUNTERS=y
CONFIG_PCI=y
CONFIG_DEVTMPFS=y
CONFIG_DEVTMPFS_MOUNT=y
CONFIG_STANDALONE=y
CONFIG_PREVENT_FIRMWARE_BUILD=y
CONFIG_VEXPRESS_CONFIG=y
# Check
CONFIG_ARM_SCMI_PROTOCOL=y
# Check
CONFIG_MTD=y
# Plan on using a m2 sata adapter
CONFIG_ATA=y
CONFIG_NETDEVICES=y
CONFIG_SOUND=y
CONFIG_USB_SUPPORT=y
CONFIG_MMC=y
CONFIG_MMC_DW=y
CONFIG_MMC_DW_ROCKCHIP=y
CONFIG_NEW_LEDS=y
CONFIG_RTC_CLASS=y
CONFIG_FILE_LOCKING=y
CONFIG_MISC_FILESYSTEMS=y
CONFIG_INOTIFY_USER=y
CONFIG_VFAT_FS=y
# CONFIG_EXFAT_FS
CONFIG_PROC_FS=y
CONFIG_SYSFS=y
CONFIG_CONFIGFS_FS=y
CONFIG_EFI=y
CONFIG_EFI_PARTITION=y
CONFIG_EFIVAR_FS=y
# CONFIG_SECURITYFS # No TPM for now
CONFIG_EXPERT=n
# Fuck nfs
CONFIG_NETWORK_FILESYSTEMS=n
# MMC???
CONFIG_MTD_BLKDEVS=y
CONFIG_MTD_BLOCK=y
CONFIG_MTD=y
# ???
CONFIG_MMC_BLOCK_MINORS=32
# Other arm
CONFIG_ARM64_SVE=y
CONFIG_ARM64_SME=y
CONFIG_ARM64_CONTPTE=y
# Actually read divices
CONFIG_BLK_DEV_SD=y
# Blu-ray ripping?
CONFIG_CHR_DEV_SG=y
CONFIG_ZRAM=y
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_LOOP=y
CONFIG_ZRAM_BACKEND_LZ4=y
CONFIG_ZRAM_BACKEND_LZO=y
# Rockchip i2c
CONFIG_I2C=y
CONFIG_I2C_RK3X=y
# Rockchip SPI
CONFIG_SPI_ROCKCHIP=y
CONFIG_SPI_ROCKCHIP_SFC=y
# ARM stuff
CONFIG_ARM_SCPI_PROTOCOL=y
CONFIG_ARM_SDE_INTERFACE=y
# IP_ADVANCED_ROUTER=y # May need for podman
# NET_IPIP # Shouldn't be needed
CONFIG_BOOT_CONFIG=y # Almost definitely needed
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
# CC_OPTIMIZE_FOR_PERFORMANCE=y
# memory
CONFIG_CMA=y
# PM
CONFIG_REGULATOR=y
CONFIG_REGULATOR_RK808=y
CONFIG_ROCKCHIP_PM_DOMAINS=y
# RCU
CONFIG_PREEMPT_RCU=y
# USB
CONFIG_USB=y
CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
#
# MMC/SD/SDIO Host Controller Drivers
#
# CONFIG_MMC_DEBUG is not set
CONFIG_MMC_ARMMMCI=y
CONFIG_MMC_STM32_SDMMC=y
CONFIG_MMC_SDHCI=y
CONFIG_MMC_SDHCI_IO_ACCESSORS=y
# CONFIG_MMC_SDHCI_PCI is not set
CONFIG_MMC_SDHCI_ACPI=y
CONFIG_MMC_SDHCI_PLTFM=y
CONFIG_MMC_SDHCI_OF_ARASAN=y
# CONFIG_MMC_SDHCI_OF_AT91 is not set
CONFIG_MMC_SDHCI_OF_DWCMSHC=y
CONFIG_MMC_SDHCI_CADENCE=y
CONFIG_MMC_SDHCI_F_SDH30=y
# CONFIG_MMC_SDHCI_MILBEAUT is not set
# CONFIG_MMC_TIFM_SD is not set
CONFIG_MMC_SPI=y
# CONFIG_MMC_CB710 is not set
# CONFIG_MMC_VIA_SDMMC is not set
CONFIG_MMC_DW=y
CONFIG_MMC_DW_PLTFM=y
# CONFIG_MMC_DW_BLUEFIELD is not set
CONFIG_MMC_DW_EXYNOS=y
CONFIG_MMC_DW_HI3798CV200=y
# CONFIG_MMC_DW_HI3798MV200 is not set
CONFIG_MMC_DW_K3=y
# CONFIG_MMC_DW_PCI is not set
CONFIG_MMC_DW_ROCKCHIP=y
# CONFIG_MMC_VUB300 is not set
# CONFIG_MMC_USHC is not set
# CONFIG_MMC_USDHI6ROL0 is not set
CONFIG_MMC_CQHCI=y
CONFIG_MMC_HSQ=y
# CONFIG_MMC_TOSHIBA_PCI is not set
CONFIG_MMC_MTK=y
CONFIG_MMC_SDHCI_XENON=y
CONFIG_SCSI_UFSHCD=y
CONFIG_SCSI_UFS_BSG=y
# CONFIG_SCSI_UFS_HWMON is not set
# CONFIG_SCSI_UFSHCD_PCI is not set
CONFIG_SCSI_UFSHCD_PLATFORM=y
# CONFIG_SCSI_UFS_CDNS_PLATFORM is not set
# CONFIG_SCSI_UFS_DWC_TC_PLATFORM is not set
CONFIG_SCSI_UFS_ROCKCHIP=y
# CONFIG_MEMSTICK is not set
CONFIG_NEW_LEDS=y
CONFIG_LEDS_CLASS=y
# CONFIG_LEDS_CLASS_FLASH is not set
# CONFIG_LEDS_CLASS_MULTICOLOR is not set
# CONFIG_LEDS_BRIGHTNESS_HW_CHANGED is not set

Binary file not shown.

View File

@@ -1 +1 @@
https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.18.5.tar.xz https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.18.6.tar.xz

View File

@@ -14,8 +14,11 @@ import (
"strconv" "strconv"
"strings" "strings"
) )
var firmware = []string{"arm/mali/arch10.8/mali_csffw.bin", "rtl_nic/rtl8125b-2.fw"}
var firmwareDir, _ = filepath.Abs("firmware") var (
firmware = []string{"arm/mali/arch10.8/mali_csffw.bin", "rtl_nic/rtl8125b-2.fw"}
firmwareDir, _ = filepath.Abs("firmware")
)
func downloadKernel(latest string) error { func downloadKernel(latest string) error {
if _, err := os.Stat(filepath.Base(latest)); err == nil { if _, err := os.Stat(filepath.Base(latest)); err == nil {
@@ -47,7 +50,6 @@ func downloadKernel(latest string) error {
return out.Close() return out.Close()
} }
func downloadWhence() (map[string]string, error) { func downloadWhence() (map[string]string, error) {
whenceMap := make(map[string]string) whenceMap := make(map[string]string)
uri := "https://gitlab.com/api/v4/projects/48890189/repository/files/WHENCE/raw?ref=main" uri := "https://gitlab.com/api/v4/projects/48890189/repository/files/WHENCE/raw?ref=main"
@@ -56,19 +58,19 @@ func downloadWhence() (map[string]string, error) {
return whenceMap, err return whenceMap, err
} }
defer resp.Body.Close() defer resp.Body.Close()
whenceBytes,err := io.ReadAll(resp.Body) whenceBytes, err := io.ReadAll(resp.Body)
if err != nil { if err != nil {
return whenceMap, err return whenceMap, err
} }
whence := strings.Split(string(whenceBytes), "\n") whence := strings.Split(string(whenceBytes), "\n")
for _,line := range whence { for _, line := range whence {
if file,ok := strings.CutPrefix(line, "File: "); ok { if file, ok := strings.CutPrefix(line, "File: "); ok {
whenceMap[file] = file whenceMap[file] = file
} }
if file,ok := strings.CutPrefix(line, "RawFile: "); ok { if file, ok := strings.CutPrefix(line, "RawFile: "); ok {
whenceMap[file] = file whenceMap[file] = file
} }
if l,ok := strings.CutPrefix(line, "Link: "); ok { if l, ok := strings.CutPrefix(line, "Link: "); ok {
if link, file, ok := strings.Cut(l, " -> "); ok { if link, file, ok := strings.Cut(l, " -> "); ok {
dest := filepath.Join(filepath.Dir(link), file) dest := filepath.Join(filepath.Dir(link), file)
whenceMap[link] = dest whenceMap[link] = dest
@@ -77,13 +79,14 @@ func downloadWhence() (map[string]string, error) {
} }
return whenceMap, nil return whenceMap, nil
} }
func downloadFirmware() ([]string, error) { func downloadFirmware() ([]string, error) {
firmwarePaths := make([]string, 0, len(firmware)) firmwarePaths := make([]string, 0, len(firmware))
whence, err := downloadWhence() whence, err := downloadWhence()
if err != nil { if err != nil {
return firmwarePaths, err return firmwarePaths, err
} }
for _, f := range firmware{ for _, f := range firmware {
folder := filepath.Dir(f) folder := filepath.Dir(f)
path, ok := whence[f] path, ok := whence[f]
if !ok { if !ok {
@@ -94,7 +97,7 @@ func downloadFirmware() ([]string, error) {
log.Printf("downloading firmware: %q to %q", path, f) log.Printf("downloading firmware: %q to %q", path, f)
os.MkdirAll(filepath.Join("firmware", folder), 0777) os.MkdirAll(filepath.Join("firmware", folder), 0o777)
out, err := os.Create(filepath.Join("firmware", f)) out, err := os.Create(filepath.Join("firmware", f))
if err != nil { if err != nil {
return firmwarePaths, err return firmwarePaths, err
@@ -125,6 +128,7 @@ func applyPatches(srcdir string) error {
if err != nil { if err != nil {
return err return err
} }
for _, patch := range patches { for _, patch := range patches {
log.Printf("applying patch %q", patch) log.Printf("applying patch %q", patch)
f, err := os.Open(patch) f, err := os.Open(patch)
@@ -146,15 +150,22 @@ func applyPatches(srcdir string) error {
return nil return nil
} }
func compile(cross, flavor string, firmwarePaths []string, tiny bool) error { func compile(cross, flavor string, firmwarePaths []string) error {
defconfig := exec.Command("make", "defconfig") defconfig := exec.Command("make", "ARCH="+os.Getenv("ARCH"), "defconfig")
if tiny { if flavor == "defconfig" {
defconfig = exec.Command("make", "tinyconfig") defconfig = exec.Command("make", "ARCH="+os.Getenv("ARCH"), "olddefconfig")
cpConfig := exec.Command("cp", "/usr/_src/defconfig", ".config")
cpConfig.Stdout = os.Stdout
cpConfig.Stderr = os.Stderr
if err := cpConfig.Run(); err != nil {
return fmt.Errorf("make cpConfig: %v", err)
} }
if flavor == "raspberrypi" { } else if flavor == "raspberrypi" {
// TODO(https://github.com/gokrazy/gokrazy/issues/223): is it // TODO(https://github.com/gokrazy/gokrazy/issues/223): is it
// necessary/desirable to switch to bcm2712_defconfig? // necessary/desirable to switch to bcm2712_defconfig?
defconfig = exec.Command("make", "ARCH=arm64", "bcm2711_defconfig") defconfig = exec.Command("make", "ARCH=arm64", "bcm2711_defconfig")
} else if strings.HasSuffix(flavor, "_defconfig") {
defconfig = exec.Command("make", "ARCH="+os.Getenv("ARCH"), flavor)
} }
defconfig.Stdout = os.Stdout defconfig.Stdout = os.Stdout
@@ -172,7 +183,7 @@ func compile(cross, flavor string, firmwarePaths []string, tiny bool) error {
return fmt.Errorf("make mod2noconfig: %v", err) return fmt.Errorf("make mod2noconfig: %v", err)
} }
f, err := os.OpenFile(".config", os.O_APPEND|os.O_WRONLY, 0644) f, err := os.OpenFile(".config", os.O_APPEND|os.O_WRONLY, 0o644)
if err != nil { if err != nil {
return err return err
} }
@@ -186,7 +197,7 @@ func compile(cross, flavor string, firmwarePaths []string, tiny bool) error {
} }
if len(firmwarePaths) > 0 { if len(firmwarePaths) > 0 {
fmt.Fprintf(f, "CONFIG_EXTRA_FIRMWARE=%q\n", strings.Join(firmwarePaths, " ")) fmt.Fprintf(f, "CONFIG_EXTRA_FIRMWARE=%q\n", strings.Join(firmwarePaths, " "))
fmt.Fprintf(f, "CONFIG_EXTRA_FIRMWARE_DIR=%q\n",firmwareDir) fmt.Fprintf(f, "CONFIG_EXTRA_FIRMWARE_DIR=%q\n", firmwareDir)
} }
if err := f.Close(); err != nil { if err := f.Close(); err != nil {
@@ -243,7 +254,7 @@ func indockerMain() {
flavor := flag.String("flavor", flavor := flag.String("flavor",
"vanilla", "vanilla",
"which kernel flavor to build. one of vanilla (kernel.org) or raspberrypi (https://github.com/raspberrypi/linux/tags)") "which kernel flavor to build. one of vanilla (kernel.org) or raspberrypi (https://github.com/raspberrypi/linux/tags)")
tiny := flag.Bool("tiny", false, "Tries to use tinyconfig instead of defconfig") persistent := flag.Bool("persistent", false, "Mounts a folder into the docker container to persist kernel source for debugging")
flag.Parse() flag.Parse()
latest := flag.Arg(0) latest := flag.Arg(0)
@@ -251,17 +262,40 @@ func indockerMain() {
log.Fatalf("syntax: %s <upstream-URL>", os.Args[0]) log.Fatalf("syntax: %s <upstream-URL>", os.Args[0])
} }
log.Printf("downloading kernel source: %s", latest) log.Printf("downloading kernel source: %s", latest)
if err := downloadKernel(latest); err != nil { err := downloadKernel(latest)
if err != nil {
log.Fatal(err) log.Fatal(err)
} }
srcdir := strings.TrimSuffix(filepath.Base(latest), ".tar.gz")
srcdir = strings.TrimSuffix(srcdir, ".tar.xz")
if *flavor != "vanilla" && strings.HasPrefix(latest, "https://github.com/") {
s := strings.SplitN(latest, "/", 6)
if len(s) < 6 {
srcdir = "linux-" + srcdir
} else {
srcdir = s[4] + "-" + srcdir
}
}
if *persistent {
if _, err = os.Stat(srcdir); err == nil {
err = os.ErrExist
} else {
err = nil
}
}
unpacked := false
if err == nil {
log.Printf("unpacking kernel source") log.Printf("unpacking kernel source")
// untar := exec.Command("tar", "xkf", filepath.Base(latest)) untar := exec.Command("tar", "xf", filepath.Base(latest))
// untar.Stdout = os.Stdout untar.Stdout = os.Stdout
// untar.Stderr = os.Stderr untar.Stderr = os.Stderr
// if err := untar.Run(); err != nil { if err := untar.Run(); err != nil {
// log.Fatalf("untar: %v", err) log.Fatalf("untar: %v", err)
// } }
unpacked = true
}
srcFiles, err := filepath.Glob("/usr/_src/*") srcFiles, err := filepath.Glob("/usr/_src/*")
if err != nil { if err != nil {
log.Fatalf("failed to find source files: %v", err) log.Fatalf("failed to find source files: %v", err)
@@ -281,20 +315,14 @@ func indockerMain() {
} }
file.Close() file.Close()
newFile.Close() newFile.Close()
if err != nil {
log.Fatalf("Failed to rename %v: %v", fileName, err)
}
}
srcdir := strings.TrimSuffix(filepath.Base(latest), ".tar.xz")
if *flavor == "raspberrypi" {
srcdir = strings.TrimSuffix("linux-"+filepath.Base(latest), ".tar.gz")
} }
log.Printf("applying patches") log.Printf("applying patches")
// if err := applyPatches(srcdir); err != nil { if unpacked {
// log.Fatal(err) if err := applyPatches(srcdir); err != nil {
// } log.Fatal(err)
}
}
firmwarePaths, err := downloadFirmware() firmwarePaths, err := downloadFirmware()
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
@@ -310,9 +338,8 @@ func indockerMain() {
os.Setenv("CROSS_COMPILE", "aarch64-linux-gnu-") os.Setenv("CROSS_COMPILE", "aarch64-linux-gnu-")
} }
log.Printf("compiling kernel") log.Printf("compiling kernel")
if err := compile(*cross, *flavor, firmwarePaths, *tiny); err != nil { if err := compile(*cross, *flavor, firmwarePaths); err != nil {
log.Fatal(err) log.Fatal(err)
} }
@@ -323,27 +350,7 @@ func indockerMain() {
if err := copyFile("/tmp/buildresult/vmlinuz.config", ".config"); err != nil { if err := copyFile("/tmp/buildresult/vmlinuz.config", ".config"); err != nil {
log.Fatal(err) log.Fatal(err)
} }
dtbs, err := filepath.Glob("arch/arm64/boot/dts/*/*.dtb")
switch *flavor {
case "vanilla":
// cp := exec.Command("cp", "-r", filepath.Join("arch/arm64/boot/dts/"), "/tmp/buildresult/dts")
// cp.Stdout = os.Stdout
// cp.Stderr = os.Stderr
// log.Printf("%v", cp.Args)
// if err := cp.Run(); err != nil {
// log.Fatalf("%v: %v", cp.Args, err)
// }
for dest, source := range map[string]string{
"rk3588-friendlyelec-cm3588-nas.dtb": "rockchip/rk3588-friendlyelec-cm3588-nas.dtb",
} {
if err := copyFile("/tmp/buildresult/"+dest, "arch/arm64/boot/dts/"+source); err != nil {
log.Fatal(err)
}
}
case "raspberrypi":
// copy all dtb and dtbos (+ overlay_map) to buildresult
dtbs, err := filepath.Glob("arch/arm64/boot/dts/broadcom/*.dtb")
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
} }
@@ -357,8 +364,10 @@ func indockerMain() {
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
} }
if _, err = os.Stat("arch/arm64/boot/dts/overlays/overlay_map.dtb"); err == nil {
dtbos = append(dtbos, "arch/arm64/boot/dts/overlays/overlay_map.dtb") dtbos = append(dtbos, "arch/arm64/boot/dts/overlays/overlay_map.dtb")
if err := os.MkdirAll("/tmp/buildresult/overlays", 0755); err != nil { }
if err := os.MkdirAll("/tmp/buildresult/overlays", 0o755); err != nil {
log.Fatal(err) log.Fatal(err)
} }
for _, fn := range dtbos { for _, fn := range dtbos {
@@ -366,7 +375,6 @@ func indockerMain() {
log.Fatal(err) log.Fatal(err)
} }
} }
}
} else { } else {
if err := copyFile("/tmp/buildresult/vmlinuz", "arch/x86/boot/bzImage"); err != nil { if err := copyFile("/tmp/buildresult/vmlinuz", "arch/x86/boot/bzImage"); err != nil {
log.Fatal(err) log.Fatal(err)

View File

@@ -22,10 +22,11 @@ RUN apt-get update && apt-get install -y \
{{ if (eq .Cross "arm64") -}} {{ if (eq .Cross "arm64") -}}
crossbuild-essential-arm64 \ crossbuild-essential-arm64 \
{{ end -}} {{ end -}}
build-essential bc libssl-dev bison flex libelf-dev ncurses-dev ca-certificates zstd kmod python3 build-essential bc libssl-dev bison flex libelf-dev ncurses-dev ca-certificates zstd kmod python3 git
COPY gokr-rebuild-kernel /usr/bin/gokr-rebuild-kernel COPY gokr-rebuild-kernel /usr/bin/gokr-rebuild-kernel
COPY config.addendum.txt /usr/_src/config.addendum.txt COPY config.addendum.txt /usr/_src/config.addendum.txt
COPY defconfig /usr/_src/defconfig
COPY config.addendum.txt /usr/_src/.config COPY config.addendum.txt /usr/_src/.config
COPY config.addendum.txt /usr/src/.config COPY config.addendum.txt /usr/src/.config
{{- range $idx, $path := .Patches }} {{- range $idx, $path := .Patches }}
@@ -117,7 +118,7 @@ func rebuildKernel() error {
cross := flag.String("cross", cross := flag.String("cross",
"arm64", "arm64",
"if non-empty, cross-compile for the specified arch (one of 'arm64')") "if non-empty, cross-compile for the specified arch (one of 'arm64')")
tiny := flag.Bool("tiny", false, "Tries to use tinyconfig instead of defconfig") persistent := flag.Bool("persistent", false, "Mounts a folder into the docker container to persist kernel source for debugging")
flavor := flag.String("flavor", flavor := flag.String("flavor",
"vanilla", "vanilla",
@@ -239,14 +240,17 @@ func rebuildKernel() error {
} }
kernelName := path.Base(string(upstreamURL)) kernelName := path.Base(string(upstreamURL))
_, err = os.Stat(kernelName) _, err = os.Stat(kernelName)
log.Printf("Checking for downloaded kernel %s: %v", kernelName, err) log.Printf("Check for downloaded kernel %s: %v", kernelName, err)
// dockerArgs = append(dockerArgs, fmt.Sprintf("--mount=type=tmpfs,tmpfs-size=%d%s,destination=%s,U", 5, "G", "/usr/src")) // Ramfs for faster build.... maybe
os.MkdirAll("./src_build", 0o777)
dockerArgs = append(dockerArgs, "-v", "./src_build:/usr/src")
if err == nil { if err == nil {
absKernelName, _ := filepath.Abs(kernelName) absKernelName, _ := filepath.Abs(kernelName)
dockerArgs = append(dockerArgs, "--volume", absKernelName+":/usr/src/"+kernelName) dockerArgs = append(dockerArgs, "--volume", absKernelName+":/usr/src/"+kernelName)
} }
if *persistent {
os.MkdirAll("./src_build", 0o777)
dockerArgs = append(dockerArgs, "-v", "./src_build:/usr/src")
} else {
dockerArgs = append(dockerArgs, fmt.Sprintf("--mount=type=tmpfs,tmpfs-size=%d%s,destination=%s,U", 5, "G", "/usr/src")) // Ramfs for faster build.... maybe
}
if !*keepBuildContainer { if !*keepBuildContainer {
dockerArgs = append(dockerArgs, "--rm") dockerArgs = append(dockerArgs, "--rm")
@@ -258,7 +262,7 @@ func rebuildKernel() error {
"gokr-rebuild-kernel", "gokr-rebuild-kernel",
"-cross="+*cross, "-cross="+*cross,
"-flavor="+*flavor, "-flavor="+*flavor,
fmt.Sprintf("-tiny=%v", *tiny), fmt.Sprintf("-persistent=%v", *persistent),
strings.TrimSpace(string(upstreamURL))) strings.TrimSpace(string(upstreamURL)))
dockerRun = exec.Command(executable, dockerArgs...) dockerRun = exec.Command(executable, dockerArgs...)
@@ -269,7 +273,7 @@ func rebuildKernel() error {
if err := dockerRun.Run(); err != nil { if err := dockerRun.Run(); err != nil {
return fmt.Errorf("%s run: %v (cmd: %v)", execName, err, dockerRun.Args) return fmt.Errorf("%s run: %v (cmd: %v)", execName, err, dockerRun.Args)
} }
_=kernelPath
if err := copyFile(kernelPath, "vmlinuz"); err != nil { if err := copyFile(kernelPath, "vmlinuz"); err != nil {
return err return err
} }

View File

@@ -1,6 +1,7 @@
package main package main
import ( import (
"errors"
"fmt" "fmt"
"io" "io"
"log" "log"
@@ -17,6 +18,8 @@ const (
ubootRev = "ff498a3c5efb424accc1d825cc45cede2540ca13" ubootRev = "ff498a3c5efb424accc1d825cc45cede2540ca13"
trustedFirmwareRepo = "https://github.com/ARM-software/arm-trusted-firmware" trustedFirmwareRepo = "https://github.com/ARM-software/arm-trusted-firmware"
trustedRepoRev = "6251d6ed1ffa7080edc55fa75f525e19ecf5edbd" trustedRepoRev = "6251d6ed1ffa7080edc55fa75f525e19ecf5edbd"
rkbinRepo = "https://github.com/friendlyarm/rkbin"
rkbinRev = "nanopi6"
) )
func applyPatches(srcdir, t string) error { func applyPatches(srcdir, t string) error {
@@ -45,19 +48,24 @@ func applyPatches(srcdir, t string) error {
return nil return nil
} }
func compile(trustedFirmwareDir string) error { func compile(ubootDir, trustedFirmwareDir string) error {
defconfig := exec.Command("make", "ARCH=arm64", "cm3588-nas-rk3588_defconfig") defconfig := exec.Command("make", "ARCH=arm64", "cm3588-nas-rk3588_defconfig")
defconfig.Stdout = os.Stdout defconfig.Stdout = os.Stdout
defconfig.Stderr = os.Stderr defconfig.Stderr = os.Stderr
defconfig.Dir = ubootDir
if err := defconfig.Run(); err != nil { if err := defconfig.Run(); err != nil {
return fmt.Errorf("make defconfig: %v", err) return fmt.Errorf("make defconfig: %v", err)
} }
f, err := os.OpenFile(".config", os.O_RDWR|os.O_APPEND, 0o755) f, err := os.OpenFile(filepath.Join(ubootDir, ".config"), os.O_RDWR|os.O_APPEND, 0o755)
if err != nil { if err != nil {
return err return err
} }
if _, err := f.Write([]byte("CONFIG_CMD_SETEXPR=y\nCONFIG_CMD_SETEXPR_FMT=y\n")); err != nil { if _, err := f.Write([]byte(`
CONFIG_CMD_SETEXPR=y
CONFIG_CMD_SETEXPR_FMT=y
CONFIG_BOOTCOMMAND="setenv bootmeths script; bootflow scan -lb"
`)); err != nil {
return err return err
} }
if err := f.Close(); err != nil { if err := f.Close(); err != nil {
@@ -65,12 +73,14 @@ func compile(trustedFirmwareDir string) error {
} }
cmd := exec.Command("git", "show", "-s", "--date=unix", "--pretty=format:%ad", "HEAD") cmd := exec.Command("git", "show", "-s", "--date=unix", "--pretty=format:%ad", "HEAD")
cmd.Dir = ubootDir
output, err := cmd.Output() output, err := cmd.Output()
if err != nil { if err != nil {
return fmt.Errorf("unable to get date of git repo: %w", err) return fmt.Errorf("unable to get date of git repo: %w", err)
} }
make := exec.Command("make", "-j"+strconv.Itoa(runtime.NumCPU())) make := exec.Command("make", "-j"+strconv.Itoa(runtime.NumCPU()))
make.Dir = ubootDir
make.Env = append(os.Environ(), make.Env = append(os.Environ(),
"ARCH=arm64", "ARCH=arm64",
"CROSS_COMPILE=aarch64-linux-gnu-", "CROSS_COMPILE=aarch64-linux-gnu-",
@@ -87,13 +97,14 @@ func compile(trustedFirmwareDir string) error {
return nil return nil
} }
func generateBootScr(bootCmdPath string) error { func generateBootScr(ubootDir, bootCmdPath string) error {
mkimage := exec.Command("./tools/mkimage", "-A", "arm", "-T", "script", "-C", "none", "-d", bootCmdPath, "boot.scr") mkimage := exec.Command(filepath.Join(ubootDir, "./tools/mkimage"), "-A", "arm", "-T", "script", "-C", "none", "-d", bootCmdPath, "boot.scr")
mkimage.Env = append(os.Environ(), mkimage.Env = append(os.Environ(),
"ARCH=arm64", "ARCH=arm64",
"CROSS_COMPILE=aarch64-linux-gnu-", "CROSS_COMPILE=aarch64-linux-gnu-",
"SOURCE_DATE_EPOCH=1600000000", "SOURCE_DATE_EPOCH=1600000000",
) )
mkimage.Dir = ubootDir
mkimage.Stdout = os.Stdout mkimage.Stdout = os.Stdout
mkimage.Stderr = os.Stderr mkimage.Stderr = os.Stderr
if err := mkimage.Run(); err != nil { if err := mkimage.Run(); err != nil {
@@ -130,32 +141,38 @@ func copyFile(dest, src string) error {
return out.Close() return out.Close()
} }
func main() { func clone(dir string, repo string, rev string) error {
ubootDir, err := os.MkdirTemp("", "u-boot") err := os.Mkdir(dir, 0o777)
if err != nil { if err != nil && !errors.Is(err, os.ErrExist) {
log.Fatal(err) log.Fatal(err)
} }
var commands = [][]string{
trustedFirmwareDir, err := os.MkdirTemp("", "arm-trusted-firmware")
if err != nil {
log.Fatal(err)
}
for _, cmd := range [][]string{
{"git", "init"}, {"git", "init"},
{"git", "remote", "add", "origin", trustedFirmwareRepo}, {"git", "remote", "add", "origin", repo},
{"git", "fetch", "--depth=1", "origin", trustedRepoRev}, {"git", "fetch", "--depth=1", "origin", rev},
{"git", "checkout", "FETCH_HEAD"}, {"git", "checkout", "FETCH_HEAD"},
} { }
if _, err = os.Stat(filepath.Join(dir, ".git")); err == nil {
commands = commands[2:]
}
for _, cmd := range commands {
log.Printf("Running %s", cmd) log.Printf("Running %s", cmd)
cmdObj := exec.Command(cmd[0], cmd[1:]...) cmdObj := exec.Command(cmd[0], cmd[1:]...)
cmdObj.Stdout = os.Stdout cmdObj.Stdout = os.Stdout
cmdObj.Stderr = os.Stderr cmdObj.Stderr = os.Stderr
cmdObj.Dir = trustedFirmwareDir cmdObj.Dir = dir
if err := cmdObj.Run(); err != nil { if err := cmdObj.Run(); err != nil {
log.Fatal(err) return err
} }
} }
return nil
}
func compileATF() string {
trustedFirmwareDir, _ := filepath.Abs("arm-trusted-firmware")
if err := clone(trustedFirmwareDir, trustedFirmwareRepo, trustedRepoRev); err != nil {
log.Fatal("Failed to clone Trusted Firmware:", err)
}
log.Printf("applying patches") log.Printf("applying patches")
if err := applyPatches(trustedFirmwareDir, "atf"); err != nil { if err := applyPatches(trustedFirmwareDir, "atf"); err != nil {
@@ -173,33 +190,45 @@ func main() {
log.Fatal(err) log.Fatal(err)
} }
} }
return trustedFirmwareDir
}
var bootCmdPath string func downloadRKbin() string {
if p, err := filepath.Abs("uboot.patches/boot.cmd"); err != nil { var err error = nil
log.Fatal(err) rkbinDir, _ := filepath.Abs("rkbin")
} else {
bootCmdPath = p if err = clone(rkbinDir, rkbinRepo, rkbinRev); err != nil {
log.Fatal("Failed to clone rkbin Firmware:", err)
} }
if err := os.Chdir(ubootDir); err != nil { log.Printf("applying patches")
if err := applyPatches(rkbinDir, "rkbin"); err != nil {
log.Fatal(err) log.Fatal(err)
} }
return rkbinDir
}
for _, cmd := range [][]string{ func indockerMain() {
{"git", "init"},
{"git", "remote", "add", "origin", uBootRepo}, srcFiles, err := filepath.Glob("/usr/_src/*")
{"git", "fetch", "--depth=1", "origin", ubootRev}, if err != nil {
{"git", "checkout", "FETCH_HEAD"}, log.Fatalf("failed to find source files: %v", err)
} { }
log.Printf("Running %s", cmd) for _, fileName := range srcFiles {
cmdObj := exec.Command(cmd[0], cmd[1:]...) cmdObj := exec.Command("cp", "-r", "-t", "/usr/src", fileName)
cmdObj.Stdout = os.Stdout cmdObj.Stdout = os.Stdout
cmdObj.Stderr = os.Stderr cmdObj.Stderr = os.Stderr
cmdObj.Dir = ubootDir
if err := cmdObj.Run(); err != nil { if err := cmdObj.Run(); err != nil {
log.Fatal(err) log.Fatal(err)
} }
} }
rkbinDir := compileATF()
bootCmdPath, _ := filepath.Abs("uboot.patches/boot.cmd")
ubootDir, _ := filepath.Abs("u-boot")
if err := clone(ubootDir, uBootRepo, ubootRev); err != nil {
log.Fatal("Failed to clone uboot repo:", err)
}
log.Printf("applying patches") log.Printf("applying patches")
if err := applyPatches(ubootDir, "uboot"); err != nil { if err := applyPatches(ubootDir, "uboot"); err != nil {
@@ -207,23 +236,23 @@ func main() {
} }
log.Printf("compiling uboot") log.Printf("compiling uboot")
if err := compile(trustedFirmwareDir); err != nil { if err := compile(ubootDir, rkbinDir); err != nil {
log.Fatal(err) log.Fatal(err)
} }
log.Printf("generating boot.scr") log.Printf("generating boot.scr")
if err := generateBootScr(bootCmdPath); err != nil { if err := generateBootScr(ubootDir, bootCmdPath); err != nil {
log.Fatal(err) log.Fatal(err)
} }
for _, copyCfg := range []struct { for _, copyCfg := range []struct {
dest, src string dest, src string
}{ }{
{"boot.scr", "boot.scr"}, {"boot.scr", "u-boot/boot.scr"},
{"u-boot-rockchip.bin", "u-boot-rockchip.bin"}, {"u-boot-rockchip.bin", "u-boot/u-boot-rockchip.bin"},
} { } {
if err := copyFile(filepath.Join("/tmp/buildresult", copyCfg.dest), copyCfg.src); err != nil { if err := copyFile(filepath.Join("/tmp/buildresult", copyCfg.dest), copyCfg.src); err != nil {
log.Fatal(err) log.Fatal("indocker ", err)
} }
} }
} }

View File

@@ -3,7 +3,6 @@ package main
import ( import (
"flag" "flag"
"fmt" "fmt"
"io"
"log" "log"
"os" "os"
"os/exec" "os/exec"
@@ -17,19 +16,21 @@ const dockerFileContents = `
FROM docker.io/library/debian:trixie FROM docker.io/library/debian:trixie
RUN apt-get update && apt-get install -y build-essential crossbuild-essential-arm64 bc libssl-dev bison flex git python3 python3-setuptools swig python3-dev python3-pyelftools uuid-dev libgnutls28-dev RUN apt-get update && apt-get install -y build-essential crossbuild-essential-arm64 bc libssl-dev bison flex git python3 python3-setuptools swig python3-dev python3-pyelftools uuid-dev libgnutls28-dev
RUN apt-get install -y device-tree-compiler
COPY gokr-build-uboot /usr/bin/gokr-build-uboot COPY gokr-build-uboot /usr/bin/gokr-build-uboot
RUN mkdir -p /usr/src/atf.patches RUN mkdir -p /usr/_src/atf.patches
RUN mkdir -p /usr/src/uboot.patches RUN mkdir -p /usr/_src/uboot.patches
{{- range $idx, $path := .Patches }} {{- range $idx, $path := .Patches }}
COPY {{ $path }} /usr/src/{{ $path }} COPY {{ $path }} /usr/_src/{{ $path }}
{{- end }} {{- end }}
RUN echo 'builduser:x:{{ .Uid }}:{{ .Gid }}:nobody:/:/bin/sh' >> /etc/passwd && \ RUN echo 'builduser:x:{{ .Uid }}:{{ .Gid }}:nobody:/:/bin/sh' >> /etc/passwd && \
chown -R {{ .Uid }}:{{ .Gid }} /usr/src chown -R {{ .Uid }}:{{ .Gid }} /usr/src /usr/_src
USER builduser USER builduser
WORKDIR /usr/src WORKDIR /usr/src
ENV GOKRAZY_IN_DOCKER=1
ENTRYPOINT /usr/bin/gokr-build-uboot ENTRYPOINT /usr/bin/gokr-build-uboot
` `
@@ -43,62 +44,23 @@ var dockerFileTmpl = template.Must(template.New("dockerfile").
var ubootPatchFiles = []string{ var ubootPatchFiles = []string{
"uboot.patches/boot.cmd", "uboot.patches/boot.cmd",
"uboot.patches/rk3588_bl31_v1.46.elf",
"uboot.patches/rk3588_ddr_lp4_2112MHz_lp5_2400MHz_v1.16.bin", "uboot.patches/rk3588_ddr_lp4_2112MHz_lp5_2400MHz_v1.16.bin",
"uboot.patches/rk3588_ddr_lp4_2112MHz_lp5_2400MHz_v1.17.bin",
} }
var atfPatchFiles = []string{ var atfPatchFiles = []string{
// "atf.patches/feat-rk3588-support-rk3588.patch", // "atf.patches/feat-rk3588-support-rk3588.patch",
// "atf.patches/rk3588-enable-crypto-function.patch", // "atf.patches/rk3588-enable-crypto-function.patch",
// "atf.patches/feat-rockchip-support-SCMI-for-clock-reset-domain.patch", // "atf.patches/feat-rockchip-support-SCMI-for-clock-reset-domain.patch",
} }
func copyFile(dest, src string) error {
out, err := os.Create(dest)
if err != nil {
return err
}
defer out.Close()
in, err := os.Open(src)
if err != nil {
return err
}
defer in.Close()
if _, err := io.Copy(out, in); err != nil {
return err
}
st, err := in.Stat()
if err != nil {
return err
}
if err := out.Chmod(st.Mode()); err != nil {
return err
}
return out.Close()
}
var gopath = mustGetGopath()
func mustGetGopath() string {
gopathb, err := exec.Command("go", "env", "GOPATH").Output()
if err != nil {
log.Panic(err)
}
return strings.TrimSpace(string(gopathb))
}
func find(filename string) (string, error) { func find(filename string) (string, error) {
if _, err := os.Stat(filename); err == nil { if _, err := os.Stat(filename); err == nil {
return filename, nil return filename, nil
} }
path := filepath.Join(gopath, "src", "gitea.narnian.us", "lordwelch", "gokrazy-cm3588-kernel", filename) return "", fmt.Errorf("could not find file %q", filename)
if _, err := os.Stat(path); err == nil {
return path, nil
}
return "", fmt.Errorf("could not find file %q (looked in . and %s)", filename, path)
} }
func getContainerExecutable() (string, error) { func getContainerExecutable() (string, error) {
@@ -119,15 +81,24 @@ func getContainerExecutable() (string, error) {
return "", fmt.Errorf("none of %v found in $PATH", choices) return "", fmt.Errorf("none of %v found in $PATH", choices)
} }
func main() { func rebuildUboot() {
var overwriteContainerExecutable = flag.String("overwrite_container_executable", overwriteContainerExecutable := flag.String("overwrite_container_executable",
"", "",
"E.g. docker or podman to overwrite the automatically detected container executable") "E.g. docker or podman to overwrite the automatically detected container executable")
persistent := flag.Bool("persistent", false, "Mounts a folder into the docker container to persist u-boot source for debugging")
flag.Parse() flag.Parse()
executable, err := getContainerExecutable() executable, err := getContainerExecutable()
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
} }
abs, err := os.Getwd()
if err != nil {
log.Fatal(err)
}
if !strings.HasSuffix(strings.TrimSuffix(abs, "/"), "/_build") {
log.Fatalf("gokr-rebuild-uboot is not run from a _build directory")
}
if *overwriteContainerExecutable != "" { if *overwriteContainerExecutable != "" {
executable = *overwriteContainerExecutable executable = *overwriteContainerExecutable
} }
@@ -140,15 +111,15 @@ func main() {
log.Fatal(err) log.Fatal(err)
} }
defer os.RemoveAll(tmp) defer os.RemoveAll(tmp)
exePath, err := os.Executable()
cmd := exec.Command("go", "build", "-o", tmp, "gitea.narnian.us/lordwelch/gokrazy-cm3588-kernel/cmd/gokr-build-uboot") if err != nil {
cmd.Env = append(os.Environ(), "GOOS=linux", "CGO_ENABLED=0") log.Fatal("Unable to find current executable", err)
cmd.Stderr = os.Stderr
if err := cmd.Run(); err != nil {
log.Fatalf("%v: %v", cmd.Args, err)
} }
buildPath := filepath.Join(tmp, "gokr-build-uboot") buildPath := filepath.Join(tmp, "gokr-build-uboot")
err = copyFile(buildPath, exePath)
if err != nil {
log.Fatal("Unable to copy executable for docker", err)
}
var patchPaths []string var patchPaths []string
@@ -160,7 +131,7 @@ func main() {
patchPaths = append(patchPaths, path) patchPaths = append(patchPaths, path)
} }
err = os.MkdirAll(filepath.Join(tmp, "uboot.patches"), 0750) err = os.MkdirAll(filepath.Join(tmp, "uboot.patches"), 0o750)
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
} }
@@ -181,7 +152,7 @@ func main() {
patchPaths = append(patchPaths, path) patchPaths = append(patchPaths, path)
} }
err = os.MkdirAll(filepath.Join(tmp, "atf.patches"), 0750) err = os.MkdirAll(filepath.Join(tmp, "atf.patches"), 0o750)
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
} }
@@ -222,7 +193,7 @@ func main() {
log.Printf("building %s container for uboot compilation", execName) log.Printf("building %s container for uboot compilation", execName)
dockerBuild := exec.Command(execName, dockerBuild := exec.Command(executable,
"build", "build",
"--rm=true", "--rm=true",
"--tag=gokr-rebuild-uboot", "--tag=gokr-rebuild-uboot",
@@ -237,20 +208,26 @@ func main() {
log.Printf("compiling uboot") log.Printf("compiling uboot")
var dockerRun *exec.Cmd var dockerRun *exec.Cmd
if execName == "podman" { dockerArgs := []string{
dockerRun = exec.Command(executable,
"run", "run",
"--userns=keep-id", // "--platform=linux/amd64",
"--rm", "--volume", tmp + ":/tmp/buildresult:Z",
"--volume", tmp+":/tmp/buildresult:Z",
"gokr-rebuild-uboot")
} else {
dockerRun = exec.Command(executable,
"run",
"--rm",
"--volume", tmp+":/tmp/buildresult:Z",
"gokr-rebuild-uboot")
} }
if *persistent {
err = os.MkdirAll("./src_build", 0o777)
srcBuild, _ := filepath.Abs("./src_build")
if err != nil {
log.Fatal("Failed to create ./src_build", err)
}
dockerArgs = append(dockerArgs, "-v", srcBuild+":/usr/src")
} else {
dockerArgs = append(dockerArgs, fmt.Sprintf("--mount=type=tmpfs,tmpfs-size=%d%s,destination=%s,U", 5, "G", "/usr/src")) // Ramfs for faster build.... maybe
}
if execName == "podman" {
dockerArgs = append(dockerArgs, "--userns=keep-id")
}
dockerArgs = append(dockerArgs, "gokr-rebuild-uboot")
dockerRun = exec.Command(executable, dockerArgs...)
dockerRun.Dir = tmp dockerRun.Dir = tmp
dockerRun.Stdout = os.Stdout dockerRun.Stdout = os.Stdout
dockerRun.Stderr = os.Stderr dockerRun.Stderr = os.Stderr
@@ -267,3 +244,11 @@ func main() {
} }
} }
} }
func main() {
if os.Getenv("GOKRAZY_IN_DOCKER") == "1" {
indockerMain()
} else {
rebuildUboot()
}
}

View File

@@ -1 +1 @@
console=ttyS2,1500000 earlycon root=/dev/mmcblk0p2 rootwait panic=10 oops=panic init=/gokrazy/init console=ttyS2,1500000 earlycon root=/dev/mmcblk0p2 rootwait panic=10 oops=panic init=/gokrazy/init sdhci.debug_quirks=0x40 sdhci.debug_quirks2=0x04

Binary file not shown.

View File

@@ -4,9 +4,9 @@ kernel/arch/arm64/crypto/aes-ce-cipher.ko
kernel/arch/arm64/crypto/aes-ce-ccm.ko kernel/arch/arm64/crypto/aes-ce-ccm.ko
kernel/arch/arm64/crypto/aes-ce-blk.ko kernel/arch/arm64/crypto/aes-ce-blk.ko
kernel/kernel/configs.ko kernel/kernel/configs.ko
kernel/mm/zsmalloc.ko
kernel/fs/binfmt_script.ko kernel/fs/binfmt_script.ko
kernel/fs/mbcache.ko kernel/fs/mbcache.ko
kernel/fs/nfs_common/grace.ko
kernel/fs/configfs/configfs.ko kernel/fs/configfs/configfs.ko
kernel/fs/netfs/netfs.ko kernel/fs/netfs/netfs.ko
kernel/fs/ext4/ext4.ko kernel/fs/ext4/ext4.ko
@@ -14,7 +14,13 @@ kernel/fs/jbd2/jbd2.ko
kernel/fs/squashfs/squashfs.ko kernel/fs/squashfs/squashfs.ko
kernel/fs/fat/fat.ko kernel/fs/fat/fat.ko
kernel/fs/fat/vfat.ko kernel/fs/fat/vfat.ko
kernel/fs/nfs/nfs.ko
kernel/fs/nfs/nfsv3.ko
kernel/fs/nfs/nfsv4.ko
kernel/fs/nfs/filelayout/nfs_layout_nfsv41_files.ko
kernel/fs/nfs/flexfilelayout/nfs_layout_flexfiles.ko
kernel/fs/exportfs/exportfs.ko kernel/fs/exportfs/exportfs.ko
kernel/fs/lockd/lockd.ko
kernel/fs/nls/nls_base.ko kernel/fs/nls/nls_base.ko
kernel/fs/nls/nls_cp437.ko kernel/fs/nls/nls_cp437.ko
kernel/fs/nls/nls_iso8859-1.ko kernel/fs/nls/nls_iso8859-1.ko
@@ -23,6 +29,7 @@ kernel/fs/autofs/autofs4.ko
kernel/fs/fuse/fuse.ko kernel/fs/fuse/fuse.ko
kernel/fs/overlayfs/overlay.ko kernel/fs/overlayfs/overlay.ko
kernel/fs/xfs/xfs.ko kernel/fs/xfs/xfs.ko
kernel/fs/9p/9p.ko
kernel/fs/btrfs/btrfs.ko kernel/fs/btrfs/btrfs.ko
kernel/fs/pstore/pstore.ko kernel/fs/pstore/pstore.ko
kernel/fs/efivarfs/efivarfs.ko kernel/fs/efivarfs/efivarfs.ko
@@ -99,7 +106,6 @@ kernel/lib/zlib_inflate/zlib_inflate.ko
kernel/lib/zlib_deflate/zlib_deflate.ko kernel/lib/zlib_deflate/zlib_deflate.ko
kernel/lib/lzo/lzo_compress.ko kernel/lib/lzo/lzo_compress.ko
kernel/lib/lzo/lzo_decompress.ko kernel/lib/lzo/lzo_decompress.ko
kernel/lib/lz4/lz4_compress.ko
kernel/lib/lz4/lz4_decompress.ko kernel/lib/lz4/lz4_decompress.ko
kernel/lib/zstd/zstd_compress.ko kernel/lib/zstd/zstd_compress.ko
kernel/lib/zstd/zstd_decompress.ko kernel/lib/zstd/zstd_decompress.ko
@@ -817,11 +823,9 @@ kernel/drivers/base/regmap/regmap-i2c.ko
kernel/drivers/base/regmap/regmap-spi.ko kernel/drivers/base/regmap/regmap-spi.ko
kernel/drivers/base/regmap/regmap-spmi.ko kernel/drivers/base/regmap/regmap-spmi.ko
kernel/drivers/base/regmap/regmap-mmio.ko kernel/drivers/base/regmap/regmap-mmio.ko
kernel/drivers/block/brd.ko
kernel/drivers/block/loop.ko kernel/drivers/block/loop.ko
kernel/drivers/block/virtio_blk.ko kernel/drivers/block/virtio_blk.ko
kernel/drivers/block/xen-blkfront.ko kernel/drivers/block/xen-blkfront.ko
kernel/drivers/block/zram/zram.ko
kernel/drivers/misc/eeprom/eeprom_93cx6.ko kernel/drivers/misc/eeprom/eeprom_93cx6.ko
kernel/drivers/mfd/bd9571mwv.ko kernel/drivers/mfd/bd9571mwv.ko
kernel/drivers/mfd/cros_ec_dev.ko kernel/drivers/mfd/cros_ec_dev.ko
@@ -851,7 +855,6 @@ kernel/drivers/scsi/scsi_transport_sas.ko
kernel/drivers/scsi/libsas/libsas.ko kernel/drivers/scsi/libsas/libsas.ko
kernel/drivers/scsi/megaraid/megaraid_sas.ko kernel/drivers/scsi/megaraid/megaraid_sas.ko
kernel/drivers/scsi/sd_mod.ko kernel/drivers/scsi/sd_mod.ko
kernel/drivers/scsi/sg.ko
kernel/drivers/scsi/hisi_sas/hisi_sas_main.ko kernel/drivers/scsi/hisi_sas/hisi_sas_main.ko
kernel/drivers/scsi/hisi_sas/hisi_sas_v1_hw.ko kernel/drivers/scsi/hisi_sas/hisi_sas_v1_hw.ko
kernel/drivers/scsi/hisi_sas/hisi_sas_v2_hw.ko kernel/drivers/scsi/hisi_sas/hisi_sas_v2_hw.ko
@@ -1172,6 +1175,7 @@ kernel/drivers/media/common/videobuf2/videobuf2-dma-sg.ko
kernel/drivers/media/common/videobuf2/videobuf2-memops.ko kernel/drivers/media/common/videobuf2/videobuf2-memops.ko
kernel/drivers/media/common/videobuf2/videobuf2-v4l2.ko kernel/drivers/media/common/videobuf2/videobuf2-v4l2.ko
kernel/drivers/media/common/videobuf2/videobuf2-vmalloc.ko kernel/drivers/media/common/videobuf2/videobuf2-vmalloc.ko
kernel/drivers/media/platform/rockchip/iep/rockchip-iep.ko
kernel/drivers/media/platform/rockchip/rga/rockchip-rga.ko kernel/drivers/media/platform/rockchip/rga/rockchip-rga.ko
kernel/drivers/media/platform/rockchip/rkisp1/rockchip-isp1.ko kernel/drivers/media/platform/rockchip/rkisp1/rockchip-isp1.ko
kernel/drivers/media/platform/rockchip/rkvdec/rockchip-vdec.ko kernel/drivers/media/platform/rockchip/rkvdec/rockchip-vdec.ko
@@ -1227,7 +1231,6 @@ kernel/drivers/edac/edac_core.ko
kernel/drivers/edac/ghes_edac.ko kernel/drivers/edac/ghes_edac.ko
kernel/drivers/opp/ti-opp-supply.ko kernel/drivers/opp/ti-opp-supply.ko
kernel/drivers/cpufreq/cpufreq_performance.ko kernel/drivers/cpufreq/cpufreq_performance.ko
kernel/drivers/cpufreq/cpufreq_powersave.ko
kernel/drivers/cpufreq/cpufreq_userspace.ko kernel/drivers/cpufreq/cpufreq_userspace.ko
kernel/drivers/cpufreq/cpufreq_ondemand.ko kernel/drivers/cpufreq/cpufreq_ondemand.ko
kernel/drivers/cpufreq/cpufreq-dt.ko kernel/drivers/cpufreq/cpufreq-dt.ko
@@ -1432,7 +1435,6 @@ kernel/drivers/interconnect/qcom/qnoc-x1e80100.ko
kernel/drivers/interconnect/qcom/icc-smd-rpm.ko kernel/drivers/interconnect/qcom/icc-smd-rpm.ko
kernel/drivers/interconnect/icc-clk.ko kernel/drivers/interconnect/icc-clk.ko
kernel/drivers/hte/hte-tegra194.ko kernel/drivers/hte/hte-tegra194.ko
kernel/sound/soundcore.ko
kernel/net/core/selftests.ko kernel/net/core/selftests.ko
kernel/net/core/failover.ko kernel/net/core/failover.ko
kernel/net/llc/llc.ko kernel/net/llc/llc.ko
@@ -1495,6 +1497,9 @@ kernel/net/ipv6/sit.ko
kernel/net/ipv6/ip6_udp_tunnel.ko kernel/net/ipv6/ip6_udp_tunnel.ko
kernel/net/packet/af_packet.ko kernel/net/packet/af_packet.ko
kernel/net/bridge/bridge.ko kernel/net/bridge/bridge.ko
kernel/net/sunrpc/sunrpc.ko
kernel/net/sunrpc/auth_gss/auth_rpcgss.ko
kernel/net/sunrpc/auth_gss/rpcsec_gss_krb5.ko
kernel/net/9p/9pnet.ko kernel/net/9p/9pnet.ko
kernel/net/9p/9pnet_fd.ko kernel/net/9p/9pnet_fd.ko
kernel/net/9p/9pnet_virtio.ko kernel/net/9p/9pnet_virtio.ko

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
vmlinuz

Binary file not shown.

View File

@@ -1,6 +1,6 @@
# #
# Automatically generated file; DO NOT EDIT. # Automatically generated file; DO NOT EDIT.
# Linux/arm64 6.18.5 Kernel Configuration # Linux/arm64 6.18.6 Kernel Configuration
# #
CONFIG_CC_VERSION_TEXT="aarch64-linux-gnu-gcc (Debian 14.2.0-19) 14.2.0" CONFIG_CC_VERSION_TEXT="aarch64-linux-gnu-gcc (Debian 14.2.0-19) 14.2.0"
CONFIG_CC_IS_GCC=y CONFIG_CC_IS_GCC=y
@@ -224,12 +224,10 @@ CONFIG_RD_XZ=y
CONFIG_RD_LZO=y CONFIG_RD_LZO=y
CONFIG_RD_LZ4=y CONFIG_RD_LZ4=y
CONFIG_RD_ZSTD=y CONFIG_RD_ZSTD=y
CONFIG_BOOT_CONFIG=y # CONFIG_BOOT_CONFIG is not set
# CONFIG_BOOT_CONFIG_FORCE is not set
# CONFIG_BOOT_CONFIG_EMBED is not set
CONFIG_INITRAMFS_PRESERVE_MTIME=y CONFIG_INITRAMFS_PRESERVE_MTIME=y
# CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE is not set CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y
CONFIG_CC_OPTIMIZE_FOR_SIZE=y # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
CONFIG_LD_ORPHAN_WARN=y CONFIG_LD_ORPHAN_WARN=y
CONFIG_LD_ORPHAN_WARN_LEVEL="warn" CONFIG_LD_ORPHAN_WARN_LEVEL="warn"
CONFIG_SYSCTL=y CONFIG_SYSCTL=y
@@ -650,7 +648,7 @@ CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set # CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL is not set # CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
CONFIG_CPU_FREQ_GOV_POWERSAVE=y # CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
CONFIG_CPU_FREQ_GOV_USERSPACE=y CONFIG_CPU_FREQ_GOV_USERSPACE=y
CONFIG_CPU_FREQ_GOV_ONDEMAND=y CONFIG_CPU_FREQ_GOV_ONDEMAND=y
# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set # CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
@@ -928,8 +926,7 @@ CONFIG_BLK_DEV_INTEGRITY=y
CONFIG_BLK_DEV_WRITE_MOUNTED=y CONFIG_BLK_DEV_WRITE_MOUNTED=y
# CONFIG_BLK_DEV_ZONED is not set # CONFIG_BLK_DEV_ZONED is not set
# CONFIG_BLK_DEV_THROTTLING is not set # CONFIG_BLK_DEV_THROTTLING is not set
CONFIG_BLK_WBT=y # CONFIG_BLK_WBT is not set
CONFIG_BLK_WBT_MQ=y
# CONFIG_BLK_CGROUP_IOLATENCY is not set # CONFIG_BLK_CGROUP_IOLATENCY is not set
# CONFIG_BLK_CGROUP_IOCOST is not set # CONFIG_BLK_CGROUP_IOCOST is not set
# CONFIG_BLK_CGROUP_IOPRIO is not set # CONFIG_BLK_CGROUP_IOPRIO is not set
@@ -995,18 +992,6 @@ CONFIG_COREDUMP=y
# #
CONFIG_SWAP=y CONFIG_SWAP=y
# CONFIG_ZSWAP is not set # CONFIG_ZSWAP is not set
CONFIG_ZSMALLOC=y
#
# Zsmalloc allocator options
#
#
# Zsmalloc is a common backend allocator for zswap & zram
#
# CONFIG_ZSMALLOC_STAT is not set
CONFIG_ZSMALLOC_CHAIN_SIZE=8
# end of Zsmalloc allocator options
# #
# Slab allocator options # Slab allocator options
@@ -1153,6 +1138,7 @@ CONFIG_XFRM_USER=y
# CONFIG_XFRM_IPTFS is not set # CONFIG_XFRM_IPTFS is not set
# CONFIG_DIBS is not set # CONFIG_DIBS is not set
# CONFIG_XDP_SOCKETS is not set # CONFIG_XDP_SOCKETS is not set
CONFIG_NET_HANDSHAKE=y
CONFIG_INET=y CONFIG_INET=y
CONFIG_IP_MULTICAST=y CONFIG_IP_MULTICAST=y
# CONFIG_IP_ADVANCED_ROUTER is not set # CONFIG_IP_ADVANCED_ROUTER is not set
@@ -2160,28 +2146,12 @@ CONFIG_PNPACPI=y
CONFIG_BLK_DEV=y CONFIG_BLK_DEV=y
# CONFIG_BLK_DEV_NULL_BLK is not set # CONFIG_BLK_DEV_NULL_BLK is not set
# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set # CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set
CONFIG_ZRAM=y # CONFIG_ZRAM is not set
CONFIG_ZRAM_BACKEND_LZ4=y
# CONFIG_ZRAM_BACKEND_LZ4HC is not set
# CONFIG_ZRAM_BACKEND_ZSTD is not set
# CONFIG_ZRAM_BACKEND_DEFLATE is not set
# CONFIG_ZRAM_BACKEND_842 is not set
CONFIG_ZRAM_BACKEND_LZO=y
CONFIG_ZRAM_DEF_COMP_LZORLE=y
# CONFIG_ZRAM_DEF_COMP_LZO is not set
# CONFIG_ZRAM_DEF_COMP_LZ4 is not set
CONFIG_ZRAM_DEF_COMP="lzo-rle"
# CONFIG_ZRAM_WRITEBACK is not set
# CONFIG_ZRAM_TRACK_ENTRY_ACTIME is not set
# CONFIG_ZRAM_MEMORY_TRACKING is not set
# CONFIG_ZRAM_MULTI_COMP is not set
CONFIG_BLK_DEV_LOOP=y CONFIG_BLK_DEV_LOOP=y
CONFIG_BLK_DEV_LOOP_MIN_COUNT=8 CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
# CONFIG_BLK_DEV_DRBD is not set # CONFIG_BLK_DEV_DRBD is not set
# CONFIG_BLK_DEV_NBD is not set # CONFIG_BLK_DEV_NBD is not set
CONFIG_BLK_DEV_RAM=y # CONFIG_BLK_DEV_RAM is not set
CONFIG_BLK_DEV_RAM_COUNT=16
CONFIG_BLK_DEV_RAM_SIZE=4096
# CONFIG_ATA_OVER_ETH is not set # CONFIG_ATA_OVER_ETH is not set
CONFIG_XEN_BLKDEV_FRONTEND=y CONFIG_XEN_BLKDEV_FRONTEND=y
# CONFIG_XEN_BLKDEV_BACKEND is not set # CONFIG_XEN_BLKDEV_BACKEND is not set
@@ -2286,7 +2256,7 @@ CONFIG_SCSI_DMA=y
CONFIG_BLK_DEV_SD=y CONFIG_BLK_DEV_SD=y
# CONFIG_CHR_DEV_ST is not set # CONFIG_CHR_DEV_ST is not set
# CONFIG_BLK_DEV_SR is not set # CONFIG_BLK_DEV_SR is not set
CONFIG_CHR_DEV_SG=y # CONFIG_CHR_DEV_SG is not set
CONFIG_BLK_DEV_BSG=y CONFIG_BLK_DEV_BSG=y
# CONFIG_CHR_DEV_SCH is not set # CONFIG_CHR_DEV_SCH is not set
# CONFIG_SCSI_CONSTANTS is not set # CONFIG_SCSI_CONSTANTS is not set
@@ -4996,6 +4966,7 @@ CONFIG_VIDEO_MUX=y
# #
# Rockchip media platform drivers # Rockchip media platform drivers
# #
CONFIG_VIDEO_ROCKCHIP_IEP=y
CONFIG_VIDEO_ROCKCHIP_RGA=y CONFIG_VIDEO_ROCKCHIP_RGA=y
CONFIG_VIDEO_ROCKCHIP_ISP1=y CONFIG_VIDEO_ROCKCHIP_ISP1=y
CONFIG_VIDEO_ROCKCHIP_VDEC=y CONFIG_VIDEO_ROCKCHIP_VDEC=y
@@ -5408,8 +5379,7 @@ CONFIG_TRACE_GPU_MEM=y
# end of Graphics support # end of Graphics support
# CONFIG_DRM_ACCEL is not set # CONFIG_DRM_ACCEL is not set
CONFIG_SOUND=y # CONFIG_SOUND is not set
# CONFIG_SND is not set
CONFIG_HID_SUPPORT=y CONFIG_HID_SUPPORT=y
CONFIG_HID=y CONFIG_HID=y
# CONFIG_HID_BATTERY_STRENGTH is not set # CONFIG_HID_BATTERY_STRENGTH is not set
@@ -5555,7 +5525,7 @@ CONFIG_USB_ARCH_HAS_HCD=y
CONFIG_USB=y CONFIG_USB=y
CONFIG_USB_PCI=y CONFIG_USB_PCI=y
# CONFIG_USB_PCI_AMD is not set # CONFIG_USB_PCI_AMD is not set
CONFIG_USB_ANNOUNCE_NEW_DEVICES=y # CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
# #
# Miscellaneous USB options # Miscellaneous USB options
@@ -8736,7 +8706,45 @@ CONFIG_PSTORE_COMPRESS=y
# CONFIG_PSTORE_BLK is not set # CONFIG_PSTORE_BLK is not set
# CONFIG_UFS_FS is not set # CONFIG_UFS_FS is not set
# CONFIG_EROFS_FS is not set # CONFIG_EROFS_FS is not set
# CONFIG_NETWORK_FILESYSTEMS is not set CONFIG_NETWORK_FILESYSTEMS=y
CONFIG_NFS_FS=y
# CONFIG_NFS_V2 is not set
CONFIG_NFS_V3=y
# CONFIG_NFS_V3_ACL is not set
CONFIG_NFS_V4=y
# CONFIG_NFS_SWAP is not set
CONFIG_NFS_V4_1=y
CONFIG_NFS_V4_2=y
CONFIG_PNFS_FILE_LAYOUT=y
CONFIG_PNFS_FLEXFILE_LAYOUT=y
CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN="kernel.org"
# CONFIG_NFS_V4_1_MIGRATION is not set
CONFIG_NFS_V4_SECURITY_LABEL=y
CONFIG_ROOT_NFS=y
# CONFIG_NFS_FSCACHE is not set
# CONFIG_NFS_USE_LEGACY_DNS is not set
CONFIG_NFS_USE_KERNEL_DNS=y
CONFIG_NFS_DISABLE_UDP_SUPPORT=y
CONFIG_NFS_V4_2_READ_PLUS=y
# CONFIG_NFSD is not set
CONFIG_GRACE_PERIOD=y
CONFIG_LOCKD=y
CONFIG_LOCKD_V4=y
CONFIG_NFS_COMMON=y
CONFIG_NFS_V4_2_SSC_HELPER=y
CONFIG_SUNRPC=y
CONFIG_SUNRPC_GSS=y
CONFIG_SUNRPC_BACKCHANNEL=y
CONFIG_RPCSEC_GSS_KRB5=y
# CONFIG_SUNRPC_DEBUG is not set
# CONFIG_CEPH_FS is not set
# CONFIG_CIFS is not set
# CONFIG_SMB_SERVER is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set
CONFIG_9P_FS=y
# CONFIG_9P_FS_POSIX_ACL is not set
# CONFIG_9P_FS_SECURITY is not set
CONFIG_NLS=y CONFIG_NLS=y
CONFIG_NLS_DEFAULT="iso8859-1" CONFIG_NLS_DEFAULT="iso8859-1"
CONFIG_NLS_CODEPAGE_437=y CONFIG_NLS_CODEPAGE_437=y
@@ -9191,7 +9199,6 @@ CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=y CONFIG_ZLIB_DEFLATE=y
CONFIG_LZO_COMPRESS=y CONFIG_LZO_COMPRESS=y
CONFIG_LZO_DECOMPRESS=y CONFIG_LZO_DECOMPRESS=y
CONFIG_LZ4_COMPRESS=y
CONFIG_LZ4_DECOMPRESS=y CONFIG_LZ4_DECOMPRESS=y
CONFIG_ZSTD_COMMON=y CONFIG_ZSTD_COMMON=y
CONFIG_ZSTD_COMPRESS=y CONFIG_ZSTD_COMPRESS=y