Discussion:
Creating a core-image-minimal image with package support
Bryan Evenson
2013-06-17 16:49:35 UTC
Permalink
All,

I am working with the core-image-minimal image from poky/danny as a starting point, but would like to include packaging support. I have tried creating a separate recipe called core-image-opkg.bb which, from what I read in the mega-manual, should include all the parts I need for opkg support. Here is a copy of the image recipe so far:

DESCRIPTION = "A small image just capable of allowing a device to boot, with opkg support."

IMAGE_INSTALL = "packagegroup-core-boot ${ROOTFS_PKGMANAGE_BOOTSTRAP} ${CORE_IMAGE_EXTRA_INSTALL} opkg opkg-collateral"

IMAGE_FEATURES += "package-management"

IMAGE_LINGUAS = " "

LICENSE = "MIT"

inherit core-image

IMAGE_ROOTFS_SIZE = "8192"

The above recipe yields an image that is includes the opkg executable, but opkg support is incomplete. Namely, calling opkg yields the error " * opkg_conf_load: Could not create lock file /var/lib/opkg/lock: No such file or directory." I can see that the folder /var/lib/opkg was not created on my filesystem. If I create this directory and then call "opkg list-installed", I get an empty list back.

What more do I need to add to the image recipe so that the image knows what packages were installed on it? And what do I need to add so that the /var/lib/opkg directory is created?

Thanks,
Bryan
Trevor Woerner
2013-08-01 17:41:17 UTC
Permalink
Post by Bryan Evenson
The above recipe yields an image that is includes the opkg executable, but opkg support is incomplete. Namely, calling opkg yields the error " * opkg_conf_load: Could not create lock file /var/lib/opkg/lock: No such file or directory." I can see that the folder /var/lib/opkg was not created on my filesystem. If I create this directory and then call "opkg list-installed", I get an empty list back.
What more do I need to add to the image recipe so that the image knows what packages were installed on it? And what do I need to add so that the /var/lib/opkg directory is created?
If I follow the instructions in Yocto's quick-start-guide and perform
a simple build of core-image-minimal using today's master and make
almost no changes to the configuration (other than to switch to ipk),
the resulting image:
- will not contain the opkg tools
- will have an empty /var/lib/opkg directory (this directory exists,
but is empty)

Build Configuration:
BB_VERSION = "1.19.1"
BUILD_SYS = "x86_64-linux"
NATIVELSBSTRING = "openSUSE-project-12.3"
TARGET_SYS = "arm-poky-linux-gnueabi"
MACHINE = "qemuarm"
DISTRO = "poky"
DISTRO_VERSION = "1.4+snapshot-20130801"
TUNE_FEATURES = "armv5 thumb dsp"
TARGET_FPU = "soft"
meta
meta-yocto
meta-yocto-bsp = "master:9de0ad47462c13ac4a2d73e12e92be6c1b4e0415"

If I then modify the configuration to add "package-management" to the
EXTRA_IMAGE_FEATURES variable and rebuild, the resulting image:
- will have the opkg tools
- will have a non-empty /var/lib/opkg directory
- I can issue a command such as "$ opkg list" and get:
***@qemuarm:~# opkg list
base-files - 3.0.14-r73
base-passwd - 3.5.26-r2
busybox - 1.21.1-r0
busybox-hwclock - 1.21.1-r0
busybox-syslog - 1.21.1-r0
busybox-udhcpc - 1.21.1-r0
init-ifupdown - 1.0-r3
initscripts - 1.0-r141
libblkid1 - 2.23.1-r0
libc6 - 2.18-r0
libcrypto1.0.0 - 1.0.1e-r15.0
libkmod2 - 9+git0+62081c0f68-r0.0
libopkg1 - 1:0.1.8+svnr649-r13.0
libuuid1 - 2.23.1-r0
libwrap0 - 7.6-r10
libz1 - 1.2.8-r0
modutils-initscripts - 1.0-r6
netbase - 1:5.1-r0
openssh - 6.2p2-r0
openssh-keygen - 6.2p2-r0
openssh-scp - 6.2p2-r0
openssh-ssh - 6.2p2-r0
openssh-sshd - 6.2p2-r0
opkg - 1:0.1.8+svnr649-r13.0
opkg-collateral - 1.0-r2
opkg-config-base - 1.0-r1
packagegroup-core-boot - 1.0-r11
packagegroup-core-ssh-openssh - 1.0-r1
poky-feed-config-opkg - 1.0-r2
run-postinsts - 1.0-r9
shadow - 4.1.4.3-r13
shadow-securetty - 4.1.4.3-r2
sysvinit - 2.88dsf-r11
sysvinit-inittab - 2.88dsf-r9
sysvinit-pidof - 2.88dsf-r11
udev - 182-r7
udev-cache - 182-r7
udev-utils - 182-r7
update-alternatives-cworth - 1:0.1.8+svnr649-r13.0
update-rc.d - 0.7-r5


