na denn, tippe ich mal so auf default konfiguriert per dhcp 🙂
ROCKPro64 - Der Bootvorgang
-
Basis für diesen Beitrag
rock64@rockpro64:/boot$ uname -a Linux rockpro64 4.4.132-1075-rockchip-ayufan-ga83beded8524 #1 SMP Thu Jul 26 08:22:22 UTC 2018 aarch64 aarch64 aarch64 GNU/Linux
So sieht die Partitionstabelle des Images aus (SD-Karte)
rock64@rockpro64:/boot$ sudo fdisk /dev/mmcblk0 [sudo] password for rock64: Welcome to fdisk (util-linux 2.31.1). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Command (m for help): p Disk /dev/mmcblk0: 29.7 GiB, 31914983424 bytes, 62333952 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: 2C9A4A22-7AA8-4A1B-815E-0C3E2E7065E6 Device Start End Sectors Size Type /dev/mmcblk0p1 64 8063 8000 3.9M Linux filesystem /dev/mmcblk0p2 8064 8191 128 64K Linux filesystem /dev/mmcblk0p3 8192 16383 8192 4M Linux filesystem /dev/mmcblk0p4 16384 24575 8192 4M Linux filesystem /dev/mmcblk0p5 24576 32767 8192 4M Linux filesystem /dev/mmcblk0p6 32768 262143 229376 112M Microsoft basic data /dev/mmcblk0p7 262144 62333918 62071775 29.6G Linux filesystem Command (m for help):
Partition Start Sector Number of Sectors Partition Size PartNum in GPT Requirements MBR 0 1 512 Primary GPT 1 63 32256 loader1 64 7104 4096000 1 preloader (miniloader or U-Boot SPL) Vendor Storage 7168 512 262144 SN, MAC and etc. Reserved Space 7680 384 196608 Not used reserved1 8064 128 65536 legacy DRM key U-Boot ENV 8128 64 32768 reserved2 8192 8192 4194304 legacy parameter loader2 16384 8192 4194304 2 U-Boot or UEFI trust 24576 8192 4194304 3 trusted-os like ATF, OP-TEE boot(bootable must be set) 32768 229376 117440512 4 kernel, dtb, extlinux.conf, ramdisk rootfs 262144 - - 5 Linux system Secondary GPT 16777183 33 16896 Quelle der Info's (bearbeitet) Rockchip.
Hier sieht man das zwei Partitionen gemountet werden.
rock64@rockpro64:~$ df -h Filesystem Size Used Avail Use% Mounted on udev 992M 0 992M 0% /dev tmpfs 200M 484K 199M 1% /run /dev/mmcblk0p7 30G 1.3G 27G 5% / tmpfs 996M 0 996M 0% /dev/shm tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 996M 0 996M 0% /sys/fs/cgroup /dev/mmcblk0p6 112M 4.0K 112M 1% /boot/efi /dev/sda1 1.9T 43G 1.8T 3% /mnt tmpfs 200M 0 200M 0% /run/user/1000
- /dev/mmcblk0p6 = /boot/efi
- /dev/mmcblk0p7 = Linux System /
Inhalt /boot/efi (/dev/mmcblk0p6)
rock64@rockpro64:/boot/efi$ ls -la total 22 drwxr-xr-x 3 root root 16384 Jan 1 1970 . drwxr-xr-x 5 root root 4096 Aug 27 17:23 .. drwxr-xr-x 2 root root 2048 Jul 26 09:15 extlinux
Inhalt extlinux
rock64@rockpro64:/boot/efi$ ls -la extlinux/ total 20 drwxr-xr-x 2 root root 2048 Jul 26 09:15 . drwxr-xr-x 3 root root 16384 Jan 1 1970 .. -rwxr-xr-x 1 root root 688 Jul 21 22:50 extlinux.conf
Datei extlinux.conf
timeout 10 default kernel-latest menu title select kernel label kernel-latest kernel /Image initrd /initrd.img fdt /dtb append rw root=LABEL=linux-root rootwait rootfstype=ext4 panic=10 init=/sbin/init coherent_pool=1M ethaddr=${ethaddr} eth1addr=${eth1addr} serial=${serial#} cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory swapaccount=1 label kernel-previous kernel /Image.bak initrd /initrd.img.bak fdt /dtb.bak append rw root=LABEL=linux-root rootwait rootfstype=ext4 panic=10 init=/sbin/init coherent_pool=1M ethaddr=${ethaddr} eth1addr=${eth1addr} serial=${serial#} cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory swapaccount=1
Inhalt /boot (/dev/mmcblk0p7)
rock64@rockpro64:/boot$ ls System.map-4.4.132-1075-rockchip-ayufan-ga83beded8524 filesystem.packages config-4.4.132-1075-rockchip-ayufan-ga83beded8524 filesystem.packages-remove dtbs initrd.img-4.4.132-1075-rockchip-ayufan-ga83beded8524 efi vmlinuz-4.4.132-1075-rockchip-ayufan-ga83beded8524 extlinux
In extlinux liegt auch hier eine extlinux.conf mit folgendem Inhalt.
timeout 10 menu title select kernel label kernel-4.4.132-1075-rockchip-ayufan-ga83beded8524 kernel /boot/vmlinuz-4.4.132-1075-rockchip-ayufan-ga83beded8524 initrd /boot/initrd.img-4.4.132-1075-rockchip-ayufan-ga83beded8524 devicetreedir /boot/dtbs/4.4.132-1075-rockchip-ayufan-ga83beded8524 append rw panic=10 init=/sbin/init coherent_pool=1M ethaddr=${ethaddr} eth1addr=${eth1addr} serial=${serial#} cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory swapaccount=1 root=LABEL=linux-root rootwait rootfstype=ext4 label kernel-4.4.132-1075-rockchip-ayufan-ga83beded8524-memtest kernel /boot/vmlinuz-4.4.132-1075-rockchip-ayufan-ga83beded8524 initrd /boot/initrd.img-4.4.132-1075-rockchip-ayufan-ga83beded8524 devicetreedir /boot/dtbs/4.4.132-1075-rockchip-ayufan-ga83beded8524 append rw panic=10 init=/sbin/init coherent_pool=1M ethaddr=${ethaddr} eth1addr=${eth1addr} serial=${serial#} cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory swapaccount=1 root=LABEL=linux-root rootwait rootfstype=ext4 memtest
Ok, das kenne ich. Hier stellt man ein von wo er bootet usw. Was ich nicht verstehe, wofür braucht es dann /boot/efi (/dev/mmcblk0p6) ?? Es gibt immer einen Eintrag für die aktuelle Kernelversion und die alte Kernelversion. Wenn was schief geht, kann man die alte Version booten. Die aktuelle Version steht immer oben. Im Beispiel handelt es sich um das Original Image, kein anderer Kernel ist installiert.
- Ordner /boot/efi ???
- Ordner /boot/dtbs - hier liegt das .dts File!!
- Ordner /boot/efi ???
- Ordner /boot/extlinux ???????
System.map-4.4.132-1075-rockchip-ayufan-ga83beded8524
A symbol table is a look-up between symbol names and their addresses in memory. A symbol name may be the name of a variable or the name of a function.
Quelle: https://en.wikipedia.org/wiki/System.map
Beispiel (gekürzt)
0000000000000000 A __rela_size 0000000000000000 A _kernel_flags_le_hi32 0000000000000000 A _kernel_offset_le_hi32 0000000000000000 A _kernel_size_le_hi32 000000000000000a A _kernel_flags_le_lo32 0000000000000200 A PECOFF_FILE_ALIGNMENT 0000000000080000 A _kernel_offset_le_lo32 000000000119f908 A __rela_offset 0000000001392000 A _kernel_size_le_lo32 ffffff8008080000 t _head ffffff8008080000 T _text ffffff8008080800 T __exception_text_start ffffff8008080800 T _stext ffffff8008080800 T do_undefinstr ffffff8008080a1c T do_sysinstr ffffff8008080ab4 T do_mem_abort ffffff8008080b60 T do_sp_pc_abort ffffff8008080c34 T do_debug_exception ffffff8008080ce8 T __exception_text_end ffffff8008080ce8 T __irqentry_text_start ffffff8008080ce8 t gic_handle_irq ffffff8008080da8 t gic_handle_irq ffffff8008080f28 T __do_softirq ffffff8008080f28 T __irqentry_text_end ffffff8008080f28 T __softirqentry_text_start ffffff8008081228 T __entry_text_start ffffff8008081228 T __softirqentry_text_end ffffff8008081800 T vectors
config-4.4.132-1075-rockchip-ayufan-ga83beded8524
Linux Kernel Konfiguration
Beispiel (gekürzt)
# # Automatically generated file; DO NOT EDIT. # Linux/arm64 4.4.132 Kernel Configuration # CONFIG_ARM64=y CONFIG_64BIT=y CONFIG_ARCH_PHYS_ADDR_T_64BIT=y CONFIG_MMU=y CONFIG_ARCH_MMAP_RND_BITS_MIN=18 CONFIG_ARCH_MMAP_RND_BITS_MAX=24 CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=11 CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=16 CONFIG_ARM64_PAGE_SHIFT=12 CONFIG_ARM64_CONT_SHIFT=4 CONFIG_STACKTRACE_SUPPORT=y CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000 CONFIG_LOCKDEP_SUPPORT=y CONFIG_TRACE_IRQFLAGS_SUPPORT=y CONFIG_RWSEM_XCHGADD_ALGORITHM=y CONFIG_GENERIC_BUG=y CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_CSUM=y CONFIG_GENERIC_CALIBRATE_DELAY=y CONFIG_ZONE_DMA=y CONFIG_HAVE_GENERIC_RCU_GUP=y CONFIG_ARCH_DMA_ADDR_T_64BIT=y CONFIG_NEED_DMA_MAP_STATE=y CONFIG_NEED_SG_DMA_LENGTH=y CONFIG_SMP=y CONFIG_SWIOTLB=y CONFIG_IOMMU_HELPER=y CONFIG_KERNEL_MODE_NEON=y CONFIG_FIX_EARLYCON_MEM=y CONFIG_PGTABLE_LEVELS=3
filesystem.packages
Beispiel (gekürzt)
adduser 3.116ubuntu1 alsa-utils 1.1.3-1ubuntu1 apt 1.6.1 apt-utils 1.6.1 base-files 10.1ubuntu2 base-passwd 3.5.44 bash 4.4.18-2ubuntu1 binutils 2.30-15ubuntu1 binutils-aarch64-linux-gnu 2.30-15ubuntu1 binutils-common:arm64 2.30-15ubuntu1 bsdutils 1:2.31.1-0.4ubuntu3 build-essential 12.4ubuntu1 busybox-initramfs 1:1.27.2-2ubuntu3 bzip2 1.0.6-8.1 ca-certificates 20180409 console-setup 1.178ubuntu2 console-setup-linux 1.178ubuntu2 coreutils 8.28-1ubuntu1
filesystem.packages-remove
Datei ist leer
initrd.img-4.4.132-1075-rockchip-ayufan-ga83beded8524
initrd ist ein temporäres Dateisystem, das vom Linux-Kernel während des Bootvorgangs verwendet wird.
Quelle: https://de.wikipedia.org/wiki/Initrd
Jedes mal, wenn man einen Kernel installiert, wird dieses File angelegt. Ein Beispiel von meinem ROCKPro64 mit NVMe SSD.
rock64@rockpro64v2_0:/boot$ ls config-4.18.0-rc8-1060-ayufan-g45828c4db727 config-4.4.132-1075-rockchip-ayufan-ga83beded8524 dtbs efi extlinux filesystem.packages filesystem.packages-remove initrd.img-4.18.0-rc8-1056-ayufan-gad339353011e initrd.img-4.18.0-rc8-1060-ayufan-g45828c4db727 initrd.img-4.18.0-rc8-1060-ayufan-g45828c4db727.bak initrd.img-4.4.132-1075-rockchip-ayufan-ga83beded8524 System.map-4.18.0-rc8-1060-ayufan-g45828c4db727 System.map-4.4.132-1075-rockchip-ayufan-ga83beded8524 vmlinuz-4.18.0-rc8-1060-ayufan-g45828c4db727 vmlinuz-4.4.132-1075-rockchip-ayufan-ga83beded8524
Hier kann man auch ganz gut erkennen, das es immer ein initrd.img gibt, eine entsprechende System.map und eine vmlinux.
vmlinuz-4.4.132-1075-rockchip-ayufan-ga83beded8524
On Linux systems, vmlinux is a statically linked executable file that contains the Linux kernel in one of the object file formats supported by Linux, which includes ELF, COFF and a.out. The vmlinux file might be required for kernel debugging, symbol table generation or other operations, but must be made bootable before being used as an operating system kernel by adding a multiboot header, bootsector and setup routines.
Ich denke, das man das normalerweise nicht braucht. Aber ich mach hier zur Sicherheit mal ein paar ???? dran!
wird fortgesetzt..
-
Um einen neuen Kernel booten zu können, brauche ich diese 4 Dateien unter /boot
- config-4.19.0-rc4-1065-ayufan-g72e04c7b3e06
- initrd.img-4.19.0-rc4-1065-ayufan-g72e04c7b3e06
- System.map-4.19.0-rc4-1065-ayufan-g72e04c7b3e06
- vmlinuz-4.19.0-rc4-1065-ayufan-g72e04c7b3e06
Und den Ordner /boot/dtbs/4.19.0-rc4-1065-ayufan-g72e04c7b3e06 mit folgendem Inhalt
rock64@rockpro64v2_0:/boot/dtbs/4.19.0-rc4-1065-ayufan-g72e04c7b3e06$ ls -la total 104 drwxr-xr-x 26 root root 4096 Sep 30 09:54 . drwxr-xr-x 6 root root 4096 Sep 30 09:55 .. drwxr-xr-x 2 root root 4096 Sep 30 09:54 al drwxr-xr-x 2 root root 4096 Sep 30 09:54 allwinner drwxr-xr-x 2 root root 4096 Sep 30 09:54 altera drwxr-xr-x 2 root root 4096 Sep 30 09:54 amd drwxr-xr-x 2 root root 4096 Sep 30 09:54 amlogic drwxr-xr-x 2 root root 4096 Sep 30 09:54 apm drwxr-xr-x 2 root root 4096 Sep 30 09:54 arm drwxr-xr-x 4 root root 4096 Sep 30 09:54 broadcom drwxr-xr-x 2 root root 4096 Sep 30 09:54 cavium drwxr-xr-x 2 root root 4096 Sep 30 09:54 exynos drwxr-xr-x 2 root root 4096 Sep 30 09:54 freescale drwxr-xr-x 2 root root 4096 Sep 30 09:54 hisilicon drwxr-xr-x 2 root root 4096 Sep 30 09:54 lg drwxr-xr-x 2 root root 4096 Sep 30 09:54 marvell drwxr-xr-x 2 root root 4096 Sep 30 09:54 mediatek drwxr-xr-x 2 root root 4096 Sep 30 09:54 nvidia drwxr-xr-x 2 root root 4096 Sep 30 09:54 qcom drwxr-xr-x 2 root root 4096 Sep 30 09:54 renesas drwxr-xr-x 2 root root 4096 Sep 30 09:54 rockchip drwxr-xr-x 2 root root 4096 Sep 30 09:54 socionext drwxr-xr-x 2 root root 4096 Sep 30 09:54 sprd drwxr-xr-x 2 root root 4096 Sep 30 09:54 synaptics drwxr-xr-x 2 root root 4096 Sep 30 09:54 xilinx drwxr-xr-x 2 root root 4096 Sep 30 09:54 zte
Unter /boot/extlinux liegt dann die Datei extlinux.conf
Die sieht bei mir dann so aus
timeout 10 menu title select kernel label kernel-4.19.0-rc4-1065-ayufan-g72e04c7b3e06 kernel /boot/vmlinuz-4.19.0-rc4-1065-ayufan-g72e04c7b3e06 initrd /boot/initrd.img-4.19.0-rc4-1065-ayufan-g72e04c7b3e06 devicetreedir /boot/dtbs/4.19.0-rc4-1065-ayufan-g72e04c7b3e06 append rw panic=10 init=/sbin/init coherent_pool=1M ethaddr=${ethaddr} eth1addr=${eth1addr} serial=${serial#} cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory swapaccount=1 root=LABEL=TEST rootwait rootfstype=ext4 label kernel-4.19.0-rc4-1065-ayufan-g72e04c7b3e06-memtest kernel /boot/vmlinuz-4.19.0-rc4-1065-ayufan-g72e04c7b3e06 initrd /boot/initrd.img-4.19.0-rc4-1065-ayufan-g72e04c7b3e06 devicetreedir /boot/dtbs/4.19.0-rc4-1065-ayufan-g72e04c7b3e06 append rw panic=10 init=/sbin/init coherent_pool=1M ethaddr=${ethaddr} eth1addr=${eth1addr} serial=${serial#} cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory swapaccount=1 root=LABEL=TEST rootwait rootfstype=ext4 memtest
Darunter kommen dann evt. die alten Kernel die installiert waren, das habe ich hier im Beispiel weg gelassen.
-
-
-
-
-
-
-
Mainline Kernel 4.20.x
Verschoben Images -
ROCKPro64 - PCIe SATA Karte
Verschoben Hardware