Compiling a custom kernel with unRAID 4.2.1


Recommended Posts

If you have a development system with Slackware 12 with gcc 4.2.1, grab the kernel 4.6.22.5 source from  here:

 

Near as I've been able to tell, all the modules packaged with unraid server are compiled with gcc 3.4.6 and use glibc 2.3.6. Might make a difference in compatability?

Link to comment
  • 3 weeks later...

You can check the date, and depending on your perception of the term lately, decide if the posts falls under that category.

I think the word "late" is something about being in the end of a timeframe, so lately would span from maybe early end to late end.

 

I hope that Unraid, and compiling a custom kernel, is in the early stages of its lifecycle.

so: No.

 

yeah I know! You were just bumbing a thread. :-))

Link to comment
  • 1 month later...
  • 4 weeks later...

While we're on the topic ... how risky do you guys think it would be to upgrade to a kernel newer than that provided with 4.3.1? 

 

Specifically, I'm looking at trying out 2.6.26-rc7.  The reason I want to upgrade is because I'd like to run rtorrent on my unRAID box (one less thing to run on Windows).  The problem is that rtorrent uses mmap(), which up until 2.6.26 was not supported by the FUSE file system driver. 

 

I'm sort of new to Linux and personally I don't think it would be *that* risky, but I was wondering if anyone else has any thoughts before I try it out.

Link to comment
The problem is that rtorrent uses mmap(), which up until 2.6.26 was not supported by the FUSE file system driver.

 

I'm using rtorrent by directly chdir'ing to the /mnt/diskx/bittorrent directory.

I know I'm not using user shares for this application. I just wanted to get it going.

it's a small price to pay in the mean time.

I will wait until 2.6.26 is fully released.

 

Link to comment

FYI,

 

I've moved back down to 2.6.24.4.  There seems to be a bug in the Realtek network driver in 2.6.26 that is annoying enough for me to stop using it.  I had everything setup with rtorrent running when I got the following:

 

Jun 24 18:29:33 Tower kernel: NETDEV WATCHDOG: eth0: transmit timed out
Jun 24 18:29:33 Tower kernel: ------------[ cut here ]------------
Jun 24 18:29:33 Tower kernel: WARNING: at net/sched/sch_generic.c:222 dev_watchdog+0x80/0xc3()
Jun 24 18:29:33 Tower kernel: Modules linked in: acpi_cpufreq md_mod fuse pata_jmicron jmicron ide_core ahci sata_sil24 libata dock r8169
Jun 24 18:29:33 Tower kernel: Pid: 0, comm: swapper Not tainted 2.6.26-rc7-unRAID #2
Jun 24 18:29:33 Tower kernel:  [<c01141e6>] warn_on_slowpath+0x40/0x67
Jun 24 18:29:33 Tower kernel:  [<c01108ca>] __wake_up_common+0x2d/0x52
Jun 24 18:29:33 Tower kernel:  [<c0111dab>] __wake_up+0xf/0x15
Jun 24 18:29:33 Tower kernel:  [<c011459a>] wake_up_klogd+0x2b/0x2d
Jun 24 18:29:33 Tower kernel:  [<c011071e>] enqueue_task+0xa/0x14
Jun 24 18:29:33 Tower kernel:  [<c0124b18>] update_wall_time+0x51b/0x685
Jun 24 18:29:33 Tower kernel:  [<c0106218>] read_tsc+0x6/0x22
Jun 24 18:29:33 Tower kernel:  [<c0106218>] read_tsc+0x6/0x22
Jun 24 18:29:33 Tower kernel:  [<c011ec53>] queue_delayed_work_on+0x70/0x7b
Jun 24 18:29:33 Tower kernel:  [<c02932be>] dev_watchdog+0x0/0xc3
Jun 24 18:29:33 Tower kernel:  [<c011ec84>] queue_delayed_work+0x16/0x18
Jun 24 18:29:33 Tower kernel:  [<c02932be>] dev_watchdog+0x0/0xc3
Jun 24 18:29:33 Tower kernel:  [<c029333e>] dev_watchdog+0x80/0xc3
Jun 24 18:29:33 Tower kernel:  [<c0119fa3>] run_timer_softirq+0xdb/0x11c
Jun 24 18:29:33 Tower kernel:  [<c0117630>] __do_softirq+0x35/0x75
Jun 24 18:29:33 Tower kernel:  [<c0117692>] do_softirq+0x22/0x26
Jun 24 18:29:33 Tower kernel:  [<c010c572>] smp_apic_timer_interrupt+0x5c/0x64
Jun 24 18:29:33 Tower kernel:  [<c010697f>] mwait_idle+0x0/0x2d
Jun 24 18:29:33 Tower kernel:  [<c0103360>] apic_timer_interrupt+0x28/0x30
Jun 24 18:29:33 Tower kernel:  [<c010697f>] mwait_idle+0x0/0x2d
Jun 24 18:29:33 Tower kernel:  [<c01069a9>] mwait_idle+0x2a/0x2d
Jun 24 18:29:33 Tower kernel:  [<c010185f>] cpu_idle+0x44/0x58
Jun 24 18:29:33 Tower kernel:  =======================
Jun 24 18:29:33 Tower kernel: ---[ end trace cdb96bb965a1ca6e ]---
Jun 24 18:29:33 Tower kernel: r8169: eth0: link up

 

