Tiny Core Linux

Tiny Core Base => Corepure64 => Topic started by: xrayman2016 on January 14, 2016, 01:18:18 PM

Title: Compiling new kernel for corepure64
Post by: xrayman2016 on January 14, 2016, 01:18:18 PM
Hi All,

I'm new to TC, but want to use it to pxe boot compute nodes for a HPC cluster. I've gotten everything to work using CorePure64-5.4.iso, but only for dual quad-core nodes. I am now adding dual 12-core nodes and it seems that the kernel (3.8) that comes with this TC does not work for these newer nodes (only 8 total cpus are recognized). I've booted a 24-core node using Fedora 23, which comes with 4.2 kernel as standard, so I'm thinking that it is a kernel issue. If not, I would be glad to hear how to get my existing CorePure64-5.4 to recognize more cores. If a newer kernel is indeed needed, I would appreciate any help in how to compile a 4.2 kernel for TC.

Thanks,

Dan
Title: Re: Compiling new kernel for corepure64
Post by: Rich on January 14, 2016, 01:54:48 PM
Hi xrayman2016
What happens if you add the following boot code:
Code: [Select]
maxcpus=12
Title: Re: Compiling new kernel for corepure64
Post by: xrayman2016 on January 14, 2016, 02:00:50 PM
Would this be put into the "default" file as APPEND maxcpus=12?
Title: Re: Compiling new kernel for corepure64
Post by: Rich on January 14, 2016, 02:03:46 PM
Hi xrayman2016
It goes in the  .conf  file used by your boot loader. Same line that contains  initread=.
Title: Re: Compiling new kernel for corepure64
Post by: xrayman2016 on January 14, 2016, 02:12:40 PM
If I understand correctly, the TC image doesn't use or have a bootloader, like GRUB when booting via PXE. There is no /boot/ directory in the image, at least. Tried this kernel boot code in the PXE "default" file. Didn't work.
Title: Re: Compiling new kernel for corepure64
Post by: Rich on January 14, 2016, 02:42:03 PM
Hi xrayman2016
According to this (scroll all the way down):
http://support.tabernus.com/support/solutions/articles/3000033502-how-to-boot-tabernus-lan-wan-in-existing-pxe-environment
it goes on the  APPEND  line. However, if  NR_CPUS  in the kernel config file was set to 8 (which I suspect it was) that
would limit you to 8 CPUs max. So you probably would need to increase  NR_CPUS  and recompile the kernel.
Title: Re: Compiling new kernel for corepure64
Post by: xrayman2016 on January 14, 2016, 02:47:59 PM
This is great news, Rich! Thank you so much. I should be able to recompile a new kernel inside Fedora 21, but use the .conf file from TC, right? Except to change that configuration entry, of course.
Title: Re: Compiling new kernel for corepure64
Post by: Rich on January 14, 2016, 02:53:14 PM
Hi xrayman2016
I think others have managed to compile under other distros, though compiling under Tinycore is probably preferred.
You said you are running a 5.x version, so config files can be found here:
http://tinycorelinux.net/5.x/x86/release/src/kernel/
Title: Re: Compiling new kernel for corepure64
Post by: Juanito on January 15, 2016, 12:01:06 AM
I would appreciate any help in how to compile a 4.2 kernel for TC.

Already done  :) tc-7.x beta is 4.2.7 kernel

http://www.tinycorelinux.net/7.x/x86_64/release_candidates/
Title: Re: Compiling new kernel for corepure64
Post by: Rich on January 15, 2016, 12:20:44 AM
Hi Juanito
His problem isn't that he needs a 4.2 kernel. It's the kernel was compiled with  CONFIG_NR_CPUS=8  but he's running
hardware with more than 8 CPUs and he wants to utilize them.
Title: Re: Compiling new kernel for corepure64
Post by: xrayman2016 on January 15, 2016, 12:08:16 PM
Just tried recompiling the 3.8.13 kernel using config-3.8.13-tinycore64 and linux-3.8.13-patched.txz, after changing CONFIG_NR_CPUS=64 in .config file. Node did not boot up. I only did make bzImage, as I didn't think a whole compile was necessary, given that none of the modules were changed. Did I miss something? Would it be possible to set CONFIG_NR_CPUS=64 in the new beta version? That would future-proof TC for the newer multi-core processors. Just a thought...
Title: Re: Compiling new kernel for corepure64
Post by: Rich on January 15, 2016, 03:41:49 PM
Hi xrayman2016
Just a thought, but you did rename  bzImage  to  vmlinuz  so it would be found, right?
Title: Re: Compiling new kernel for corepure64
Post by: xrayman2016 on January 15, 2016, 04:04:59 PM
Yes, I did that first thing. From one of the posts in the Remaster forum section, it sounds like a compile modules issue, but I didn't recompile any modules, since I just need the new kernel. Maybe this is not correct...

This is the link to that forum article:
http://forum.tinycorelinux.net/index.php/topic,16995.msg101928.html#msg101928

My node stops booting at about the same place as his. Although I didn't try to add any kernel modules, just changed NR_CPUS.

