All of lore.kernel.org
 help / color / mirror / Atom feed
* udev problems on angstrom-2008.1
@ 2009-09-28 14:52 Vasily Khoruzhick
  2009-09-29  3:01 ` Denys Dmytriyenko
  2009-09-29  9:09 ` Phil Blundell
  0 siblings, 2 replies; 6+ messages in thread
From: Vasily Khoruzhick @ 2009-09-28 14:52 UTC (permalink / raw)
  To: openembedded-devel


[-- Attachment #1.1: Type: Text/Plain, Size: 722 bytes --]

Hi, I'm experiencing problems with image for rx1950 PDA (s3c2442-based PDA 
with 32M of RAM) built by openembedded.
For some reason, udev doesn't work, and complains about lack of free space on 
/dev (which is tmpfs) like this:

udevd-event[1918]: mknod(/dev/vcS, 020660, (7,0) failed: No space left on 
device.

I'm using oe buildsystem from git, last git commit is:
commit 9c38c208143bda93bb3362de4d4c2a00b4c8c8ea
Merge: cdc32dd e5d715b
Author: Graeme Gregory <dp@xora.org.uk>
Date:   Mon Sep 28 10:10:46 2009 +0100

    Merge branch 'org.openembedded.dev' of 
git+ssh://git@git.openembedded.org/openembedded into org.openembedded.dev

local.conf is in attachment. Any suggestions?

Regards,
Vasily

[-- Attachment #1.2: local.conf --]
[-- Type: text/plain, Size: 7552 bytes --]

#
# OpenEmbedded local configuration file (sample)
#
# Please visit the Wiki at http://openembedded.org/ for more info.
#
#
# Be SURE to read this file in its entirety and the GettingStarted page on the
# wiki before proceeding.
#
# Once you have done that, remove the line at the end of this
# file and build away.
# 
# WARNING: lines starting with a space (' ') will result in parse failures.
# Remove '# ' from commented lines to activate them.
#
# NOTE: Do NOT use $HOME in your paths, BitBake does NOT expand ~ for you.  If you
# must have paths relative to your homedir use ${HOME} (note the {}'s there
# you MUST have them for the variable expansion to be done by BitBake).  Your
# paths should all be absolute paths (They should all start with a / after
# expansion.  Stuff like starting with ${HOME} or ${TOPDIR} is ok).

# Use this to specify where BitBake should place the downloaded sources into
DL_DIR = "/home/distfiles"

# Delete the line below. Then specify which .bb files to consider for
# your build. Typically this will be something like BBFILES = "/path/to/openembedded/packages/*/*.bb"
BBFILES := "/home/anarsoul/work/openembedded/openembedded/recipes/*/*.bb"

# Use the BBMASK below to instruct BitBake to _NOT_ consider some .bb files
# This is a regulary expression, so be sure to get your parenthesis balanced.
BBMASK = ""

# Uncomment this if you want to use a prebuilt toolchain. You will need to
# provide packages for toolchain and additional libraries yourself. You also
# have to set PATH in your environment to make sure BitBake finds additional binaries.
# ASSUME_PROVIDED += "virtual/${TARGET_PREFIX}gcc virtual/libc"

# Uncomment this if you're building for an arch that uses emulated locale 
# generation under qemu (mainly arm glibc) and have an external gcc 3.x compiler
# that OE recognises. This will mean the gcc-native build is skipped, speeding 
# builds up.
# ASSUME_PROVIDED += "gcc3-native"

# Uncomment this if you are building Linux 2.4 Embedix kernels.
# i.e. openzaurus-sa-2.4.18 and openzaurus-pxa-2.4.18 - and don't forget
# to rename the binaries as instructed in the Wiki.
# Most users do not need this anymore thankfully!
# ASSUME_PROVIDED += "virtual/arm-linux-gcc-2.95"

# Select between multiple alternative providers, if more than one is eligible.
PREFERRED_PROVIDERS = "virtual/qte:qte virtual/libqpe:libqpe-opie"
PREFERRED_PROVIDERS += " virtual/libsdl:libsdl-x11"
PREFERRED_PROVIDERS += " virtual/${TARGET_PREFIX}gcc-initial:gcc-cross-initial"
PREFERRED_PROVIDERS += " virtual/${TARGET_PREFIX}gcc-intermediate:gcc-cross-intermediate"
PREFERRED_PROVIDERS += " virtual/${TARGET_PREFIX}gcc:gcc-cross"
PREFERRED_PROVIDERS += " virtual/${TARGET_PREFIX}g++:gcc-cross"

# Uncomment this to specify where BitBake should create its temporary files.
# Note that a full build of everything in OpenEmbedded will take GigaBytes of hard
# disk space, so make sure to free enough space. The default TMPDIR is
# <build directory>/tmp
# Don't use symlinks in in the path to avoid problems
# TMPDIR = /usr/local/projects/oetmp

# Uncomment this to specify a machine to build for. See the conf directory
# for machines currently known to OpenEmbedded. This will automatically take care
# of TARGET_ARCH
MACHINE = "rx1950"

# Use this to specify the target architecture. Note that this is only
# needed when building for a machine not known to OpenEmbedded. Better use
# the MACHINE attribute (see above)
# TARGET_ARCH = "arm"

# Use this to specify the target operating system.  The default is "linux",
# for a normal linux system with glibc. Set this to "linux-uclibc" if you want
# to build a uclibc based system.
# Normally the DISTRO of your choosing will take care of this 
# TARGET_OS = "linux"
# TARGET_OS = "linux-uclibc"

# Uncomment this to select a distribution policy. See the conf directory
# for distributions currently known to OpenEmbedded.
# Although it no longer contain version number in the (file-)name
# openzaurus-unstable is a so called "versioned"  distro, i.e. they 
# explicitely select specific versions of various packages.
# Stay away from unversioned distros unless you really know what you are doing
DISTRO = "angstrom-2008.1"

# So far, angstrom.conf sets ENABLE_BINARY_LOCALE_GENERATION
# to generate binary locale packages at build time using qemu-native and
# thereby guarantee i18n support on all devices. If your build breaks on 
# qemu-native consider disabling ENABLE_BINARY_LOCALE_GENERATION (note that
# this breaks i18n on devices with less than 128MB RAM) or installing
# a working third-party qemu (e.g. provided by your distribution) and
# adding qemu-native to ASSUME_PROVIDED. Caveat emptor, since third-party
# qemus lack patches needed to work with various OE targets.
# ENABLE_BINARY_LOCALE_GENERATION = "0"
# ASSUME_PROVIDED += "qemu-native"

# If ENABLE_BINARY_LOCALE_GENERATION is set to "1", you can limit locales
# generated to the list provided by GLIBC_GENERATE_LOCALES. This is huge
# time-savior for developmental builds. Format: list of locale.encoding pairs
# with spaces as separators.
GLIBC_GENERATE_LOCALES = "en_US.UTF-8 ru_RU.UTF-8"

# Uncomment this to select a particular major kernel version if the MACHINE setting
# supports more than one major kernel version. Currently this is suported by the
# following MACHINE types: poodle, tosa and simpad.
# MACHINE_KERNEL_VERSION = "2.6"

# Uncomment one of these to build packages during the build process.
# This is done automatically if you set DISTRO (see above)
# INHERIT = "package_ipk"
# INHERIT = "package_tar"
INHERIT += "rm_work"

# Add the required image file system types below. Valid are 
# jffs2, tar(.gz|bz2), cpio(.gz), cramfs, ext2(.gz), ext3(.gz)
# squashfs, squashfs-lzma
IMAGE_FSTYPES = "jffs2 tar"

# Uncomment this to disable the parse cache (not recommended).
# CACHE = ""

# Uncomment this if you want BitBake to emit debugging output
# BBDEBUG = "yes"

# Uncomment these two if you want BitBake to build images useful for debugging. 
# Note that INHIBIT_PACKAGE_STRIP needs a package format to be defined.
# Also note that OE now produces -dbg packages which contain debugging symbols.
# DEBUG_BUILD = "1"
# INHIBIT_PACKAGE_STRIP = "1"

# Uncomment these to build a package such that you can use gprof to profile it.
# NOTE: This will only work with 'linux' targets, not
# 'linux-uclibc', as uClibc doesn't provide the necessary
# object files.  Also, don't build glibc itself with these
# flags, or it'll fail to build.
#
# PROFILE_OPTIMIZATION = "-pg"
# SELECTED_OPTIMIZATION = "${PROFILE_OPTIMIZATION}"
# LDFLAGS =+ "-pg"

# Uncomment this to enable parallel make.
# This allows make to spawn mutliple processes to take advantage of multiple 
# processors. Useful on SMP machines. This may break some packages - we're
# in the process of marking these so let us know if you find any.
PARALLEL_MAKE = "-j4"

# Uncomment this if you want BitBake to emit the log if a build fails.
BBINCLUDELOGS = "yes"

# Specifies a location to search for pre-generated tarballs when fetching
# a cvs:// URI. Outcomment this, if you always want to pull directly from CVS.
#CVS_TARBALL_STASH = ""

# Uncomment this if you want to install shared libraries directly under their SONAME,
# rather than installing as the full version and symlinking to the SONAME.
# PACKAGE_SNAP_LIB_SYMLINKS = "1"
MACHINE_EXTRA_RDEPENDS = "tslib"

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 205 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: udev problems on angstrom-2008.1
  2009-09-28 14:52 udev problems on angstrom-2008.1 Vasily Khoruzhick
@ 2009-09-29  3:01 ` Denys Dmytriyenko
  2009-09-29  6:11   ` Vasily Khoruzhick
  2009-09-29  9:09 ` Phil Blundell
  1 sibling, 1 reply; 6+ messages in thread
From: Denys Dmytriyenko @ 2009-09-29  3:01 UTC (permalink / raw)
  To: openembedded-devel

On Mon, Sep 28, 2009 at 05:52:05PM +0300, Vasily Khoruzhick wrote:
> Hi, I'm experiencing problems with image for rx1950 PDA (s3c2442-based PDA 
> with 32M of RAM) built by openembedded.
> For some reason, udev doesn't work, and complains about lack of free space on 
> /dev (which is tmpfs) like this:
> 
> udevd-event[1918]: mknod(/dev/vcS, 020660, (7,0) failed: No space left on 
> device.

Been there, done that.
Short answer - you have too many requested devnodes for udev to handle within 
32MB of RAM. If you absolutely need all the devices enabled in the kernel 
(try disabling/reducing LEGACY_PTY), consider replacing udev with mdev (or 
static devnodes). Or try moving udev's database from tmpfs into another 
partition, maybe on flash.

Long answer - udev besides creating the actual devnodes also keeps its 
database in the same tmpfs filesystem. It consists of an internal directory 
structure with symlinks (a la sysfs) and is stored in /dev/.udev
Keeping all that in tmpfs is not efficient, as it wastes inodes and apparently 
inodes in tmpfs/ramfs are the size of a memory page (4KB). By default tmpfs is 
limited to half the RAM, which in your case is 16MB. That would allow roughly 
4000 inodes. You definitely need more, because of the above messages. Even if 
you fit all of them, using half of your available RAM just for udev is a total 
waste. So, consider suggestions above.

-- 
Denys



^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: udev problems on angstrom-2008.1
  2009-09-29  3:01 ` Denys Dmytriyenko
@ 2009-09-29  6:11   ` Vasily Khoruzhick
  0 siblings, 0 replies; 6+ messages in thread
From: Vasily Khoruzhick @ 2009-09-29  6:11 UTC (permalink / raw)
  To: openembedded-devel

[-- Attachment #1: Type: Text/Plain, Size: 1303 bytes --]

В сообщении от 29 сентября 2009 06:01:52 автор Denys Dmytriyenko написал:

> Been there, done that.
> Short answer - you have too many requested devnodes for udev to handle
>  within 32MB of RAM. If you absolutely need all the devices enabled in the
>  kernel (try disabling/reducing LEGACY_PTY), consider replacing udev with
>  mdev (or static devnodes). Or try moving udev's database from tmpfs into
>  another partition, maybe on flash.
> 
> Long answer - udev besides creating the actual devnodes also keeps its
> database in the same tmpfs filesystem. It consists of an internal directory
> structure with symlinks (a la sysfs) and is stored in /dev/.udev
> Keeping all that in tmpfs is not efficient, as it wastes inodes and
>  apparently inodes in tmpfs/ramfs are the size of a memory page (4KB). By
>  default tmpfs is limited to half the RAM, which in your case is 16MB. That
>  would allow roughly 4000 inodes. You definitely need more, because of the
>  above messages. Even if you fit all of them, using half of your available
>  RAM just for udev is a total waste. So, consider suggestions above.

Oh, older versions of udev used to work here... I didn't expect it to take so 
much RAM :)

Anyway, thanks for help.

Regards
Vasily 

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 205 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: udev problems on angstrom-2008.1
  2009-09-28 14:52 udev problems on angstrom-2008.1 Vasily Khoruzhick
  2009-09-29  3:01 ` Denys Dmytriyenko
@ 2009-09-29  9:09 ` Phil Blundell
  2009-09-29 18:10   ` Denys Dmytriyenko
  1 sibling, 1 reply; 6+ messages in thread
From: Phil Blundell @ 2009-09-29  9:09 UTC (permalink / raw)
  To: openembedded-devel

On Mon, 2009-09-28 at 17:52 +0300, Vasily Khoruzhick wrote:
> udevd-event[1918]: mknod(/dev/vcS, 020660, (7,0) failed: No space left on 
> device

You probably need to increase the inode allocation for tmpfs.  See the
mount(8) manpage where it talks about the nr_inodes option.

p.





^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: udev problems on angstrom-2008.1
  2009-09-29  9:09 ` Phil Blundell
@ 2009-09-29 18:10   ` Denys Dmytriyenko
  2009-09-29 18:37     ` Vasily Khoruzhick
  0 siblings, 1 reply; 6+ messages in thread
From: Denys Dmytriyenko @ 2009-09-29 18:10 UTC (permalink / raw)
  To: openembedded-devel

On Tue, Sep 29, 2009 at 10:09:00AM +0100, Phil Blundell wrote:
> On Mon, 2009-09-28 at 17:52 +0300, Vasily Khoruzhick wrote:
> > udevd-event[1918]: mknod(/dev/vcS, 020660, (7,0) failed: No space left on 
> > device
> 
> You probably need to increase the inode allocation for tmpfs.  See the
> mount(8) manpage where it talks about the nr_inodes option.

From the tmpfs documentation it kind of implies inodes take half the RAM 
pages:

nr_inodes: The maximum number of inodes for this instance. The default
           is half of the number of your physical RAM pages, or (on a
           machine with highmem) the number of lowmem RAM pages,
           whichever is the lower.

Now while reading it again, I think I may have misread it previously...
Looks like half the RAM pages is used as a default number of inodes, but 
inodes don't consume that much. It's good to know udev is not a pig... :)

-- 
Denys



^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: udev problems on angstrom-2008.1
  2009-09-29 18:10   ` Denys Dmytriyenko
@ 2009-09-29 18:37     ` Vasily Khoruzhick
  0 siblings, 0 replies; 6+ messages in thread
From: Vasily Khoruzhick @ 2009-09-29 18:37 UTC (permalink / raw)
  To: openembedded-devel

[-- Attachment #1: Type: Text/Plain, Size: 798 bytes --]

В сообщении от 29 сентября 2009 21:10:02 автор Denys Dmytriyenko написал:
 
> From the tmpfs documentation it kind of implies inodes take half the RAM
> pages:
> 
> nr_inodes: The maximum number of inodes for this instance. The default
>            is half of the number of your physical RAM pages, or (on a
>            machine with highmem) the number of lowmem RAM pages,
>            whichever is the lower.
> 
> Now while reading it again, I think I may have misread it previously...
> Looks like half the RAM pages is used as a default number of inodes, but
> inodes don't consume that much. It's good to know udev is not a pig... :)

Anyway, your suggestion works, I've disabled LEGACY_PTY and now system boots. 
Thanks ;)

Regards
Vasily 

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 205 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2009-09-29 18:38 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-09-28 14:52 udev problems on angstrom-2008.1 Vasily Khoruzhick
2009-09-29  3:01 ` Denys Dmytriyenko
2009-09-29  6:11   ` Vasily Khoruzhick
2009-09-29  9:09 ` Phil Blundell
2009-09-29 18:10   ` Denys Dmytriyenko
2009-09-29 18:37     ` Vasily Khoruzhick

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.