After this, the network interface is basically hosed until I reboot.  Some googling reveals that I'm not the only one seeing this problem.  Hopefully it'll be fixed by 2.6.26 final.

Link to comment

I'm considering an rtorrent install package and then a secondary rtorrent pacakge for the location.

 

This will let you select the home directory of a user called rtorrent then have the application use that as it;s home base.

 

Thereafter you can do something like

 

HOME=/mnt/disk1/bittorrent installpkg rtorrent_unraid.tgz

 

which will make the user, build the home tree, then put the .rtorrent.rc file in place include the session and watch directories, etc, etc.. then setup a startup script to launch it with screen...

 

one of the cool things I've learned about screen is you can start rtorrent with

 

screen -S rtorrent -D -m /usr/bin/rtorrent

 

which will start it in the background...

 

Then login from some other location and run 

screen -X rtorrent

and see/control a copy of the session.

When you disconnect from this session, the other session is still running...

Pretty cool.

 

So this is one of the things I've been working on.. i.e. automating the install.

 

Getting back to the issue with the kernel.. set the /home directory of the rtorrent user to the /mnt/diskx directory...

then when the latest/greatest kernel is ready, alter the home directory.

 

If the .rtorrent.rc is using relative directories such as

 

~rtorrent

~rtorrent/session

~rtorrent/watch

 

then you should still work OK.

Link to comment

FYI,

 

I've moved back down to 2.6.24.4.  There seems to be a bug in the Realtek network driver in 2.6.26 that is annoying enough for me to stop using it.  I had everything setup with rtorrent running when I got the following:

 

After this, the network interface is basically hosed until I reboot.  Some googling reveals that I'm not the only one seeing this problem.  Hopefully it'll be fixed by 2.6.26 final.

 

Welcome to the world of Realtek  :'(

Link to comment

That's a really cool idea WeeboTech.

 

I guess there's still the issue of customizing the .rtorrent.rc file.  I've set mine up like so:

 

port_range = 1720-1740
directory = /mnt/user/Junk/torrents/data
session = /mnt/user/Junk/torrents/.rtorrent-session
safe_sync = yes
stop_on_ratio=100

schedule = watch_directory_music,10,10,"load_start=/mnt/user/Junk/torrents/music/*.torrent,d.set_custom1=/mnt/user/Music"
schedule = watch_directory_video,10,10,"load_start=/mnt/user/Junk/torrents/video/*.torrent,d.set_custom1=/mnt/user/Video"
schedule = watch_directory_other,10,10,"load_start=/mnt/user/Junk/torrents/other/*.torrent,d.set_custom1=/mnt/user/Junk"

on_finished = move_complete,"execute=mv,-u,$d.get_base_path=,$d.get_custom1=.set_directory=$d.get_custom1="

 

The cool part is the schedule commands.  It'll auto-load torrent files and then move them to my proper user share when they complete.  This makes my rtorrent pretty much take care of itself.

Link to comment

Welcome to the world of Realtek  :'(

 

Just thought I'd add here -- this morning I built 2.6.26-rc8, and I also built the Realtek 8168 8.006.00 driver that's available from the Realtek web site.

 

The stock driver is not compatible with >=2.6.24 kernels.  I followed the instructions on from this http://ge.ubuntuforums.com/showthread.php?s=7cc61ba4831f00dae1a6ab56069d9a94&t=755002 thread to properly build it.  I manually applied the patch contained in one of the posts.

 

So far so good.  I've got rtorrent running and my network hasn't flaked out so far (it's been about 45 minutes).  It might be worth looking into using the Realtek r8168 driver for future versions of unRAID, rather than the buggy r8169 driver.

Link to comment
  • 1 month later...
  • 3 years later...

First, install a complete Slackware development system.

1) Get the kernel source for 4.6.22.5 (see above post)

2) Copy the unRAID source mods

3) Get a config file... either from someone else or mod your own

4) Build new kernel and modules

5) uncompress bzroot filesystem from USB

6) copy new kernel and modules to uncompressed bzroot filesystem.

7) recompress new bzroot filesystem back to usb.

8) edit syslinux config on flash to give you boot option to run custom unRAID or standard.

I'm building a custom kernel for a old MB with some specififs drivers.

I need some linux advice for point 6 : copy new kernel and modules. Where is the new kernel located on my unraid development (linux 2.26.39.4-unRAID)? What files need to be copied?

Can someone point me in the right direction ?

Thx :)

Link to comment

If you are in the root directory of the linux kernel source, the kernel image is arch/x86/boot/bzImage (rename to bzimage)

 

Install the modules (make modules_install) and copy them to the expanded bzroot.  For completeness, copy the System.map and .config from the linux kernel root directory to the usr/src/linux dir in the bzroot.  Recompress bzroot.

 

Hopefully that's helpful.

Link to comment

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.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.