OE 2.2 - 800SE and 500HD - compiling fail

  • Sorry guys....my issue list is raising :face_with_tongue:


    With the "baby" machines (low memory)on the same environment where 7080,7020. 800se and 8000 have been compiled I have this errors:



    I don't know if the second is caused by the first. If needed I can attach also the whole logs.


    Thank you!


    PS obi : send me the bill of the beer for the extra work I'm creating!!

  • babsy98


    Is this problem likely to be sorted ? Or OE2,2 is not meant for dm500hd ?
    I get the same error :-


    [codeERROR: Error executing a python function in /home/pcd/dm500hd/opendreambox/openembedded-core/meta/recipes-qt/qt4/qt4-embedded_4.8.5.bb:


    The stack trace of python calls that resulted in this exception/failure was:
    File: 'emit_pkgdata', lineno: 290, function: <module>
    0286:
    0287: bb.utils.unlockfile(lf)
    0288:
    0289:
    *** 0290:emit_pkgdata(d)
    0291:
    File: 'emit_pkgdata', lineno: 216, function: emit_pkgdata
    0212: workdir = d.getVar('WORKDIR', True)
    0213:
    0214: for pkg in packages.split():
    0215: items = {}
    *** 0216: for files_list in pkgfiles[pkg]:
    0217: item_name = os.path.basename(files_list)
    0218: item_path = os.path.dirname(files_list)
    0219: if item_path not in items:
    0220: items[item_path] = []
    Exception: KeyError: 'qt4-embedded-core-sqsh-img'


    DEBUG: Python function emit_pkgdata finished
    DEBUG: Python function do_package finished
    ERROR: Function failed: emit_pkgdata][/code]


    Regards, pcd.

    • Offizieller Beitrag

    The good news: "make image" succeeds for dm500hd and dm800se now.


    The bad news: Because of the increased image size, only tarballs get created. No NFI images. Sorry about that, but that was somehow expected. Patches to create a stripped down image for these two boxes may be accepted, but only if they aren't too intrusive.

  • I did cclean and bitbake of qt4-embedded - still got the same error.


    Will the image build if I start from the beginning ?


    Do I need to change something in build conf ?

  • Please run

    Code
    make update


    Thanks. I have now the image as :-


    dreambox-image-deb-dm500hd.tar.xz
    size 46.5mb full size 196mb.


    (1) Is it possible to boot ? If so - how ?
    (2) What full size will make a bootable .nfi image ?


    .nfo details :-


    Code
    Date: 2014-10-14 18:11:53.045746
    Distro: opendreambox 2.2.0
    Drivers: 3.2-dm500hd-20140616-r0.0
    Enigma2: 3.999git20140624-r0.0
    Kernel: kernel-image-3.2-dm500hd 3.2-r0.1
    MD5: 0511f1fef4dc660a8f993a3a89df9593
    Machine: Dreambox DM500HD
    SHA256: 3d7b8ba2d839c0021103da8ed059e3bf538822b23f5e304bdb7db937c5e67be8


    Regards, pcd.

  • It is NOT very likely to squeeze any OE 2.2 image into 64MB Flash at all, that's why no nfi is built anymore (obi didn't like my buildimage -w patch which would be now very helpfull but would give false expectations)


    I would recommend to put the kernel on FAT and boot the root filesystem from USB or SATA stick.


    Or keep only kernel in Flash and use the root= kernel comnand line in autoexec*.bat to mount the rest from USB/SATA

    2 Mal editiert, zuletzt von Lost in Translation ()

  • It' like fit a big fat boy 110kg into a "smart car" 2 seats, guess how the car feels :face_with_tongue: :face_with_tongue:
    So, bye bye dm800 because the kernel, bye bye dm500hd and dm800se because the new image size. Guess what, a new "era" is coming, let's get use to it. Time to change !!

    • Offizieller Beitrag

    Well, you could mount the rootfs remotely from an NFS-server, though I have to admit that this isn't very appealing to most people.


    FWIW, you could, try to remove some packages, e.g. the browser+hbbtv plug-in and its dependencies, samba etc. This requires modification of the build metadata and there's no guarantee that the resulting image would be both small enough and useful at the same time.


    If you put

    Code
    INHERIT += "buildhistory"
    BUILDHISTORY_COMMIT = "1"

    into conf/local-ext.conf, then each invocation of make image will create a file called build/dm500hd/buildhistory/images/dm500hd/eglibc/dreambox-image-deb/installed-package-sizes.txt. In there, you can see how much uncompressed space each package consumes. Keep in mind, that due to the compression used by jffs2, removing 1 megabyte of text usually won't save as much as 1 megabyte of binary data.

  • That was my question - how many megabytes need to be removed before a .nfi will be built ?


    If sufficient items are removed - will the .nfi build automatically from the make image command ?

    • Offizieller Beitrag

    It's not predictable how much you need to remove, because it depends on the compression ratio. The (jffs2-)compressed root filesystem must not exceed 62914560 bytes. It won't get built automatically. You'll have to revert two patches, i.e. run the following commands:


    Code
    git revert 48d1875c54077b084b45f3c2128d453f82a9672e
    git revert 07c6daf96da415d0641193a8ffdc543d491bfc26
  • Well, you could mount the rootfs remotely from an NFS-server, though I have to admit that this isn't very appealing to most people.

    I would like to try this - using a pc as nfs mount. Can someone please explain what exactly I have to do with the tar.xz file to boot from the pc. Or please give me a link to where this method is discussed (I can use google translate if necessary).


    I will be very grateful as I want to see what the image is like - but do not want to kill my dm500hd in the process !


    Regards.

  • On the new OE 2.2 dm7080 box look into the CFE bios Menu - the first alternative is showing the NFS mount the devs are using.


    But for changing you will need MiniUSB amd Serial terminal emulation to enter it after turning on box with pressed up botton.


    Look at the screenshots ...


    On the old boxes you find the boot alternatives in the secondstage loader ... change accordingly and create a proper kernel command line out of it for your NFS export from PC.


    But to be honest the idea to use NFS is sh* for normal users :face_with_rolling_eyes:


    The old Boxes with 64MB Flash have atually a BIGGER Flash then the 7080 which only has 16MB (the rest is eMMC for the root filesystem)


    So in my opinion you should only use /boot Partition from this Flash as the dm7080 does (and even make it bigger to get a bigger kernel working) and then boot rootfs from ext4 as the dm7080 does.


    The only thing you then need is a tiny initramfs who mounts this root no matter if it is SATA or USB stick.


    Then even flashing and recovery partiitions the OE 2.2 way would be possible (you could even fake /dev/mmcblk0 ..)


    But you need 'somebody' who knows how to build an initramfs into the kernel of the old boxes ... and make it boot stable ...

    • Offizieller Beitrag

    I would like to try this - using a pc as nfs mount. Can someone please explain what exactly I have to do with the tar.xz file to boot from the pc. Or please give me a link to where this method is discussed (I can use google translate if necessary).

    Search google for dreambox "ip=dhcp" "root=/dev/nfs".


    A Howto in German: http://dream.reichholf.net/wiki/Howto:Netzwerkboot


    Edit: To extract, run "tar -xf dreambox-image-deb-dm500hd.tar.xz" as root from your exported directory.


    Edit 2: You don't need to use tftp to load a kernel. You can reuse the existing kernel of an OE 2.0 image. Just change the kernel command line appropriately.

  • It's not predictable how much you need to remove, because it depends on the compression ratio. The (jffs2-)compressed root filesystem must not exceed 62914560 bytes. It won't get built automatically. You'll have to revert two patches, i.e. run the following commands:


    Code
    git revert 48d1875c54077b084b45f3c2128d453f82a9672e
    git revert 07c6daf96da415d0641193a8ffdc543d491bfc26

    Thanks. After doing the two reverts - I removed some items and the dm500hd .nfi image built :-


    The end of the log.do_rootfs :-


    Code
    Partition #0: 143136 of 210371 bytes (/home/pcd/dm500hd/opendreambox/build/dm500hd/tmp-eglibc/sysroots/dm500hd/usr/share/dreambox-secondstage/secondstage.bin)
    Partition #1: 3266360 of 3843687 bytes (/home/pcd/dm500hd/opendreambox/build/dm500hd/tmp-eglibc/deploy/images/dm500hd/dreambox-image-deb-dm500hd-20141024075542.boot.jffs2)
    Partition #2: 60121480 of 62236263 bytes (/home/pcd/dm500hd/opendreambox/build/dm500hd/tmp-eglibc/deploy/images/dm500hd/dreambox-image-deb-dm500hd-20141024075542.rootfs.jffs2)
    DEBUG: Shell function do_rootfs finished
    DEBUG: Executing python function dreambox_image_nfo
    DEBUG: Python function dreambox_image_nfo finished


    The image dreambox-image-deb-dm500hd-20141024075542.nfi was 65.5 mb.


    The image flashed to 100% via webinterface. On reboot - the boot picture showed - but after a while the screen went black and the blinking red light showed. I have then reflashed the oe 2.0 image - working ok.


    The items I deleted are shown in these two diffs :-




    Can someone please see which removed item is stopping the bootup ?
    Are there any other items that I can safely remove ?
    Also - how can I remove most of the /usr/share/enigma2/po files (total size now 6.5mb) ?
    If I can just connect by ftp - I can put softlinks to pc for any needed items.


    I will be grateful for any advice.


    Regards, pcd.

  • Is not a problem due to your modifications: if you compile a CVS image for 800sev2 or 7020hdv2(without any modificaton) don't boot. I have an open post on 800se section of the board. My test say that oe2.2 is booting only in 7080 platform.

    • Offizieller Beitrag

    Can someone please see which removed item is stopping the bootup ?

    You need to create a boot log. Try running

    Code
    dmesg >dmesg.log
    journalctl >journal.log


    and attach the files here.

    how can I remove most of the /usr/share/enigma2/po files (total size now 6.5mb) ?

    You can create enigma2_<version>.bbappend in your layer with code similar to this:

    Code
    do_install_append() {
    	for lang in foo bar; do
        	rm -f ${D}${datadir}/enigma2/po/$lang.po
    	done
    }


    See the docs of opendreambox (doc/opendreambox.txt) and the Yocto Project Reference Manual for further details.