I'm compiling the kernel on Fedora 21 so far. Maybe I should try within TC? Can't see how that should matter, though.
Title: Re: Compiling new kernel for corepure64
Post by: curaga on January 16, 2016, 05:18:18 AM
Just tried recompiling the 3.8.13 kernel using config-3.8.13-tinycore64 and linux-3.8.13-patched.txz, after changing CONFIG_NR_CPUS=64 in .config file. Node did not boot up.

Since you used a different compiler, you must recompile modules as well. A different version of gcc invalidates everything, even if your config change would not.

Quote
Would it be possible to set CONFIG_NR_CPUS=64 in the new beta version? That would future-proof TC for the newer multi-core processors. Just a thought...

Yes, in the 64-bit kernel this will be done.
Title: Re: Compiling new kernel for corepure64
Post by: Rich on January 16, 2016, 10:07:05 AM
Hi curaga
Since you used a different compiler, you must recompile modules as well. A different version of gcc invalidates everything, even if your config change would not.

I'm guessing some extensions might be affected too. For example, things like  alsa-modules, ndiswrapper-modules,
wl-modules, etc.
Title: Re: Compiling new kernel for corepure64
Post by: xrayman2016 on January 16, 2016, 04:44:11 PM
Thanks all!

I'll give the 7.0beta a try on Monday. I already have a script that turns a tc iso into a bootable node, including all needed extentions.

I'll let you know how it turns out then.

Dan
Title: Re: Compiling new kernel for corepure64
Post by: curaga on January 17, 2016, 06:23:36 AM
The cpu change will only be in the next beta, so maybe you want to wait a bit?
Title: Re: Compiling new kernel for corepure64
Post by: xrayman2016 on January 17, 2016, 02:45:51 PM
Will do. Thanks for the heads up.
Title: Re: Compiling new kernel for corepure64
Post by: xrayman2016 on January 21, 2016, 02:37:12 PM
Which NIC modules are built into the new 7.0 beta2? I've booted up my compute node, yet the NIC now isn't being seen via 'ifconfig', only the loopback. I am using DHCP/PXE to boot the node. The node downloads the kernel and image just fine, it just hangs when it runs some network code (to determine its own hostname) in bootlocal.sh The NIC came up fine with the stock 5.4 iso (except for the cpu number issue, CONFIG_NR_CPUS). The number of cpus is now coming up fine.

I think we're almost there!

Dan
Title: Re: Compiling new kernel for corepure64
Post by: xrayman2016 on January 21, 2016, 03:42:36 PM
I just went back to the CorePure 5.4 version and rebooted the node, to check what NIC driver it is using. It is the igb:Intel Gigabit Ethernet Network Driver - version 4.1.2-k. This driver is indeed found on the new 7.0 beta2 iso, but is not being loaded by the kernel. Is there a reason that the driver is loaded in version 5.4, but not in version 7.0 beta2?

Dan
Title: Re: Compiling new kernel for corepure64
Post by: Rich on January 21, 2016, 03:52:33 PM
Hi xrayman2016
Have you checked  dmesg  for errors?
Title: Re: Compiling new kernel for corepure64
Post by: curaga on January 21, 2016, 03:55:43 PM
It grew a new dependency, on i2c-algo-bit, which I missed. You can load the i2c extension and everything should just work.

We'll include that module in the next version.
Title: Re: Compiling new kernel for corepure64
Post by: xrayman2016 on January 21, 2016, 04:02:55 PM
Thanks, I just found that information on an old forum post just now, and via looking at the dependencies of the igb.ko.gz driver. I'll load that into my image and try again.

Dan
Title: Re: Compiling new kernel for corepure64
Post by: xrayman2016 on January 21, 2016, 04:23:38 PM
Added i2c-4.2.9-tinycore64.tcz to the image. No go yet on the PXE boot.  :(

Am not able to check this on my benchtest setup, as I do not have internet access there and can thus only use canned iso's for testing.

Dan
Title: Re: Compiling new kernel for corepure64
Post by: xrayman2016 on January 22, 2016, 11:06:14 AM
You guys are amazing, and fast! Just downloaded the 7.0beta3 version. Worked first time! The compute node booted up with no issues. Got the new OpenSSH server working also (I first downloaded the x86 version and wondered why the gcc_lib dependency went away until I realized that I needed the x86_64 version!).

Thanks again for all your help. I couldn't have done this without you.

Dan
Title: Re: Compiling new kernel for corepure64
Post by: sspans on May 27, 2016, 03:18:28 AM
The 7.1 kernel has CONFIG_NR_CPUS=64 but still fails to support SMP on some hardware,
resulting in running with 1 core active on HP Gen9 UEFI hardware.

Code: [Select]
smpboot: Allowing 1 CPUs, 0 hotplug CPUs

The main reason seems to be that CONFIG_X86_X2APIC is not set in the kernel config, which is required
for SMP on a large number of platforms.

https://forums.gentoo.org/viewtopic-t-1017132-start-0.html
Title: Re: Compiling new kernel for corepure64
Post by: curaga on May 27, 2016, 04:34:30 AM
Thanks, noted. Seems to be only big server hardware, which is not really the target of Core, and so this is not urgent (for 8.x).

Using a custom kernel is fairly easy - download our source and config, enable that option, build. If the option has small enough reach, the kernel will even be compatible with existing modules, requiring you to only replace vmlinuz.