WR1043ND - too big kernel

Piotr Kubaj pkubaj at riseup.net
Fri Sep 5 19:15:50 UTC 2014


On 09/05/2014 19:59, hiren panchasara wrote:
> On Thu, Sep 4, 2014 at 2:27 PM, hiren panchasara <hiren at freebsd.org> wrote:
>> On Thu, Sep 4, 2014 at 1:44 PM, hiren panchasara <hiren at freebsd.org> wrote:
>>> On Thu, Sep 4, 2014 at 1:39 PM, Piotr Kubaj <pkubaj at riseup.net> wrote:
>>>> Adding following lines to kernel config shrinks size to 1750991 (on
>>>> releng/10.0):
>>>> makeoptions     INLINE_LIMIT=768
>>>> nomakeoptions   DEBUG
>>>> nomakeoptions   ALQ
>>>> nooptions       INET6
>>>> options         NO_SWAPPING
>>>> nooptions       HWPMC_HOOKS
>>>> nodevice        hwpmc
>>>> nodevice        hwpmc_mips24k
>>>> nooptions       KDB
>>>>
>>>> Any ideas what else I can remove? :P
>>>
>>> I see you already have r255656.
>>> Let me try to build for -head and see.
>>
>>
>>> [mktplinkfw] *** error: kernel image is too big. Max[1572352] kernel img [2000794]
>>
>> ugh. Need to trim more. I'll see if I can find time this week to check
>> where/what we can trim.
> 
> Randomly disabled a ton of things and then I could create small enough
> kernel. I'm not even sure if things will actually work.
> 
> We've grown too big, it seems :-(
> 
> Diffs against -head.
> 
> Index: sys/mips/conf/TP-WN1043ND
> ===================================================================
> --- sys/mips/conf/TP-WN1043ND   (revision 271137)
> +++ sys/mips/conf/TP-WN1043ND   (working copy)
> @@ -16,7 +16,7 @@
>  options         AR71XX_REALMEM=32*1024*1024
> 
>  # i2c GPIO bus
> -device         gpioiic
> +#device                gpioiic
>  device         iicbb
>  device         iicbus
>  device         iic
> @@ -28,7 +28,7 @@
>  device         rtl8366rb
> 
>  # read MSDOS formatted disks - USB
> -options        MSDOSFS
> +#options       MSDOSFS
> 
>  # Enable the uboot environment stuff rather then the
>  # redboot stuff.
> @@ -57,3 +57,29 @@
>  nooptions      WITNESS_SKIPSPIN
>  nooptions      DEBUG_REDZONE
>  nooptions      DEBUG_MEMGUARD
> +
> +nooptions         DDB
> +nooptions         KDB
> +nooptions         ALQ
> +nooptions         HWPMC_HOOKS
> +nodevice          hwpmc
> +nodevice          hwpmc_mips24k
> +nooptions         INET6                   #InterNETworking
> +
> +nooptions         ATH_DEBUG
> +nooptions         AH_DEBUG
> +nooption          AH_DEBUG_ALQ
> +nooptions         IEEE80211_DEBUG
> +nooptions         IEEE80211_SUPPORT_MESH
> +nooptions         IEEE80211_SUPPORT_TDMA
> +nooptions         IEEE80211_ALQ   # 802.11 ALQ logging support
> +
> +nodevice          usb
> +nooptions         USB_EHCI_BIG_ENDIAN_DESC
> +nooptions         USB_DEBUG
> +nooptions         USB_HOST_ALIGN
> +nodevice          umass
> +nodevice          ehci
> +
> +nodevice       gpio
> +nodevice       gpioled
> 
I could've done it myself, but I need usb and GPIO is required for usb,
so that needs to stay. That said, I removed PSEUDOFS (I don't need
/proc) and some of what you mailed, so now it's smaller, but still too
large (1682325). Here are the contents (still on releng/10.0)
# Force the board memory - 64mb
options         AR71XX_REALMEM=64*1024*1024

makeoptions     INLINE_LIMIT=768
nomakeoptions   DEBUG
nomakeoptions   ALQ
nooptions       INET6
options         NO_SWAPPING
nooptions       HWPMC_HOOKS
nodevice        hwpmc
nodevice        hwpmc_mips24k
nooptions       USB_DEBUG
nooptions       IEEE80211_DEBUG
nooptions       PSEUDOFS
nooptions         ATH_DEBUG
nooptions         AH_DEBUG
nooption          AH_DEBUG_ALQ
nooptions         IEEE80211_SUPPORT_MESH
nooptions         IEEE80211_SUPPORT_TDMA
nooptions         IEEE80211_ALQ   # 802.11 ALQ logging support

# i2c GPIO bus
device          gpioiic
device          iicbb
device          iicbus
device          iic

# ethernet switch device
device          etherswitch

# RTL8366RB support
device          rtl8366rb

# Enable the uboot environment stuff rather then the
# redboot stuff.
options         AR71XX_ENV_UBOOT

# uncompress - to boot natively from flash
device         geom_uncompress
options                GEOM_UNCOMPRESS

# Used for the static uboot partition map
device          geom_map

# Boot off of the rootfs, as defined in the geom_map setup.
options                ROOTDEVNAME=\"ufs:map/rootfs.uncompress\"

# We bite the performance overhead for now; the kernel won't
# fit if the mutexes are inlined.
options        MUTEX_NOINLINE
options        RWLOCK_NOINLINE
options        SX_NOINLINE

# Remove everything we don't need.  We need a _really_ small kernel!
nooptions      INVARIANTS
nooptions      INVARIANT_SUPPORT
nooptions      WITNESS
nooptions      WITNESS_SKIPSPIN
nooptions      DEBUG_REDZONE
nooptions      DEBUG_MEMGUARD
nooptions      DDB
nooptions      KDB

It doesn't need to be much smaller now, but what made it so large? Why
did it work a year ago with 10.0-CURRENT? Since 10.0-RELEASE is too
large and there are working images with 10.0-CURRENT from August 2013 at
http://www.strugglingcoder.info/pkgs/TP-WN1043ND.factory.bin (it seems
to be actually generated by you), something must have happened  then and
later, when CURRENT went up to 11.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 801 bytes
Desc: OpenPGP digital signature
URL: <http://lists.freebsd.org/pipermail/freebsd-mips/attachments/20140905/0959b793/attachment.sig>


More information about the freebsd-mips mailing list