When I perform these same steps using dylan, it does not work

Build Configuration:
BB_VERSION = "1.18.0"
BUILD_SYS = "x86_64-linux"
NATIVELSBSTRING = "openSUSE-project-12.3"
TARGET_SYS = "arm-poky-linux-gnueabi"
MACHINE = "qemuarm"
DISTRO = "poky"
DISTRO_VERSION = "1.4.1"
TUNE_FEATURES = "armv5 thumb dsp"
TARGET_FPU = "soft"
meta
meta-yocto
meta-yocto-bsp = "dylan:899e5cca99ec952ff72c81b74a731150841122f4"

Without "package-management" in the configuration opkg is not
installed in the image (as expected). However, with
"package-management" in the configuration the opkg tools are installed
in the image, but /var/lib/opkg is still empty and the "$ opkg list"
command returns empty.
Bryan Evenson
2013-08-01 18:51:27 UTC
Permalink
-----Original Message-----
Sent: Thursday, August 01, 2013 1:41 PM
To: Bryan Evenson
Subject: Re: [yocto] Creating a core-image-minimal image with package
support
Post by Bryan Evenson
The above recipe yields an image that is includes the opkg
executable, but opkg support is incomplete. Namely, calling opkg
yields the error " * opkg_conf_load: Could not create lock file
/var/lib/opkg/lock: No such file or directory." I can see that the
folder /var/lib/opkg was not created on my filesystem. If I create
this directory and then call "opkg list-installed", I get an empty list
back.
Post by Bryan Evenson
What more do I need to add to the image recipe so that the image
knows what packages were installed on it? And what do I need to add so
that the /var/lib/opkg directory is created?
If I follow the instructions in Yocto's quick-start-guide and perform a
simple build of core-image-minimal using today's master and make almost
no changes to the configuration (other than to switch to ipk), the
- will not contain the opkg tools
- will have an empty /var/lib/opkg directory (this directory exists,
but is empty)
BB_VERSION = "1.19.1"
BUILD_SYS = "x86_64-linux"
NATIVELSBSTRING = "openSUSE-project-12.3"
TARGET_SYS = "arm-poky-linux-gnueabi"
MACHINE = "qemuarm"
DISTRO = "poky"
DISTRO_VERSION = "1.4+snapshot-20130801"
TUNE_FEATURES = "armv5 thumb dsp"
TARGET_FPU = "soft"
meta
meta-yocto
meta-yocto-bsp = "master:9de0ad47462c13ac4a2d73e12e92be6c1b4e0415"
If I then modify the configuration to add "package-management" to the
- will have the opkg tools
- will have a non-empty /var/lib/opkg directory
base-files - 3.0.14-r73
base-passwd - 3.5.26-r2
busybox - 1.21.1-r0
busybox-hwclock - 1.21.1-r0
busybox-syslog - 1.21.1-r0
busybox-udhcpc - 1.21.1-r0
init-ifupdown - 1.0-r3
initscripts - 1.0-r141
libblkid1 - 2.23.1-r0
libc6 - 2.18-r0
libcrypto1.0.0 - 1.0.1e-r15.0
libkmod2 - 9+git0+62081c0f68-r0.0
libopkg1 - 1:0.1.8+svnr649-r13.0
libuuid1 - 2.23.1-r0
libwrap0 - 7.6-r10
libz1 - 1.2.8-r0
modutils-initscripts - 1.0-r6
netbase - 1:5.1-r0
openssh - 6.2p2-r0
openssh-keygen - 6.2p2-r0
openssh-scp - 6.2p2-r0
openssh-ssh - 6.2p2-r0
openssh-sshd - 6.2p2-r0
opkg - 1:0.1.8+svnr649-r13.0
opkg-collateral - 1.0-r2
opkg-config-base - 1.0-r1
packagegroup-core-boot - 1.0-r11
packagegroup-core-ssh-openssh - 1.0-r1
poky-feed-config-opkg - 1.0-r2
run-postinsts - 1.0-r9
shadow - 4.1.4.3-r13
shadow-securetty - 4.1.4.3-r2
sysvinit - 2.88dsf-r11
sysvinit-inittab - 2.88dsf-r9
sysvinit-pidof - 2.88dsf-r11
udev - 182-r7
udev-cache - 182-r7
udev-utils - 182-r7
update-alternatives-cworth - 1:0.1.8+svnr649-r13.0 update-rc.d - 0.7-r5
When I perform these same steps using dylan, it does not work
BB_VERSION = "1.18.0"
BUILD_SYS = "x86_64-linux"
NATIVELSBSTRING = "openSUSE-project-12.3"
TARGET_SYS = "arm-poky-linux-gnueabi"
MACHINE = "qemuarm"
DISTRO = "poky"
DISTRO_VERSION = "1.4.1"
TUNE_FEATURES = "armv5 thumb dsp"
TARGET_FPU = "soft"
meta
meta-yocto
meta-yocto-bsp = "dylan:899e5cca99ec952ff72c81b74a731150841122f4"
Without "package-management" in the configuration opkg is not installed
in the image (as expected). However, with "package-management" in the
configuration the opkg tools are installed in the image, but
/var/lib/opkg is still empty and the "$ opkg list"
command returns empty.
I'm also working off of poky/dylan. I added "opkg opkg-collateral" to the IMAGE_INSTALL variable, in addition to having the "package-management" feature in IMAGE_FEATURES. With that setup, my image contains opkg and has the list of packages installed.

