Compare commits
2 Commits
updates
...
0f9aa94f9a
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0f9aa94f9a | ||
|
|
65e4601c9f |
12
.gitignore
vendored
12
.gitignore
vendored
@@ -1,12 +0,0 @@
|
||||
/_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
|
||||
49
_build/Dockerfile
Normal file
49
_build/Dockerfile
Normal file
@@ -0,0 +1,49 @@
|
||||
|
||||
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"]
|
||||
@@ -394,3 +394,200 @@ CONFIG_BPQETHER=y
|
||||
CONFIG_BAYCOM_SER_FDX=y
|
||||
CONFIG_BAYCOM_SER_HDX=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.
Binary file not shown.
@@ -1 +1 @@
|
||||
https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.18.6.tar.xz
|
||||
https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.18.5.tar.xz
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"log"
|
||||
@@ -18,8 +17,6 @@ const (
|
||||
ubootRev = "ff498a3c5efb424accc1d825cc45cede2540ca13"
|
||||
trustedFirmwareRepo = "https://github.com/ARM-software/arm-trusted-firmware"
|
||||
trustedRepoRev = "6251d6ed1ffa7080edc55fa75f525e19ecf5edbd"
|
||||
rkbinRepo = "https://github.com/friendlyarm/rkbin"
|
||||
rkbinRev = "nanopi6"
|
||||
)
|
||||
|
||||
func applyPatches(srcdir, t string) error {
|
||||
@@ -48,24 +45,19 @@ func applyPatches(srcdir, t string) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func compile(ubootDir, trustedFirmwareDir string) error {
|
||||
func compile(trustedFirmwareDir string) error {
|
||||
defconfig := exec.Command("make", "ARCH=arm64", "cm3588-nas-rk3588_defconfig")
|
||||
defconfig.Stdout = os.Stdout
|
||||
defconfig.Stderr = os.Stderr
|
||||
defconfig.Dir = ubootDir
|
||||
if err := defconfig.Run(); err != nil {
|
||||
return fmt.Errorf("make defconfig: %v", err)
|
||||
}
|
||||
|
||||
f, err := os.OpenFile(filepath.Join(ubootDir, ".config"), os.O_RDWR|os.O_APPEND, 0o755)
|
||||
f, err := os.OpenFile(".config", os.O_RDWR|os.O_APPEND, 0o755)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if _, err := f.Write([]byte(`
|
||||
CONFIG_CMD_SETEXPR=y
|
||||
CONFIG_CMD_SETEXPR_FMT=y
|
||||
CONFIG_BOOTCOMMAND="setenv bootmeths script; bootflow scan -lb"
|
||||
`)); err != nil {
|
||||
if _, err := f.Write([]byte("CONFIG_CMD_SETEXPR=y\nCONFIG_CMD_SETEXPR_FMT=y\n")); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := f.Close(); err != nil {
|
||||
@@ -73,14 +65,12 @@ CONFIG_BOOTCOMMAND="setenv bootmeths script; bootflow scan -lb"
|
||||
}
|
||||
|
||||
cmd := exec.Command("git", "show", "-s", "--date=unix", "--pretty=format:%ad", "HEAD")
|
||||
cmd.Dir = ubootDir
|
||||
output, err := cmd.Output()
|
||||
if err != nil {
|
||||
return fmt.Errorf("unable to get date of git repo: %w", err)
|
||||
}
|
||||
|
||||
make := exec.Command("make", "-j"+strconv.Itoa(runtime.NumCPU()))
|
||||
make.Dir = ubootDir
|
||||
make.Env = append(os.Environ(),
|
||||
"ARCH=arm64",
|
||||
"CROSS_COMPILE=aarch64-linux-gnu-",
|
||||
@@ -97,14 +87,13 @@ CONFIG_BOOTCOMMAND="setenv bootmeths script; bootflow scan -lb"
|
||||
return nil
|
||||
}
|
||||
|
||||
func generateBootScr(ubootDir, bootCmdPath string) error {
|
||||
mkimage := exec.Command(filepath.Join(ubootDir, "./tools/mkimage"), "-A", "arm", "-T", "script", "-C", "none", "-d", bootCmdPath, "boot.scr")
|
||||
func generateBootScr(bootCmdPath string) error {
|
||||
mkimage := exec.Command("./tools/mkimage", "-A", "arm", "-T", "script", "-C", "none", "-d", bootCmdPath, "boot.scr")
|
||||
mkimage.Env = append(os.Environ(),
|
||||
"ARCH=arm64",
|
||||
"CROSS_COMPILE=aarch64-linux-gnu-",
|
||||
"SOURCE_DATE_EPOCH=1600000000",
|
||||
)
|
||||
mkimage.Dir = ubootDir
|
||||
mkimage.Stdout = os.Stdout
|
||||
mkimage.Stderr = os.Stderr
|
||||
if err := mkimage.Run(); err != nil {
|
||||
@@ -141,38 +130,32 @@ func copyFile(dest, src string) error {
|
||||
return out.Close()
|
||||
}
|
||||
|
||||
func clone(dir string, repo string, rev string) error {
|
||||
err := os.Mkdir(dir, 0o777)
|
||||
if err != nil && !errors.Is(err, os.ErrExist) {
|
||||
func main() {
|
||||
ubootDir, err := os.MkdirTemp("", "u-boot")
|
||||
if err != nil {
|
||||
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", "remote", "add", "origin", repo},
|
||||
{"git", "fetch", "--depth=1", "origin", rev},
|
||||
{"git", "remote", "add", "origin", trustedFirmwareRepo},
|
||||
{"git", "fetch", "--depth=1", "origin", trustedRepoRev},
|
||||
{"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)
|
||||
cmdObj := exec.Command(cmd[0], cmd[1:]...)
|
||||
cmdObj.Stdout = os.Stdout
|
||||
cmdObj.Stderr = os.Stderr
|
||||
cmdObj.Dir = dir
|
||||
cmdObj.Dir = trustedFirmwareDir
|
||||
if err := cmdObj.Run(); err != nil {
|
||||
return err
|
||||
log.Fatal(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")
|
||||
if err := applyPatches(trustedFirmwareDir, "atf"); err != nil {
|
||||
@@ -190,45 +173,33 @@ func compileATF() string {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}
|
||||
return trustedFirmwareDir
|
||||
}
|
||||
|
||||
func downloadRKbin() string {
|
||||
var err error = nil
|
||||
rkbinDir, _ := filepath.Abs("rkbin")
|
||||
|
||||
if err = clone(rkbinDir, rkbinRepo, rkbinRev); err != nil {
|
||||
log.Fatal("Failed to clone rkbin Firmware:", err)
|
||||
var bootCmdPath string
|
||||
if p, err := filepath.Abs("uboot.patches/boot.cmd"); err != nil {
|
||||
log.Fatal(err)
|
||||
} else {
|
||||
bootCmdPath = p
|
||||
}
|
||||
|
||||
log.Printf("applying patches")
|
||||
if err := applyPatches(rkbinDir, "rkbin"); err != nil {
|
||||
if err := os.Chdir(ubootDir); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
return rkbinDir
|
||||
}
|
||||
|
||||
func indockerMain() {
|
||||
|
||||
srcFiles, err := filepath.Glob("/usr/_src/*")
|
||||
if err != nil {
|
||||
log.Fatalf("failed to find source files: %v", err)
|
||||
}
|
||||
for _, fileName := range srcFiles {
|
||||
cmdObj := exec.Command("cp", "-r", "-t", "/usr/src", fileName)
|
||||
for _, cmd := range [][]string{
|
||||
{"git", "init"},
|
||||
{"git", "remote", "add", "origin", uBootRepo},
|
||||
{"git", "fetch", "--depth=1", "origin", ubootRev},
|
||||
{"git", "checkout", "FETCH_HEAD"},
|
||||
} {
|
||||
log.Printf("Running %s", cmd)
|
||||
cmdObj := exec.Command(cmd[0], cmd[1:]...)
|
||||
cmdObj.Stdout = os.Stdout
|
||||
cmdObj.Stderr = os.Stderr
|
||||
cmdObj.Dir = ubootDir
|
||||
if err := cmdObj.Run(); err != nil {
|
||||
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")
|
||||
if err := applyPatches(ubootDir, "uboot"); err != nil {
|
||||
@@ -236,23 +207,23 @@ func indockerMain() {
|
||||
}
|
||||
|
||||
log.Printf("compiling uboot")
|
||||
if err := compile(ubootDir, rkbinDir); err != nil {
|
||||
if err := compile(trustedFirmwareDir); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
log.Printf("generating boot.scr")
|
||||
if err := generateBootScr(ubootDir, bootCmdPath); err != nil {
|
||||
if err := generateBootScr(bootCmdPath); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
for _, copyCfg := range []struct {
|
||||
dest, src string
|
||||
}{
|
||||
{"boot.scr", "u-boot/boot.scr"},
|
||||
{"u-boot-rockchip.bin", "u-boot/u-boot-rockchip.bin"},
|
||||
{"boot.scr", "boot.scr"},
|
||||
{"u-boot-rockchip.bin", "u-boot-rockchip.bin"},
|
||||
} {
|
||||
if err := copyFile(filepath.Join("/tmp/buildresult", copyCfg.dest), copyCfg.src); err != nil {
|
||||
log.Fatal("indocker ", err)
|
||||
log.Fatal(err)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -14,11 +14,8 @@ import (
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
var (
|
||||
firmware = []string{"arm/mali/arch10.8/mali_csffw.bin", "rtl_nic/rtl8125b-2.fw"}
|
||||
firmwareDir, _ = filepath.Abs("firmware")
|
||||
)
|
||||
var firmware = []string{"arm/mali/arch10.8/mali_csffw.bin", "rtl_nic/rtl8125b-2.fw"}
|
||||
var firmwareDir, _ = filepath.Abs("firmware")
|
||||
|
||||
func downloadKernel(latest string) error {
|
||||
if _, err := os.Stat(filepath.Base(latest)); err == nil {
|
||||
@@ -50,6 +47,7 @@ func downloadKernel(latest string) error {
|
||||
return out.Close()
|
||||
}
|
||||
|
||||
|
||||
func downloadWhence() (map[string]string, error) {
|
||||
whenceMap := make(map[string]string)
|
||||
uri := "https://gitlab.com/api/v4/projects/48890189/repository/files/WHENCE/raw?ref=main"
|
||||
@@ -58,19 +56,19 @@ func downloadWhence() (map[string]string, error) {
|
||||
return whenceMap, err
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
whenceBytes, err := io.ReadAll(resp.Body)
|
||||
whenceBytes,err := io.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
return whenceMap, err
|
||||
}
|
||||
whence := strings.Split(string(whenceBytes), "\n")
|
||||
for _, line := range whence {
|
||||
if file, ok := strings.CutPrefix(line, "File: "); ok {
|
||||
for _,line := range whence {
|
||||
if file,ok := strings.CutPrefix(line, "File: "); ok {
|
||||
whenceMap[file] = file
|
||||
}
|
||||
if file, ok := strings.CutPrefix(line, "RawFile: "); ok {
|
||||
if file,ok := strings.CutPrefix(line, "RawFile: "); ok {
|
||||
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 {
|
||||
dest := filepath.Join(filepath.Dir(link), file)
|
||||
whenceMap[link] = dest
|
||||
@@ -79,14 +77,13 @@ func downloadWhence() (map[string]string, error) {
|
||||
}
|
||||
return whenceMap, nil
|
||||
}
|
||||
|
||||
func downloadFirmware() ([]string, error) {
|
||||
firmwarePaths := make([]string, 0, len(firmware))
|
||||
whence, err := downloadWhence()
|
||||
if err != nil {
|
||||
return firmwarePaths, err
|
||||
}
|
||||
for _, f := range firmware {
|
||||
for _, f := range firmware{
|
||||
folder := filepath.Dir(f)
|
||||
path, ok := whence[f]
|
||||
if !ok {
|
||||
@@ -97,7 +94,7 @@ func downloadFirmware() ([]string, error) {
|
||||
|
||||
log.Printf("downloading firmware: %q to %q", path, f)
|
||||
|
||||
os.MkdirAll(filepath.Join("firmware", folder), 0o777)
|
||||
os.MkdirAll(filepath.Join("firmware", folder), 0777)
|
||||
out, err := os.Create(filepath.Join("firmware", f))
|
||||
if err != nil {
|
||||
return firmwarePaths, err
|
||||
@@ -128,7 +125,6 @@ func applyPatches(srcdir string) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
for _, patch := range patches {
|
||||
log.Printf("applying patch %q", patch)
|
||||
f, err := os.Open(patch)
|
||||
@@ -150,22 +146,15 @@ func applyPatches(srcdir string) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func compile(cross, flavor string, firmwarePaths []string) error {
|
||||
defconfig := exec.Command("make", "ARCH="+os.Getenv("ARCH"), "defconfig")
|
||||
if flavor == "defconfig" {
|
||||
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)
|
||||
}
|
||||
} else if flavor == "raspberrypi" {
|
||||
func compile(cross, flavor string, firmwarePaths []string, tiny bool) error {
|
||||
defconfig := exec.Command("make", "defconfig")
|
||||
if tiny {
|
||||
defconfig = exec.Command("make", "tinyconfig")
|
||||
}
|
||||
if flavor == "raspberrypi" {
|
||||
// TODO(https://github.com/gokrazy/gokrazy/issues/223): is it
|
||||
// necessary/desirable to switch to bcm2712_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
|
||||
@@ -183,7 +172,7 @@ func compile(cross, flavor string, firmwarePaths []string) error {
|
||||
return fmt.Errorf("make mod2noconfig: %v", err)
|
||||
}
|
||||
|
||||
f, err := os.OpenFile(".config", os.O_APPEND|os.O_WRONLY, 0o644)
|
||||
f, err := os.OpenFile(".config", os.O_APPEND|os.O_WRONLY, 0644)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -197,7 +186,7 @@ func compile(cross, flavor string, firmwarePaths []string) error {
|
||||
}
|
||||
if len(firmwarePaths) > 0 {
|
||||
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 {
|
||||
@@ -254,7 +243,7 @@ func indockerMain() {
|
||||
flavor := flag.String("flavor",
|
||||
"vanilla",
|
||||
"which kernel flavor to build. one of vanilla (kernel.org) or raspberrypi (https://github.com/raspberrypi/linux/tags)")
|
||||
persistent := flag.Bool("persistent", false, "Mounts a folder into the docker container to persist kernel source for debugging")
|
||||
tiny := flag.Bool("tiny", false, "Tries to use tinyconfig instead of defconfig")
|
||||
|
||||
flag.Parse()
|
||||
latest := flag.Arg(0)
|
||||
@@ -262,40 +251,17 @@ func indockerMain() {
|
||||
log.Fatalf("syntax: %s <upstream-URL>", os.Args[0])
|
||||
}
|
||||
log.Printf("downloading kernel source: %s", latest)
|
||||
err := downloadKernel(latest)
|
||||
if err != nil {
|
||||
if err := downloadKernel(latest); err != nil {
|
||||
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")
|
||||
untar := exec.Command("tar", "xf", filepath.Base(latest))
|
||||
untar.Stdout = os.Stdout
|
||||
untar.Stderr = os.Stderr
|
||||
if err := untar.Run(); err != nil {
|
||||
log.Fatalf("untar: %v", err)
|
||||
}
|
||||
unpacked = true
|
||||
}
|
||||
log.Printf("unpacking kernel source")
|
||||
// untar := exec.Command("tar", "xkf", filepath.Base(latest))
|
||||
// untar.Stdout = os.Stdout
|
||||
// untar.Stderr = os.Stderr
|
||||
// if err := untar.Run(); err != nil {
|
||||
// log.Fatalf("untar: %v", err)
|
||||
// }
|
||||
srcFiles, err := filepath.Glob("/usr/_src/*")
|
||||
if err != nil {
|
||||
log.Fatalf("failed to find source files: %v", err)
|
||||
@@ -315,14 +281,20 @@ func indockerMain() {
|
||||
}
|
||||
file.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")
|
||||
if unpacked {
|
||||
if err := applyPatches(srcdir); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}
|
||||
// if err := applyPatches(srcdir); err != nil {
|
||||
// log.Fatal(err)
|
||||
// }
|
||||
firmwarePaths, err := downloadFirmware()
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
@@ -338,8 +310,9 @@ func indockerMain() {
|
||||
os.Setenv("CROSS_COMPILE", "aarch64-linux-gnu-")
|
||||
}
|
||||
|
||||
|
||||
log.Printf("compiling kernel")
|
||||
if err := compile(*cross, *flavor, firmwarePaths); err != nil {
|
||||
if err := compile(*cross, *flavor, firmwarePaths, *tiny); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
@@ -351,20 +324,48 @@ func indockerMain() {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
dtbos, err := filepath.Glob("arch/arm64/boot/dts/overlays/*.dtbo")
|
||||
if err != nil {
|
||||
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")
|
||||
}
|
||||
if err := os.MkdirAll("/tmp/buildresult/overlays", 0o755); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
for _, fn := range dtbos {
|
||||
if err := copyFile(filepath.Join("/tmp/buildresult/overlays/", filepath.Base(fn)), fn); err != nil {
|
||||
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 {
|
||||
log.Fatal(err)
|
||||
}
|
||||
for _, fn := range dtbs {
|
||||
if err := copyFile(filepath.Join("/tmp/buildresult/", filepath.Base(fn)), fn); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
dtbos, err := filepath.Glob("arch/arm64/boot/dts/overlays/*.dtbo")
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
dtbos = append(dtbos, "arch/arm64/boot/dts/overlays/overlay_map.dtb")
|
||||
if err := os.MkdirAll("/tmp/buildresult/overlays", 0755); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
for _, fn := range dtbos {
|
||||
if err := copyFile(filepath.Join("/tmp/buildresult/overlays/", filepath.Base(fn)), fn); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if err := copyFile("/tmp/buildresult/vmlinuz", "arch/x86/boot/bzImage"); err != nil {
|
||||
|
||||
@@ -22,11 +22,10 @@ RUN apt-get update && apt-get install -y \
|
||||
{{ if (eq .Cross "arm64") -}}
|
||||
crossbuild-essential-arm64 \
|
||||
{{ end -}}
|
||||
build-essential bc libssl-dev bison flex libelf-dev ncurses-dev ca-certificates zstd kmod python3 git
|
||||
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 defconfig /usr/_src/defconfig
|
||||
COPY config.addendum.txt /usr/_src/.config
|
||||
COPY config.addendum.txt /usr/src/.config
|
||||
{{- range $idx, $path := .Patches }}
|
||||
@@ -118,7 +117,7 @@ func rebuildKernel() error {
|
||||
cross := flag.String("cross",
|
||||
"arm64",
|
||||
"if non-empty, cross-compile for the specified arch (one of 'arm64')")
|
||||
persistent := flag.Bool("persistent", false, "Mounts a folder into the docker container to persist kernel source for debugging")
|
||||
tiny := flag.Bool("tiny", false, "Tries to use tinyconfig instead of defconfig")
|
||||
|
||||
flavor := flag.String("flavor",
|
||||
"vanilla",
|
||||
@@ -165,16 +164,17 @@ func rebuildKernel() error {
|
||||
}
|
||||
}
|
||||
|
||||
kernelPath, err := filepath.Abs("../vmlinuz")
|
||||
kernelPath, err := find("../vmlinuz")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
libPath, err := filepath.Abs("../lib")
|
||||
libPath, err := find("../lib")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// TODO: just ensure the file exists, i.e. we are in _build
|
||||
if _, err := find("config.addendum.txt"); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -239,21 +239,14 @@ func rebuildKernel() error {
|
||||
}
|
||||
kernelName := path.Base(string(upstreamURL))
|
||||
_, err = os.Stat(kernelName)
|
||||
log.Printf("Check for downloaded kernel %s: %v", kernelName, err)
|
||||
log.Printf("Checking 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 {
|
||||
absKernelName, _ := filepath.Abs(kernelName)
|
||||
dockerArgs = append(dockerArgs, "--volume", absKernelName+":/usr/src/"+kernelName)
|
||||
}
|
||||
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 !*keepBuildContainer {
|
||||
dockerArgs = append(dockerArgs, "--rm")
|
||||
@@ -265,7 +258,7 @@ func rebuildKernel() error {
|
||||
"gokr-rebuild-kernel",
|
||||
"-cross="+*cross,
|
||||
"-flavor="+*flavor,
|
||||
fmt.Sprintf("-persistent=%v", *persistent),
|
||||
fmt.Sprintf("-tiny=%v", *tiny),
|
||||
strings.TrimSpace(string(upstreamURL)))
|
||||
|
||||
dockerRun = exec.Command(executable, dockerArgs...)
|
||||
@@ -276,7 +269,7 @@ func rebuildKernel() error {
|
||||
if err := dockerRun.Run(); err != nil {
|
||||
return fmt.Errorf("%s run: %v (cmd: %v)", execName, err, dockerRun.Args)
|
||||
}
|
||||
|
||||
_=kernelPath
|
||||
if err := copyFile(kernelPath, "vmlinuz"); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -316,6 +309,25 @@ func rebuildKernel() error {
|
||||
}
|
||||
|
||||
if *cross == "arm64" {
|
||||
// downloadFirmware()
|
||||
if *dtbs != "" {
|
||||
// replace device tree files
|
||||
rm = exec.Command("sh", "-c", "rm -f ../*.dtb")
|
||||
rm.Stdout = os.Stdout
|
||||
rm.Stderr = os.Stderr
|
||||
log.Printf("%v", rm.Args)
|
||||
if err := rm.Run(); err != nil {
|
||||
log.Printf("%v: %v", rm.Args, err)
|
||||
}
|
||||
cp = exec.Command("sh", "-c", "cp *.dtb ..")
|
||||
cp.Stdout = os.Stdout
|
||||
cp.Stderr = os.Stderr
|
||||
log.Printf("%v", cp.Args)
|
||||
if err := cp.Run(); err != nil {
|
||||
return fmt.Errorf("%v: %v", cp.Args, err)
|
||||
}
|
||||
}
|
||||
|
||||
if *flavor == "raspberrypi" {
|
||||
// replace overlays directory
|
||||
overlaysPath, err := find("../overlays")
|
||||
@@ -342,6 +354,71 @@ func rebuildKernel() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// func _downloadFirmware() (*os.File, int64, error) {
|
||||
// latest := "https://gitlab.com/freedesktop-sdk/mirrors/kernel/linux/kernel/git/firmware/linux-firmware/-/raw/main/arm/mali/arch10.8/mali_csffw.bin"
|
||||
// if st, err := os.Stat(filepath.Base(latest)); err == nil {
|
||||
// out, err := os.Open(filepath.Base(latest))
|
||||
// if err != nil {
|
||||
// return nil, 0, nil
|
||||
// }
|
||||
// return out, st.Size(), nil
|
||||
// }
|
||||
// out, err := os.Create(filepath.Base(latest))
|
||||
// if err != nil {
|
||||
// return nil, 0, err
|
||||
// }
|
||||
// resp, err := http.Get(latest)
|
||||
// if err != nil {
|
||||
// out.Close()
|
||||
// return out, 0, err
|
||||
// }
|
||||
// defer resp.Body.Close()
|
||||
// if got, want := resp.StatusCode, http.StatusOK; got != want {
|
||||
// out.Close()
|
||||
// return out, 0, fmt.Errorf("unexpected HTTP status code for %s: got %d, want %d", latest, got, want)
|
||||
// }
|
||||
// size, err := io.Copy(out, resp.Body)
|
||||
// if err != nil {
|
||||
// out.Close()
|
||||
// return out, 0, err
|
||||
// }
|
||||
// if _, err := out.Seek(0, os.SEEK_SET); err != nil {
|
||||
// out.Close()
|
||||
// return out, 0, err
|
||||
// }
|
||||
// return out, size, nil
|
||||
// }
|
||||
|
||||
// func downloadFirmware() error {
|
||||
// firmwareFile, size, err := _downloadFirmware()
|
||||
// if err != nil {
|
||||
// return err
|
||||
// }
|
||||
// defer firmwareFile.Close()
|
||||
// err = os.MkdirAll("../_gokrazy", os.ModePerm)
|
||||
// if err != nil {
|
||||
// return err
|
||||
// }
|
||||
// f, err := os.Create("../_gokrazy/extrafiles.tar")
|
||||
// if err != nil {
|
||||
// return err
|
||||
// }
|
||||
// defer f.Close()
|
||||
// t := tar.NewWriter(f)
|
||||
// if err := t.WriteHeader(&tar.Header{
|
||||
// Name: "/lib/firmware/arm/mali/arch10.8/mali_csffw.bin",
|
||||
// Typeflag: tar.TypeReg,
|
||||
// Mode: 0o755,
|
||||
// Size: size,
|
||||
// }); err != nil {
|
||||
// return err
|
||||
// }
|
||||
// if _, err := io.Copy(t, firmwareFile); err != nil {
|
||||
// return err
|
||||
// }
|
||||
// return t.Close()
|
||||
// }
|
||||
|
||||
func main() {
|
||||
if os.Getenv("GOKRAZY_IN_DOCKER") == "1" {
|
||||
indockerMain()
|
||||
|
||||
@@ -3,6 +3,7 @@ package main
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"io"
|
||||
"log"
|
||||
"os"
|
||||
"os/exec"
|
||||
@@ -16,21 +17,19 @@ const dockerFileContents = `
|
||||
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 install -y device-tree-compiler
|
||||
|
||||
COPY gokr-build-uboot /usr/bin/gokr-build-uboot
|
||||
RUN mkdir -p /usr/_src/atf.patches
|
||||
RUN mkdir -p /usr/_src/uboot.patches
|
||||
RUN mkdir -p /usr/src/atf.patches
|
||||
RUN mkdir -p /usr/src/uboot.patches
|
||||
{{- range $idx, $path := .Patches }}
|
||||
COPY {{ $path }} /usr/_src/{{ $path }}
|
||||
COPY {{ $path }} /usr/src/{{ $path }}
|
||||
{{- end }}
|
||||
|
||||
RUN echo 'builduser:x:{{ .Uid }}:{{ .Gid }}:nobody:/:/bin/sh' >> /etc/passwd && \
|
||||
chown -R {{ .Uid }}:{{ .Gid }} /usr/src /usr/_src
|
||||
chown -R {{ .Uid }}:{{ .Gid }} /usr/src
|
||||
|
||||
USER builduser
|
||||
WORKDIR /usr/src
|
||||
ENV GOKRAZY_IN_DOCKER=1
|
||||
ENTRYPOINT /usr/bin/gokr-build-uboot
|
||||
`
|
||||
|
||||
@@ -44,23 +43,62 @@ var dockerFileTmpl = template.Must(template.New("dockerfile").
|
||||
|
||||
var ubootPatchFiles = []string{
|
||||
"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.17.bin",
|
||||
}
|
||||
|
||||
var atfPatchFiles = []string{
|
||||
// "atf.patches/feat-rk3588-support-rk3588.patch",
|
||||
// "atf.patches/rk3588-enable-crypto-function.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) {
|
||||
if _, err := os.Stat(filename); err == nil {
|
||||
return filename, nil
|
||||
}
|
||||
|
||||
return "", fmt.Errorf("could not find file %q", filename)
|
||||
path := filepath.Join(gopath, "src", "gitea.narnian.us", "lordwelch", "gokrazy-cm3588-kernel", 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) {
|
||||
@@ -81,24 +119,15 @@ func getContainerExecutable() (string, error) {
|
||||
return "", fmt.Errorf("none of %v found in $PATH", choices)
|
||||
}
|
||||
|
||||
func rebuildUboot() {
|
||||
overwriteContainerExecutable := flag.String("overwrite_container_executable",
|
||||
func main() {
|
||||
var overwriteContainerExecutable = flag.String("overwrite_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()
|
||||
executable, err := getContainerExecutable()
|
||||
if err != nil {
|
||||
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 != "" {
|
||||
executable = *overwriteContainerExecutable
|
||||
}
|
||||
@@ -111,15 +140,15 @@ func rebuildUboot() {
|
||||
log.Fatal(err)
|
||||
}
|
||||
defer os.RemoveAll(tmp)
|
||||
exePath, err := os.Executable()
|
||||
if err != nil {
|
||||
log.Fatal("Unable to find current executable", err)
|
||||
|
||||
cmd := exec.Command("go", "build", "-o", tmp, "gitea.narnian.us/lordwelch/gokrazy-cm3588-kernel/cmd/gokr-build-uboot")
|
||||
cmd.Env = append(os.Environ(), "GOOS=linux", "CGO_ENABLED=0")
|
||||
cmd.Stderr = os.Stderr
|
||||
if err := cmd.Run(); err != nil {
|
||||
log.Fatalf("%v: %v", cmd.Args, err)
|
||||
}
|
||||
|
||||
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
|
||||
|
||||
@@ -131,7 +160,7 @@ func rebuildUboot() {
|
||||
patchPaths = append(patchPaths, path)
|
||||
}
|
||||
|
||||
err = os.MkdirAll(filepath.Join(tmp, "uboot.patches"), 0o750)
|
||||
err = os.MkdirAll(filepath.Join(tmp, "uboot.patches"), 0750)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
@@ -152,7 +181,7 @@ func rebuildUboot() {
|
||||
patchPaths = append(patchPaths, path)
|
||||
}
|
||||
|
||||
err = os.MkdirAll(filepath.Join(tmp, "atf.patches"), 0o750)
|
||||
err = os.MkdirAll(filepath.Join(tmp, "atf.patches"), 0750)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
@@ -193,7 +222,7 @@ func rebuildUboot() {
|
||||
|
||||
log.Printf("building %s container for uboot compilation", execName)
|
||||
|
||||
dockerBuild := exec.Command(executable,
|
||||
dockerBuild := exec.Command(execName,
|
||||
"build",
|
||||
"--rm=true",
|
||||
"--tag=gokr-rebuild-uboot",
|
||||
@@ -208,26 +237,20 @@ func rebuildUboot() {
|
||||
log.Printf("compiling uboot")
|
||||
|
||||
var dockerRun *exec.Cmd
|
||||
dockerArgs := []string{
|
||||
"run",
|
||||
// "--platform=linux/amd64",
|
||||
"--volume", tmp + ":/tmp/buildresult:Z",
|
||||
}
|
||||
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")
|
||||
dockerRun = exec.Command(executable,
|
||||
"run",
|
||||
"--userns=keep-id",
|
||||
"--rm",
|
||||
"--volume", tmp+":/tmp/buildresult:Z",
|
||||
"gokr-rebuild-uboot")
|
||||
} else {
|
||||
dockerRun = exec.Command(executable,
|
||||
"run",
|
||||
"--rm",
|
||||
"--volume", tmp+":/tmp/buildresult:Z",
|
||||
"gokr-rebuild-uboot")
|
||||
}
|
||||
dockerArgs = append(dockerArgs, "gokr-rebuild-uboot")
|
||||
dockerRun = exec.Command(executable, dockerArgs...)
|
||||
dockerRun.Dir = tmp
|
||||
dockerRun.Stdout = os.Stdout
|
||||
dockerRun.Stderr = os.Stderr
|
||||
@@ -235,19 +258,12 @@ func rebuildUboot() {
|
||||
log.Fatalf("%s run: %v (cmd: %v)", execName, err, dockerRun.Args)
|
||||
}
|
||||
|
||||
if err := copyFile("../boot.scr", "boot.scr"); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
if err := copyFile("../u-boot-rockchip.bin", "u-boot-rockchip.bin"); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
if os.Getenv("GOKRAZY_IN_DOCKER") == "1" {
|
||||
indockerMain()
|
||||
} else {
|
||||
rebuildUboot()
|
||||
for _, filename := range []string{
|
||||
"boot.scr",
|
||||
"u-boot-rockchip.bin",
|
||||
} {
|
||||
if err := copyFile(filename, filepath.Join(tmp, filename)); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
BIN
lib/modules/6.18.5/kernel/drivers/dma/bcm-sba-raid.ko
Normal file
BIN
lib/modules/6.18.5/kernel/drivers/dma/bcm-sba-raid.ko
Normal file
Binary file not shown.
Binary file not shown.
@@ -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-blk.ko
|
||||
kernel/kernel/configs.ko
|
||||
kernel/mm/zsmalloc.ko
|
||||
kernel/fs/binfmt_script.ko
|
||||
kernel/fs/mbcache.ko
|
||||
kernel/fs/nfs_common/grace.ko
|
||||
kernel/fs/configfs/configfs.ko
|
||||
kernel/fs/netfs/netfs.ko
|
||||
kernel/fs/ext4/ext4.ko
|
||||
@@ -14,13 +14,7 @@ kernel/fs/jbd2/jbd2.ko
|
||||
kernel/fs/squashfs/squashfs.ko
|
||||
kernel/fs/fat/fat.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/lockd/lockd.ko
|
||||
kernel/fs/nls/nls_base.ko
|
||||
kernel/fs/nls/nls_cp437.ko
|
||||
kernel/fs/nls/nls_iso8859-1.ko
|
||||
@@ -29,7 +23,6 @@ kernel/fs/autofs/autofs4.ko
|
||||
kernel/fs/fuse/fuse.ko
|
||||
kernel/fs/overlayfs/overlay.ko
|
||||
kernel/fs/xfs/xfs.ko
|
||||
kernel/fs/9p/9p.ko
|
||||
kernel/fs/btrfs/btrfs.ko
|
||||
kernel/fs/pstore/pstore.ko
|
||||
kernel/fs/efivarfs/efivarfs.ko
|
||||
@@ -106,6 +99,7 @@ kernel/lib/zlib_inflate/zlib_inflate.ko
|
||||
kernel/lib/zlib_deflate/zlib_deflate.ko
|
||||
kernel/lib/lzo/lzo_compress.ko
|
||||
kernel/lib/lzo/lzo_decompress.ko
|
||||
kernel/lib/lz4/lz4_compress.ko
|
||||
kernel/lib/lz4/lz4_decompress.ko
|
||||
kernel/lib/zstd/zstd_compress.ko
|
||||
kernel/lib/zstd/zstd_decompress.ko
|
||||
@@ -823,9 +817,11 @@ kernel/drivers/base/regmap/regmap-i2c.ko
|
||||
kernel/drivers/base/regmap/regmap-spi.ko
|
||||
kernel/drivers/base/regmap/regmap-spmi.ko
|
||||
kernel/drivers/base/regmap/regmap-mmio.ko
|
||||
kernel/drivers/block/brd.ko
|
||||
kernel/drivers/block/loop.ko
|
||||
kernel/drivers/block/virtio_blk.ko
|
||||
kernel/drivers/block/xen-blkfront.ko
|
||||
kernel/drivers/block/zram/zram.ko
|
||||
kernel/drivers/misc/eeprom/eeprom_93cx6.ko
|
||||
kernel/drivers/mfd/bd9571mwv.ko
|
||||
kernel/drivers/mfd/cros_ec_dev.ko
|
||||
@@ -855,6 +851,7 @@ kernel/drivers/scsi/scsi_transport_sas.ko
|
||||
kernel/drivers/scsi/libsas/libsas.ko
|
||||
kernel/drivers/scsi/megaraid/megaraid_sas.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_v1_hw.ko
|
||||
kernel/drivers/scsi/hisi_sas/hisi_sas_v2_hw.ko
|
||||
@@ -1175,7 +1172,6 @@ kernel/drivers/media/common/videobuf2/videobuf2-dma-sg.ko
|
||||
kernel/drivers/media/common/videobuf2/videobuf2-memops.ko
|
||||
kernel/drivers/media/common/videobuf2/videobuf2-v4l2.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/rkisp1/rockchip-isp1.ko
|
||||
kernel/drivers/media/platform/rockchip/rkvdec/rockchip-vdec.ko
|
||||
@@ -1231,6 +1227,7 @@ kernel/drivers/edac/edac_core.ko
|
||||
kernel/drivers/edac/ghes_edac.ko
|
||||
kernel/drivers/opp/ti-opp-supply.ko
|
||||
kernel/drivers/cpufreq/cpufreq_performance.ko
|
||||
kernel/drivers/cpufreq/cpufreq_powersave.ko
|
||||
kernel/drivers/cpufreq/cpufreq_userspace.ko
|
||||
kernel/drivers/cpufreq/cpufreq_ondemand.ko
|
||||
kernel/drivers/cpufreq/cpufreq-dt.ko
|
||||
@@ -1435,6 +1432,7 @@ kernel/drivers/interconnect/qcom/qnoc-x1e80100.ko
|
||||
kernel/drivers/interconnect/qcom/icc-smd-rpm.ko
|
||||
kernel/drivers/interconnect/icc-clk.ko
|
||||
kernel/drivers/hte/hte-tegra194.ko
|
||||
kernel/sound/soundcore.ko
|
||||
kernel/net/core/selftests.ko
|
||||
kernel/net/core/failover.ko
|
||||
kernel/net/llc/llc.ko
|
||||
@@ -1497,9 +1495,6 @@ kernel/net/ipv6/sit.ko
|
||||
kernel/net/ipv6/ip6_udp_tunnel.ko
|
||||
kernel/net/packet/af_packet.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_fd.ko
|
||||
kernel/net/9p/9pnet_virtio.ko
|
||||
BIN
lib/modules/6.18.5/modules.builtin.alias.bin
Normal file
BIN
lib/modules/6.18.5/modules.builtin.alias.bin
Normal file
Binary file not shown.
BIN
lib/modules/6.18.5/modules.builtin.bin
Normal file
BIN
lib/modules/6.18.5/modules.builtin.bin
Normal file
Binary file not shown.
BIN
lib/modules/6.18.5/modules.builtin.modinfo
Normal file
BIN
lib/modules/6.18.5/modules.builtin.modinfo
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,6 +1,6 @@
|
||||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Linux/arm64 6.18.6 Kernel Configuration
|
||||
# Linux/arm64 6.18.5 Kernel Configuration
|
||||
#
|
||||
CONFIG_CC_VERSION_TEXT="aarch64-linux-gnu-gcc (Debian 14.2.0-19) 14.2.0"
|
||||
CONFIG_CC_IS_GCC=y
|
||||
@@ -224,10 +224,12 @@ CONFIG_RD_XZ=y
|
||||
CONFIG_RD_LZO=y
|
||||
CONFIG_RD_LZ4=y
|
||||
CONFIG_RD_ZSTD=y
|
||||
# CONFIG_BOOT_CONFIG is not set
|
||||
CONFIG_BOOT_CONFIG=y
|
||||
# CONFIG_BOOT_CONFIG_FORCE is not set
|
||||
# CONFIG_BOOT_CONFIG_EMBED is not set
|
||||
CONFIG_INITRAMFS_PRESERVE_MTIME=y
|
||||
CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y
|
||||
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
|
||||
# CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE is not set
|
||||
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||
CONFIG_LD_ORPHAN_WARN=y
|
||||
CONFIG_LD_ORPHAN_WARN_LEVEL="warn"
|
||||
CONFIG_SYSCTL=y
|
||||
@@ -648,7 +650,7 @@ CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL is not set
|
||||
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
|
||||
# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
|
||||
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
|
||||
CONFIG_CPU_FREQ_GOV_USERSPACE=y
|
||||
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
|
||||
# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
|
||||
@@ -926,7 +928,8 @@ CONFIG_BLK_DEV_INTEGRITY=y
|
||||
CONFIG_BLK_DEV_WRITE_MOUNTED=y
|
||||
# CONFIG_BLK_DEV_ZONED is not set
|
||||
# CONFIG_BLK_DEV_THROTTLING is not set
|
||||
# CONFIG_BLK_WBT is not set
|
||||
CONFIG_BLK_WBT=y
|
||||
CONFIG_BLK_WBT_MQ=y
|
||||
# CONFIG_BLK_CGROUP_IOLATENCY is not set
|
||||
# CONFIG_BLK_CGROUP_IOCOST is not set
|
||||
# CONFIG_BLK_CGROUP_IOPRIO is not set
|
||||
@@ -992,6 +995,18 @@ CONFIG_COREDUMP=y
|
||||
#
|
||||
CONFIG_SWAP=y
|
||||
# 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
|
||||
@@ -1138,7 +1153,6 @@ CONFIG_XFRM_USER=y
|
||||
# CONFIG_XFRM_IPTFS is not set
|
||||
# CONFIG_DIBS is not set
|
||||
# CONFIG_XDP_SOCKETS is not set
|
||||
CONFIG_NET_HANDSHAKE=y
|
||||
CONFIG_INET=y
|
||||
CONFIG_IP_MULTICAST=y
|
||||
# CONFIG_IP_ADVANCED_ROUTER is not set
|
||||
@@ -2146,12 +2160,28 @@ CONFIG_PNPACPI=y
|
||||
CONFIG_BLK_DEV=y
|
||||
# CONFIG_BLK_DEV_NULL_BLK is not set
|
||||
# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set
|
||||
# CONFIG_ZRAM is not set
|
||||
CONFIG_ZRAM=y
|
||||
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_MIN_COUNT=8
|
||||
# CONFIG_BLK_DEV_DRBD is not set
|
||||
# CONFIG_BLK_DEV_NBD is not set
|
||||
# CONFIG_BLK_DEV_RAM is not set
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_COUNT=16
|
||||
CONFIG_BLK_DEV_RAM_SIZE=4096
|
||||
# CONFIG_ATA_OVER_ETH is not set
|
||||
CONFIG_XEN_BLKDEV_FRONTEND=y
|
||||
# CONFIG_XEN_BLKDEV_BACKEND is not set
|
||||
@@ -2256,7 +2286,7 @@ CONFIG_SCSI_DMA=y
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
# CONFIG_CHR_DEV_ST is not set
|
||||
# CONFIG_BLK_DEV_SR is not set
|
||||
# CONFIG_CHR_DEV_SG is not set
|
||||
CONFIG_CHR_DEV_SG=y
|
||||
CONFIG_BLK_DEV_BSG=y
|
||||
# CONFIG_CHR_DEV_SCH is not set
|
||||
# CONFIG_SCSI_CONSTANTS is not set
|
||||
@@ -4966,7 +4996,6 @@ CONFIG_VIDEO_MUX=y
|
||||
#
|
||||
# Rockchip media platform drivers
|
||||
#
|
||||
CONFIG_VIDEO_ROCKCHIP_IEP=y
|
||||
CONFIG_VIDEO_ROCKCHIP_RGA=y
|
||||
CONFIG_VIDEO_ROCKCHIP_ISP1=y
|
||||
CONFIG_VIDEO_ROCKCHIP_VDEC=y
|
||||
@@ -5379,7 +5408,8 @@ CONFIG_TRACE_GPU_MEM=y
|
||||
# end of Graphics support
|
||||
|
||||
# CONFIG_DRM_ACCEL is not set
|
||||
# CONFIG_SOUND is not set
|
||||
CONFIG_SOUND=y
|
||||
# CONFIG_SND is not set
|
||||
CONFIG_HID_SUPPORT=y
|
||||
CONFIG_HID=y
|
||||
# CONFIG_HID_BATTERY_STRENGTH is not set
|
||||
@@ -5525,7 +5555,7 @@ CONFIG_USB_ARCH_HAS_HCD=y
|
||||
CONFIG_USB=y
|
||||
CONFIG_USB_PCI=y
|
||||
# CONFIG_USB_PCI_AMD is not set
|
||||
# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
|
||||
CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
|
||||
|
||||
#
|
||||
# Miscellaneous USB options
|
||||
@@ -8706,45 +8736,7 @@ CONFIG_PSTORE_COMPRESS=y
|
||||
# CONFIG_PSTORE_BLK is not set
|
||||
# CONFIG_UFS_FS is not set
|
||||
# CONFIG_EROFS_FS 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_NETWORK_FILESYSTEMS is not set
|
||||
CONFIG_NLS=y
|
||||
CONFIG_NLS_DEFAULT="iso8859-1"
|
||||
CONFIG_NLS_CODEPAGE_437=y
|
||||
@@ -9199,6 +9191,7 @@ CONFIG_ZLIB_INFLATE=y
|
||||
CONFIG_ZLIB_DEFLATE=y
|
||||
CONFIG_LZO_COMPRESS=y
|
||||
CONFIG_LZO_DECOMPRESS=y
|
||||
CONFIG_LZ4_COMPRESS=y
|
||||
CONFIG_LZ4_DECOMPRESS=y
|
||||
CONFIG_ZSTD_COMMON=y
|
||||
CONFIG_ZSTD_COMPRESS=y
|
||||
|
||||
Reference in New Issue
Block a user