How to compile the kernel just like how pfsense has it?



  • So, I had an issue where I needed to disable a driver that's compiled into the kernel.  I assume this meant that I needed to recompile the kernel.

    I think I've done this correctly, but wanted to verify with others here since uname -a is returning a version less than p25:

    Here's what I did from a clean FreeBSD 10.1 vm install:
    (as root)

    mkdir /usr/local/src
    cd /usr/local/src
    git clone -b RELENG_2_2 --single-branch https://github.com/pfsense/FreeBSD-src
    cd FreeBSD-src
    vi sys/amd64/conf/GENERIC
    

    commented out line 207:

    #device        em                      # Intel PRO/1000 Gigabit Ethernet Family

    make buildkernel
    make installkernel
    

    I then renamed the /boot/kernel directory on the pfsense system and scp'ed the /boot/kernel directory that was created from the 'make installkernel' command.

    I then compiled a newer driver against the FreeBSD-src git branch:
    ln -s /usr/local/src/FreeBSD-src /usr/src
    (Download drivers from the internet and put in /usr/local/src/em-7.6.1)

    cd /usr/local/src/em-7.6.1/src
    make clean
    make
    

    copy the resultant if_em.ko file over to the pfsense's /boot/kernel directory.

    Finally, I added this to the /boot/loader.conf file:

    if_em_load="YES"
    

    and rebooted.

    Did I miss anything?  According to this page:
    https://doc.pfsense.org/index.php/Versions_of_pfSense_and_FreeBSD
    the kernel version should be 10.1-RELEASE-p25, however, after reboot, uname -a shows:

    FreeBSD pfSense.domain.com 10.1-RELEASE-p24 FreeBSD 10.1-RELEASE-p24 #1 a595f80(RELENG_2_2)-dirty: Thu Mar  3 21:39:01 UTC 2016     root@:/usr/obj/usr/local/src/FreeBSD-src/sys/GENERIC  amd64
    

    p24 instead of p25?  Did I check out the wrong branch?  Any other gotchas?  There seems to be WAY more kernel modules in /boot/kernel than what comes from the pfsense 2.2.6 distro.  Is there an official 'make' command I should be using when compiling the kernel?