Regards,
Bryan
Paul Eggleton
2013-08-02 16:29:27 UTC
Permalink
Post by Bryan Evenson
Post by Bryan Evenson
What more do I need to add to the image recipe so that the image
knows what packages were installed on it? And what do I need to add so
that the /var/lib/opkg directory is created?
Without "package-management" in the configuration opkg is not installed
in the image (as expected). However, with "package-management" in the
configuration the opkg tools are installed in the image, but
/var/lib/opkg is still empty and the "$ opkg list"
command returns empty.
I'm also working off of poky/dylan. I added "opkg opkg-collateral" to the
IMAGE_INSTALL variable, in addition to having the "package-management"
feature in IMAGE_FEATURES. With that setup, my image contains opkg and has
the list of packages installed.
Er, I'm a bit confused. Weren't you already doing this in your original
example? Is this a case where it fails in danny but not in dylan?

Cheers,
Paul
--
Paul Eggleton
Intel Open Source Technology Centre
Bryan Evenson
2013-08-02 17:57:40 UTC
Permalink
Paul,
-----Original Message-----
Sent: Friday, August 02, 2013 12:29 PM
To: Bryan Evenson
Subject: Re: [yocto] Creating a core-image-minimal image with package
support
Post by Bryan Evenson
Post by Trevor Woerner
Post by Bryan Evenson
What more do I need to add to the image recipe so that the image
knows what packages were installed on it? And what do I need to
add so that the /var/lib/opkg directory is created?
Without "package-management" in the configuration opkg is not
installed in the image (as expected). However, with
"package-management" in the configuration the opkg tools are
installed in the image, but /var/lib/opkg is still empty and the "$
opkg list"
Post by Bryan Evenson
Post by Trevor Woerner
command returns empty.
I'm also working off of poky/dylan. I added "opkg opkg-collateral"
to
Post by Bryan Evenson
the IMAGE_INSTALL variable, in addition to having the "package-
management"
Post by Bryan Evenson
feature in IMAGE_FEATURES. With that setup, my image contains opkg
and has the list of packages installed.
Er, I'm a bit confused. Weren't you already doing this in your original
example? Is this a case where it fails in danny but not in dylan?
Huh, I hadn't looked at the original message I'd sent months ago. That does look to be the same recipe I'm using today. I'll take a look back through my local commit log and see if I can find something else that I changed with my setup. But, the state recipe definitely is providing opkg support with my current build environment setup with poky/dylan-9.0.1.

Regards,
Bryan
Cheers,
Paul
--
Paul Eggleton
Intel Open Source Technology Centre
Loading...