mhc Posted June 19, 2020 Share Posted June 19, 2020 Hi all! I need to back to an older kernel version that I had used past year. In my PC, I conserve without any kind of changes, the working directory used to run compile.sh. If I did not missunderstood my Armbian documentation reading, there is an option to tell compilation process that don't try to upgrade sources files before compile (touch .ignore_changes). Am I right? And, if it's fine, Could somebody please explain me where and how must I apply these parameter? Thanks in advances! Edit: You could ask. Why he want to re-compile if he has past_year.img file? The reason is I need to include kernel headers nad my old compilation does not have them. Mariano 0 Quote Link to comment Share on other sites More sharing options...
Werner Posted June 19, 2020 Share Posted June 19, 2020 Maybe you mean offline mode? 0 Quote Link to comment Share on other sites More sharing options...
mhc Posted June 19, 2020 Author Share Posted June 19, 2020 Yes werner, I think offline mode will be fine for me, I just need to preserve source files to re-generate 4.19 image (if I do it normal way I think my generated image will be 5.4.47). Sorry for basic questions, how do I setup offline mode? 0 Quote Link to comment Share on other sites More sharing options...
Werner Posted June 19, 2020 Share Posted June 19, 2020 https://docs.armbian.com/Developer-Guide_Build-Options/ Maybe OFFLINE_WORK is what you are looking for 0 Quote Link to comment Share on other sites More sharing options...
mhc Posted June 19, 2020 Author Share Posted June 19, 2020 Thanks again Werner, I'm compiling now, adding ./compile.sh INSTALL_HEADERS=yes OFFLINE_WORK=yes I will confirm results when it end. Regards! 0 Quote Link to comment Share on other sites More sharing options...
mhc Posted June 19, 2020 Author Share Posted June 19, 2020 Mmmmmmmh, I don't know where is my error, finally compile is done, but now I've 2 problems. Firstly, Although I have compiled using the following statement: sudo ./compile.sh INSTALL_HEADERS=yes OFFLINE_WORK=yes BUILD_MINIMAL=yes and have received this messagges at begining of compilation process: /tmp/tmp.lU8KzaKHib: line 4: update_src: command not found [ o.k. ] Using config file [ /compilacion_viejo_kernel/Armbian-5.4.29/build/userpatches/config-example.conf ] [ o.k. ] Command line: setting INSTALL_HEADERS to [ yes ] [ o.k. ] Command line: setting OFFLINE_WORK to [ yes ] [ o.k. ] Command line: setting BUILD_MINIMAL to [ yes ] [ .... ] * [ You are working offline. ] [ .... ] * [ Sources, time and host will not be checked ] when compilation is finished, I just have this output files: /compilacion_viejo_kernel/Armbian-5.4.29/build/output/images/Armbian_20.08.0-trunk_Bananapim2ultra_bionic_current_5.4.47_minimal.img /compilacion_viejo_kernel/Armbian-5.4.29/build/output/images/Armbian_20.08.0-trunk_Bananapim2ultra_bionic_current_5.4.47_minimal.img.sha /compilacion_viejo_kernel/Armbian-5.4.29/build/output/images/Armbian_20.08.0-trunk_Bananapim2ultra_bionic_current_5.4.47_minimal.img.txt I tried with kernel version 5.4.29, instead of 4.19, but I think it doesn't matter for this issue??? My second problem is also, when I flash img file using etchoer, just like ever did it, system doesn't boot at all. I know HW is working, cause if I flash SD card with other image file, everything works fine. Is there some obvious thing that I'm missing? Thanks in advances! 0 Quote Link to comment Share on other sites More sharing options...
Werner Posted June 20, 2020 Share Posted June 20, 2020 Ah okey, offlinemode is not necessarily what you want. Aight to get this puzzle together. Each baord has a config file to determ the board family: https://github.com/armbian/build/tree/master/config/boards In your case sun8i. Then there is a source config to determ which sources to be used on a specific board family: https://github.com/armbian/build/tree/master/config/sources/families Still in your case sun8i. But you won't find any linked sources there. There is an include in the config that inludes sunxi (which is general term für the whole family, to say sun4i, sun8i, sun9i and so on). So check this include and there you will find the linked sources. At this very moment there are three branches filled with these kernel versions: - legacy: 4.19.x - current: 5.4.x - dev: 5.6.x If none of those matches the kernel you are looking for you have to search in the file history for changes. Some I can remember is that last year the support for old-legacy 3.10.x and 3.14.x has been dropped. And current (which name was "next" back then) was on 4.14.x 0 Quote Link to comment Share on other sites More sharing options...
mhc Posted June 22, 2020 Author Share Posted June 22, 2020 Firstly, thanks for your answer Werner, and sorry for delay in my answer, I could connect again just today. Things are exactly has you said, here is my board file in /build/config/boards/bananapim2ultra.csc # R40 quad core 2Gb SoC Wifi eMMC BOARD_NAME="Banana Pi M2U" BOARDFAMILY="sun8i" BOOTCONFIG="Bananapi_M2_Ultra_defconfig" OVERLAY_PREFIX="sun8i-r40" KERNEL_TARGET="current,dev" It is my family file /build/config/sources/families/sun8i.conf source "${BASH_SOURCE%/*}/include/sunxi_common.inc" if [[ -z ${OVERLAY_PREFIX} ]]; then OVERLAY_PREFIX='sun8i-h3' fi [[ -z $CPUMIN ]] && CPUMIN=480000 [[ -z $CPUMAX ]] && CPUMAX=1400000 family_tweaks_s() { if [[ ${BOARD} == nanopi-r1 ]]; then # rename eth1 to wan0 echo 'SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*",ATTR{address}=="00:00:00:00:00:00",ATTR{dev_id}=="0x0", ATTR{type}=="1",KERNEL=="eth1", NAME="wan0"' > $SDCARD/etc/udev/rules.d/70-persisetn-net.rules # change default console to tty1 which is wired to the chasis sed -i "s/ttyS0/ttyS1/" $SDCARD/boot/boot.cmd mkimage -C none -A arm -T script -d $SDCARD/boot/boot.cmd $SDCARD/boot/boot.scr fi } And finally here is /build/config/sources/families/include/sunxi_common.inc, the file that contains links to kernel's source. ARCH=armhf BOOTDELAY=1 BOOTPATCHDIR='u-boot-sunxi' UBOOT_TARGET_MAP=';;u-boot-sunxi-with-spl.bin' BOOTSCRIPT="boot-sunxi.cmd:boot.cmd" BOOTENV_FILE='sunxi-default.txt' LINUXFAMILY=sunxi UBOOT_FW_ENV='0x88000,0x20000' # /etc/fw_env.config offset and env size ASOUND_STATE='asound.state.sunxi-next' GOVERNOR=ondemand case $BRANCH in legacy) KERNELBRANCH='branch:linux-4.19.y' KERNELPATCHDIR='sunxi-'$BRANCH ;; current) KERNELSOURCE="https://github.com/megous/linux" KERNELBRANCH="branch:orange-pi-5.4" KERNELPATCHDIR='sunxi-'$BRANCH ;; dev) KERNELSOURCE="https://github.com/megous/linux" KERNELBRANCH="branch:orange-pi-5.5" KERNELPATCHDIR='sunxi-'$BRANCH ;; esac family_tweaks() { # execute specific tweaks function if present [[ $(type -t family_tweaks_s) == function ]] && family_tweaks_s cp $SRC/packages/blobs/splash/armbian-u-boot-24.bmp $SDCARD/boot/boot.bmp } family_tweaks_bsp() { # execute specific tweaks function if present [[ $(type -t family_tweaks_bsp_s) == function ]] && family_tweaks_bsp_s } write_uboot_platform() { dd if=/dev/zero of=$2 bs=1k count=1023 seek=1 status=noxfer > /dev/null 2>&1 dd if=$1/u-boot-sunxi-with-spl.bin of=$2 bs=1024 seek=8 status=noxfer > /dev/null 2>&1 } setup_write_uboot_platform() { if grep -q "ubootpart" /proc/cmdline; then local tmp=$(cat /proc/cmdline) tmp="${tmp##*ubootpart=}" tmp="${tmp%% *}" [[ -n $tmp ]] && local part=$(findfs PARTUUID=$tmp 2>/dev/null) [[ -n $part ]] && local dev=$(lsblk -n -o PKNAME $part 2>/dev/null) [[ -n $dev ]] && DEVICE="/dev/$dev" elif [[ -f /var/lib/armbian/force_search_uboot ]]; then # This may cause overwriting u-boot for android or other non-Armbian OS installed on eMMC # so don't run this function by default for dev in $(lsblk -d -n -p -o NAME); do if grep -q 'eGON.BT0' <(dd if=$dev bs=32 skip=256 count=1 status=none); then # Assuming that only one device with SPL signature is present echo "SPL signature found on $dev" >&2 DEVICE=$dev break fi done fi } So, if I'm not wrong, I can't get a specific kernel version (for example 5.4.29) from a branch, I have to select a branch (legacy, current or dev) and it gives me the last version of this branch. Am I right? 0 Quote Link to comment Share on other sites More sharing options...
Werner Posted June 22, 2020 Share Posted June 22, 2020 That cannot be answered by a simple yes or no. It depends. Let's take the 5.4 example. If you follow the current branch it leads us to megi's orangepi-5.4 branch. If you check the Makefile (https://github.com/megous/linux/blob/orange-pi-5.4/Makefile) you will notice that the actual version of this branch is 5.4.18. But when you compile the kernel it is actually 5.4.47 or something like that. This means these patches come from Armbian. If you check the patch directory for your board family (https://github.com/armbian/build/tree/master/patch/kernel/sunxi-current) you can see that the upstream patches are added here. If you need a very specific kernel version remove or rename the patches you do not need. That was a quite easy example to get what you want. On other sources, vanilla for example, it is a bit tougher. You would need to specify a commit at which point you want to use the sources. Sometimes a board is fixed to a specific commit or kernel version because it is known that newer version of the same kernel branch are known to be broken and (as most of the times) nobody has time or resources to deal with it. 2 Quote Link to comment Share on other sites More sharing options...
mhc Posted June 22, 2020 Author Share Posted June 22, 2020 Got it Werner, I want to really thank you for your time and your clear explanation. I'll try it! Regards 0 Quote Link to comment Share on other sites More sharing options...
Werner Posted June 22, 2020 Share Posted June 22, 2020 You're welcome. Let me know if you have further questions. Also feel free to chit chat in our IRC channel. Link down below 0 Quote Link to comment Share on other sites More sharing options...
J.M. Posted April 26, 2021 Share Posted April 26, 2021 On 6/22/2020 at 4:55 PM, Werner said: Let's take the 5.4 example. If you follow the current branch it leads us to megi's orangepi-5.4 branch. If you check the Makefile (https://github.com/megous/linux/blob/orange-pi-5.4/Makefile) you will notice that the actual version of this branch is 5.4.18. But when you compile the kernel it is actually 5.4.47 or something like that. This means these patches come from Armbian. If you check the patch directory for your board family (https://github.com/armbian/build/tree/master/patch/kernel/sunxi-current) you can see that the upstream patches are added here. If you need a very specific kernel version remove or rename the patches you do not need. So according to this example, if I want a specific kernel version, let's say the latest version at this moment (which is 5.4.114), do I need to add a patch that's rename the Makefile and edit the sublevel to 114 ? 0 Quote Link to comment Share on other sites More sharing options...
Werner Posted April 27, 2021 Share Posted April 27, 2021 Yes. Grab the needed incremental patches and add them like this one and all previous: https://cdn.kernel.org/pub/linux/kernel/v5.x/incr/patch-5.4.113-114.xz 1 Quote Link to comment Share on other sites More sharing options...
J.M. Posted April 27, 2021 Share Posted April 27, 2021 5 hours ago, Werner said: Yes. Grab the needed incremental patches and add them like this one and all previous: https://cdn.kernel.org/pub/linux/kernel/v5.x/incr/patch-5.4.113-114.xz 10x !!!!! 0 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.