在RK3588开发板上编译Linux内核
板子是香橙派5Plus
拉代码
bash
git clone https://github.com/armbian/linux-rockchip.git --depth 1
打Patch
先把.开头的文件全忽略:
diff
diff --git a/.gitignore b/.gitignore
index d0c2b1f2d..4cd49cc17 100644
--- a/.gitignore
+++ b/.gitignore
@@ -10,7 +10,6 @@
#
# Normal rules (sorted alphabetically)
#
-.*
*.a
*.asn1.[ch]
*.bin
禁用掉遇到warning就会退出的代码:
diff
diff --git a/scripts/gcc-wrapper.py b/scripts/gcc-wrapper.py
index 5a9f873dd..ad9d6a215 100755
--- a/scripts/gcc-wrapper.py
+++ b/scripts/gcc-wrapper.py
@@ -37,51 +37,43 @@ import os
import sys
import subprocess
-allowed_warnings = set(
- [
- "cgroup.h:35", # include/trace/hooks/cgroup.h:35:18: warning: 'struct cgroup_subsys' declared inside parameter list will not be visible outside of this definition or declaration
- "vfs.c:1259", # fs/incfs/vfs.c:1259:10: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
- "pseudo_files.c:655", # fs/incfs/pseudo_files.c:655:10: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
- "km_apphint.c:230", # drivers/staging/imgtec/rogue/km_apphint.c:230:48: warning: division 'sizeof (void *) / sizeof (void)' does not compute the number of array elements [-Wsizeof-pointer-div]
- "file.c:3010", # fs/f2fs/file.c:3010:12: warning: 'f2fs_ioctl_check_project' defined but not used
- "configfs.c:1488", # drivers/usb/gadget/configfs.c:1488:12: warning: 'configfs_composite_setup' defined but not used
- "configfs.c:1513", # drivers/usb/gadget/configfs.c:1513:13: warning: 'configfs_composite_disconnect' defined but not used
- "posix-cpu-timers.c:1268", # kernel/time/posix-cpu-timers.c:1268:13: warning: 'now' may be used uninitialized in this function
- "af_unix.c:1036", # net/unix/af_unix.c:1036:20: warning: 'hash' may be used uninitialized in this function
- "sunxi_sram.c:214", # drivers/soc/sunxi/sunxi_sram.c:214:24: warning: 'device' may be used uninitialized in this function
- "ks8851.c:298", # drivers/net/ethernet/micrel/ks8851.c:298:2: warning: 'rxb[0]' may be used uninitialized in this function
- "ks8851.c:421", # drivers/net/ethernet/micrel/ks8851.c:421:20: warning: 'rxb[0]' may be used uninitialized in this function
- "compat_binfmt_elf.c:58", # fs/compat_binfmt_elf.c:58:13: warning: 'cputime_to_compat_timeval' defined but not used
- "memcontrol.c:5337", # mm/memcontrol.c:5337:12: warning: initialization from incompatible pointer type
- "atags_to_fdt.c:101", # arch/arm/boot/compressed/atags_to_fdt.c:101:1: warning: the frame size of 2056 bytes is larger than 1280 bytes [-Wframe-larger-than=]
- "drm_edid.c:3506", # drivers/gpu/drm/drm_edid.c:3506:13: warning: 'cea_db_is_hdmi_forum_vsdb' defined but not used
- # W=1
- "bounds.c:15", # kernel/bounds.c:15:6: warning: no previous prototype for ‘foo’
- "cpufeature.h:157", # arch/arm64/include/asm/cpufeature.h:157:68: warning: signed and unsigned type in conditional expression
- "sched.h:1211", # include/linux/sched.h:1211:1: warning: type qualifiers ignored on function return type
- "halphyrf_8188e_ce.c:2208", # drivers/net/wireless/rockchip_wlan/rtl8189es/hal/phydm/rtl8188e/halphyrf_8188e_ce.c:2208:1: warning: the frame size of 1056 bytes is larger than 1024 bytes
- "halphyrf_8723b_ce.c:2879", # drivers/net/wireless/rockchip_wlan/rtl8723bu/hal/phydm/rtl8723b/halphyrf_8723b_ce.c:2879:1: warning: the frame size of 1056 bytes is larger than 1024 bytes
- "pnvm.c:174", # drivers/net/wireless/intel/iwlwifi/fw/pnvm.c:174:12: warning: 'iwl_pnvm_parse' defined but not used [-Wunused-function]
- "xfs_attr_remote.c:140", # fs/xfs/libxfs/xfs_attr_remote.c:140:35: warning: storing the address of local variable '__here' in '*failaddr'
- "rtw_sta_mgt.c:385", # drivers/net/wireless/rockchip_wlan/rtl8188fu/core/rtw_sta_mgt.c:385:25: warning: the comparison will always evaluate as 'true' for the address of 'lock' will never be NULL [-Waddress]
-
- ]
-)
+allowed_warnings = set([
+ "cgroup.h:35", # include/trace/hooks/cgroup.h:35:18: warning: 'struct cgroup_subsys' declared inside parameter list will not be visible outside of this definition or declaration
+ "vfs.c:1259", # fs/incfs/vfs.c:1259:10: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
+ "pseudo_files.c:655", # fs/incfs/pseudo_files.c:655:10: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
+ "km_apphint.c:230", # drivers/staging/imgtec/rogue/km_apphint.c:230:48: warning: division 'sizeof (void *) / sizeof (void)' does not compute the number of array elements [-Wsizeof-pointer-div]
+ "file.c:3010", # fs/f2fs/file.c:3010:12: warning: 'f2fs_ioctl_check_project' defined but not used
+ "configfs.c:1488", # drivers/usb/gadget/configfs.c:1488:12: warning: 'configfs_composite_setup' defined but not used
+ "configfs.c:1513", # drivers/usb/gadget/configfs.c:1513:13: warning: 'configfs_composite_disconnect' defined but not used
+ "posix-cpu-timers.c:1268", # kernel/time/posix-cpu-timers.c:1268:13: warning: 'now' may be used uninitialized in this function
+ "af_unix.c:1036", # net/unix/af_unix.c:1036:20: warning: 'hash' may be used uninitialized in this function
+ "sunxi_sram.c:214", # drivers/soc/sunxi/sunxi_sram.c:214:24: warning: 'device' may be used uninitialized in this function
+ "ks8851.c:298", # drivers/net/ethernet/micrel/ks8851.c:298:2: warning: 'rxb[0]' may be used uninitialized in this function
+ "ks8851.c:421", # drivers/net/ethernet/micrel/ks8851.c:421:20: warning: 'rxb[0]' may be used uninitialized in this function
+ "compat_binfmt_elf.c:58", # fs/compat_binfmt_elf.c:58:13: warning: 'cputime_to_compat_timeval' defined but not used
+ "memcontrol.c:5337", # mm/memcontrol.c:5337:12: warning: initialization from incompatible pointer type
+ "atags_to_fdt.c:101", # arch/arm/boot/compressed/atags_to_fdt.c:101:1: warning: the frame size of 2056 bytes is larger than 1280 bytes [-Wframe-larger-than=]
+ "drm_edid.c:3506", # drivers/gpu/drm/drm_edid.c:3506:13: warning: 'cea_db_is_hdmi_forum_vsdb' defined but not used
+ # W=1
+ "bounds.c:15", # kernel/bounds.c:15:6: warning: no previous prototype for ‘foo’
+ "cpufeature.h:157", # arch/arm64/include/asm/cpufeature.h:157:68: warning: signed and unsigned type in conditional expression
+ "sched.h:1211", # include/linux/sched.h:1211:1: warning: type qualifiers ignored on function return type
+ "halphyrf_8188e_ce.c:2208", # drivers/net/wireless/rockchip_wlan/rtl8189es/hal/phydm/rtl8188e/halphyrf_8188e_ce.c:2208:1: warning: the frame size of 1056 bytes is larger than 1024 bytes
+ "halphyrf_8723b_ce.c:2879", # drivers/net/wireless/rockchip_wlan/rtl8723bu/hal/phydm/rtl8723b/halphyrf_8723b_ce.c:2879:1: warning: the frame size of 1056 bytes is larger than 1024 bytes
+ ])
# Capture the name of the object file, can find it.
ofile = None
-do_exit = False
-
-warning_re = re.compile(r"""(.*/|)([^/]+\.[a-z]+:\d+):(\d+:)? warning:""")
-
+do_exit = False;
+warning_re = re.compile(r'''(.*/|)([^/]+\.[a-z]+:\d+):(\d+:)? warning:''')
def interpret_warning(line):
"""Decode the message from gcc. The messages we care about have a filename, and a warning"""
- line = line.rstrip("\n")
+ line = line.rstrip('\n')
m = warning_re.match(line)
if m and m.group(2) not in allowed_warnings:
- print("error, forbidden warning:" + m.group(2))
+ print ("error, forbidden warning:" + m.group(2))
# If there is a warning, remove any object if it exists.
if ofile:
@@ -90,16 +82,15 @@ def interpret_warning(line):
except OSError:
pass
global do_exit
- do_exit = True
-
+ do_exit = True;
def run_gcc():
args = sys.argv[1:]
# Look for -o
try:
- i = args.index("-o")
+ i = args.index('-o')
global ofile
- ofile = args[i + 1]
+ ofile = args[i+1]
except (ValueError, IndexError):
pass
@@ -107,12 +98,11 @@ def run_gcc():
try:
env = os.environ.copy()
- env["LC_ALL"] = "C"
+ env['LC_ALL'] = 'C'
proc = subprocess.Popen(args, stderr=subprocess.PIPE, env=env)
for line in proc.stderr:
- print(line.decode("utf-8"), end="")
- # ignore warnings
- # interpret_warning(line.decode("utf-8"))
+ print (line.decode("utf-8"), end="")
+ interpret_warning(line.decode("utf-8"))
if do_exit:
sys.exit(1)
@@ -120,14 +110,13 @@ def run_gcc():
except OSError as e:
result = e.errno
if result == errno.ENOENT:
- print(args[0] + ":" + e.strerror)
- print("Is your PATH set correctly?")
+ print (args[0] + ':' + e.strerror)
+ print ('Is your PATH set correctly?')
else:
- print(" ".join(args) + str(e))
+ print (' '.join(args) + str(e))
return result
-
-if __name__ == "__main__":
+if __name__ == '__main__':
status = run_gcc()
sys.exit(status)
把镜像名也改掉:
diff
diff --git a/arch/arm64/Makefile b/arch/arm64/Makefile
index b3a57c510..7e2f0c346 100644
--- a/arch/arm64/Makefile
+++ b/arch/arm64/Makefile
@@ -155,7 +155,7 @@ libs-$(CONFIG_EFI_STUB) += $(objtree)/drivers/firmware/efi/libstub/lib.a
# Default target when executing plain make
boot := arch/arm64/boot
-KBUILD_IMAGE := $(boot)/Image
+KBUILD_IMAGE := $(boot)/Image.gz
# Don't compile Image in mixed build with "all" target
ifndef KBUILD_MIXED_TREE
配置
略,自己调吧,网上教程一堆
编译
直接编译出deb包:
bash
make -j16 BRANCH=5.10.160 LOCALVERSION=-rockchip-rk3588 bindeb-pkg
编译完之后会出几个deb包,装上重启ok。