Gentoo Logo
Gentoo Spaceship




Note: Due to technical difficulties, the Archives are currently not up to date. GMANE provides an alternative service for most mailing lists.
c.f. bug 424647
List Archive: gentoo-embedded
Navigation:
Lists: gentoo-embedded: < Prev By Thread Next > < Prev By Date Next >
Headers:
To: <gentoo-embedded@g.o>
From: "Marcel Romijn" <MRomijn@...>
Subject: RE: x86 SBC Gentoo Embedded HotTo version 0.07
Date: Thu, 18 Aug 2005 02:26:15 -0400
Hi,

I use an IDE extender for CF. The CF is seen as /dev/had and my machine
boots nicely from it.

So apparantly no need to change the DMA.

Marcel 

-----Original Message-----
From: S. ancelot [mailto:sancelot@...] 
Sent: Tuesday, 16 August, 2005 11:30
To: gentoo-embedded@g.o
Subject: Re: [gentoo-embedded] x86 SBC Gentoo Embedded HotTo version
0.07

One thing more :
In order to boot some compact flash, you may have to solve issues with 
DMA (disable in kernel).

Best Regards
Steph

Marcel Romijn wrote:

>Hi Heath,
>
>I know about the limited number of write cycles on CF. Therefore I want
>the CF only to supply the kernel and the ramdisk image. My intention is
>to run Linux and my application completely from ramdisk.
>I want my device to be complately silent, therefore it has a fanless
>ME6000 board, no fans in the case and no harddisk (actually strange to
>'hear' a computer boot in complete silence!). The CF is on an IDE
>converter and is recognized as /dev/hda1 (although for testing it has a
>normal harddisk connected).
>
>I was able to follow your howto to the end.
>Although I had some problems where the boot process stopped after
>"Freeing unused kernel memory". This turned out to be a typo in
>/etc/fstab on my side.
>
>Now that I have bootable configuration, I can look into what it takes
to
>have the system files in a ramdisk image and have it mounted as '/'.
>
>I think I could just create an initrd from the whole system and have
>grub and the kernel extract it in memory and mount it.
>I have not done much investigation on it, be it seems to me that the
>/linuxrc in the initrd can be fairly simple. Actually just calling the
>/sbin/init once the ramdisk is mountded as '/'.
>
>Anyone any experience with this?
>
>PS. Maybe we should spawn of another thread about VIA Epia boards, CF
>and booting. I saw Pierre Cassimans is interested in this subject as
>well.
>This might go off topic for the Gentoo Embedded Howto.
>
>Marcel
>
>-----Original Message-----
>From: Heath Holcomb [mailto:liquidcable@...] 
>Sent: Sunday, 14 August, 2005 0:53
>To: gentoo-embedded@g.o
>Subject: Re: [gentoo-embedded] x86 SBC Gentoo Embedded HotTo version
>0.07
>
>On Friday 12 August 2005 01:39 am, Marcel Romijn wrote:
>  
>
>>Hello Heath,
>>
>>Nice writedown! I haven't made it to the end yet (lack of time), but
>>    
>>
>I'm
>  
>
>>getting there...
>>
>>I noticed some issues along the way (not counting grub begin spelled
>>    
>>
>as
>  
>
>>"grug" or "gurb" ;-) )
>>
>>In step 3 you write:
>>
>><snip>
>># Set root password for the embedded_rootfs
>>chromm /embedded_rootfs
>>passwd
>>rm /embedded_rootfs/etc/passwd-
>>Exit
>></snip>
>>
>>I presume 'chromm' should have been 'chroot' ?
>>If it is indeed 'chroot' then you should either do "rm /etc/passwd-"
>>before the "exit" or the "exit" before the "rm
>>/embedded_rootfs/etc/passwd-".
>>    
>>
>
>Yes, "chromm" should be "chroot".  The order is correct, as far as I
can
>tell.
>chroot /embedded_rootfs
>passwd
>rm /embedded_rootfs/etc/passwd-
>exit
>
>
>  
>
>>A few lines down, you write:
>>
>><snip>
>>rm -R /embedded_rootfs/var/db/pkg/ *
>></snip>
>>
>>As a reletive newbie, doing a quick copy/paste of this command late in
>>the evening as root in '/', this wiped out all files, except the ones
>>that were firmly locked.
>>Fortunately, I'm going through you HowTo in VMWare, so I could restore
>>    
>>
>a
>  
>
>>previous snapshot ;-)
>>
>>I presume the space before the '*' should have been omitted?
>>
>><snip>
>>rm -R /embedded_rootfs/var/db/pkg/*
>></snip>
>>    
>>
>
>Major typo on my part.  Fixed in version 0.08.
>
>  
>
>>My aim is to create an embedded Gentoo for a Via Epia ME6000, which
>>reads the kernel and a ramdisk image from CF and then runs completely
>>from RAM.
>>If I'm not mistaken, you were heading for a Via Epia as well?
>>    
>>
>
>My target will be a Via based SBC.  From what I have read using a
>ramdisk on a 
>x86 based platform really does not buy you much.  But you sure don't
>want to 
>write to the CF all that often (limited write cycles, usallay 100,000
to
>
>300,000).  So I plan on mounting the / partition of the CF as read only
>and 
>creating a separate partition that is mounted read/write and have my
>embedded 
>application and only my application write to that partition.
>
>  
>
>>Regards,
>>
>>Marcel Romijn
>>
>>
>>-----Original Message-----
>>From: Heath Holcomb [mailto:liquidcable@...]
>>Sent: Monday, 08 August, 2005 4:17
>>To: gentoo-embedded@g.o
>>Subject: [gentoo-embedded] x86 SBC Gentoo Embedded HotTo version 0.07
>>
>>Version 0.07
>>Please add, delete, modify. Thanks!
>>
>>Several fixes.  Root password now works.  Several work arounds are no
>>longer
>>need, as the embedded Gentoo team has fixed them (I'm guess because I
>>    
>>
>no
>  
>
>>longer get those errors).  There is still one problem when "emerge -e
>>system"
>>for groff.  Bug 98187 (http://bugs.gentoo.org/show_bug.cgi?id=98187).
>>Check
>>out the bug report for the temp fix/work around (USE="-sandbox" emerge
>>-e
>>system).
>>
>>I've update my website with this version also.
>>http://www.bulah.com/embeddedgentoo.html
>>
>>
>>
>>    
>>
>#----------------------------------------------------------------------
-
>  
>
>>---------
>># Embedded Gentoo How-To for x86
>>#
>># A how-to guide to setup a Gentoo embedded environment, you must be
>>root.
>># These commands are to be run on your development system,
>># any x86 Gentoo Linux computer will do.  The system should be fast,
>># to speed development.  The target can be any x86 based SBC.  I'm
>># using a Geode based SBC.  Latter I'll use a Via based SBC.
>>#
>># version 0.07
>># 2005.8.7
>>#
>># Heath Holcomb (heath at bulah.com)
>># Ned Ludd (original commands posted)
>># Lloyd Sargent (contributor)
>># Yuri Vasilevski (contributor)
>># Mike George (contributor)
>># Kammi Cazze (contributor)
>># Marius Schaefer (contributor)
>>#
>># Definitions and Terms
>># system_rootfs = your regular rootfs, development computer
>># development_rootfs = what you use to build the embedded_rootfs
>># embedded_rootfs = rootfs you deploy to the target system
>># SBC = single board computer (here it's an x86 based)
>>#
>># References
>># http://www.gentoo.org/doc/en/handbook/index.xml
>># http://www.epiawiki.org
>># http://epia.kalf.org
>># Gentoo embedded mailing list (gentoo-embedded@g.o)
>>#
>>#
>># Overview of process (steps)
>># 1 - Prepare the development_rootfs from your system_rootfs
>># 2 - Build the development_rootfs
>># 3 - Build the embedded_rootfs
>># 4 - Build and install non-system programs to the embedded_rootfs
>># 5 - Build and install a kernel to the embedded_rootfs
>># 6 - Deploy embedded_rootfs to target
>>#
>>
>>    
>>
>#----------------------------------------------------------------------
-
>  
>
>>---------
>>
>>#----- Step 1 - Prepare the development_rootfs from your system_rootfs
>>-------
>>
>># You must be root.
>>su -
>>
>># Create the development_rootfs.
>># I use i586 because of target is a Geode processor.
>>mkdir -p /opt/i586-gentoo-uclibc-linux/usr/portage
>>
>># Download the latest stage 1 tarball.
>>wget \
>>
>>    
>>
>http://gentoo.osuosl.org/experimental/x86/embedded/stages/stage1-x86-uc
l
>  
>
>>ibc-2005.0.tar.bz2
>>
>># Untar the stage to the development_rootfs.
>>tar -xvjpf stage1-x86-uclibc-2005.0.tar.bz2 -C
>>/opt/i586-gentoo-uclibc-linux/
>>
>># Mount the proc and portage directories to your development_rootfs.
>># Makes your system_rootfs's proc and portage directory available from
>>inside
>># of your development_rootfs (after chrooting).
>>mount --bind /proc /opt/i586-gentoo-uclibc-linux/proc/
>>mount --bind /usr/portage /opt/i586-gentoo-uclibc-linux/usr/portage
>>
>># Copy over DNS information to the development_rootfs.
>>cp /etc/resolv.conf /opt/i586-gentoo-uclibc-linux/etc/resolv.conf
>>
>># Chroot into the development_rootfs.
>>chroot /opt/i586-gentoo-uclibc-linux /bin/bash --login
>>
>>
>>#----- Step 2 - Build the development_rootfs
>>---------------------------------
>>
>># Create new environment and load variables into memory.
>>env-update
>>source /etc/profile
>>
>># Modify make.conf file to your liking/needs.
>>nano -w /etc/make.conf
>># This is for my target, Geode x86 processor.
>>/*
>>USE="bitmap-fonts minimal truetype-fonts mmx"
>>CHOST="i586-gentoo-linux-uclibc"
>>CFLAGS="-march=i586 -Os -pipe -fomit-frame-pointer -mmmx"
>>CXXFLAGS="${CFLAGS}"
>>FEATURES="buildpkg"
>>
>>VIDEO_CARDS="chips"
>>UCLIBC_CPU="586MMX"
>>*/
>>
>># Set profile to use 2.6 kernel.
>># The current stage uses 2.4 by default, and for most cases you are
>>going
>># to want a 2.6.x kernel.
>>cd /etc/
>>unlink make.profile
>>ln -s ../usr/portage/profiles/uclibc/x86 make.profile
>>
>># Start the bootstrap script.
>>cd /usr/portage/scripts
>>./bootstrap.sh -p -v
>>./bootstrap.sh
>>
>># Emerge the system ebuild for the development_rootfs.
>>emerge -e system
>>
>>#----- Step 3 - Build the embedded_rootfs
>>------------------------------------
>>
>># Create the embedded_rootfs directory.
>>mkdir /embedded_rootfs
>>
>># Emerge baselayout-lite into embedded_rootfs.
>># This gives your system a basic file structure.
>># 1.0_pre1 is the only one that is stable, right?
>>cd /usr/portage/sys-apps/baselayout-lite/
>>ROOT=/embedded_rootfs emerge baselayout-lite-1.0_pre1.ebuild
>>
>># Workaround 1
>># Baselayout-lite is still beta, so a few fixes are needed.
>># There needs to be a directory "log" in /var.
>># Inittab calls for /usr/bin/tail, but it needs to /usr/bin.
>>mkdir /embedded_rootfs/var/log
>>nano -w /embedded_rootfs/etc/inittab
>>/*
>>#tty3::respawn:/usr/bin/tail -f /var/log/messages
>>tty3::respawn:/bin/tail -f /var/log/messages
>>*/
>>
>># Emerge uclibc into the embedded_rootfs.
>># Use the -K option because we don't get the extra files created by
>>    
>>
>the
>  
>
>># build/emerge process into our embedded rootfs which needs to be as
>># small as possible.
>>ROOT=/embedded_rootfs emerge -K uclibc
>>
>># Emerge busybox into the embedded_rootfs.
>># First you must emerge it into your development_rootfs.
>># This does not create the symlinks in our development embedded
>>    
>>
>rootfs.
>  
>
>>emerge busybox
>>ROOT=/embedded_rootfs emerge -K busybox
>>
>># Create the symlinks for busybox in the embedded_rootfs.
>>mkdir /embedded_rootfs/proc
>>mount -o bind /proc/ /embedded_rootfs/proc/
>>chroot /embedded_rootfs /bin/busybox --install -s
>>umount /embedded_rootfs/proc
>>
>># Set time zone in your embedded_rootfs.
>># See http://leaf.sourceforge.net/doc/guide/buci-tz.html for details.
>># For central standard time in the US, use "CST6CDT".
>>nano -w /embedded_rootfs/etc/TZ
>>/*
>>CST6CDT
>>*/
>>
>># Install a boot loader (usually grug or lilo).
>># Once you copy/deploy your embedded_rootfs to your target SBC you
>>    
>>
>will
>  
>
>># have to run grub on the command line to write to the master boot
>>record
>># (MBR).
>># For some reason not all of /boot/grub is copied over to the
>># embedded_rootfs, so a extra manual copy step is needed.
>># The --nodeps gets rip of the run time need of ncurses.
>>emerge --nodeps grub
>>ROOT=/embedded_rootfs emerge -K --nodeps grub
>>cp -R /boot/grub /embedded_rootfs/boot/
>>
>># Modify your boot configure file.
>># The example below is for a gurb, for a boot partition on /dev/hda1
>>    
>>
>and
>  
>
>>only
>># one partition on the target SBC system.
>>nano -w /embedded_rootfs/boot/grub/grub.conf
>>/*
>>default 0
>>timeout 10
>>splashimage=(hd0,0)/boot/grub/splash.xpm.gz
>>
>>title=Linux 2.6.x
>>root (hd0,0)
>>kernel /vmlinuz-2.6.x root=/dev/hda1 vga=792
>>*/
>>
>># Set root password for the embedded_rootfs
>>chromm /embedded_rootfs
>>passwd
>>rm /embedded_rootfs/etc/passwd-
>>exit
>>
>># Modify fstab.
>># Below is mine, yours may vary.
>>nano -w /embedded_rootfs/etc/fstab
>>/*
>>/dev/hda1		/		reiserfs	defaults
>>0 0
>>none			/proc		proc		defaults
>>0 0
>>none			/sys		sysfs		defaults
>>0 0
>>none			/dev/shm	tmpfs	defaults	0 0
>>*/
>>
>># Clean up the embedded_rootfs.
>># Don't know why these files are there in the first place, so if
>>    
>>
>anyone
>  
>
>># can tell me why.....
>>rm -R /embedded_rootfs/var/db/pkg/ *
>>rm -R /embedded_rootfs/var/lib/portage/
>>
>>#---- Step 4 - Build and install non-system programs to the
>>embedded_rootfs --
>>
>># Emerge other software you need for you embedded target.
>># This is very wildly depending on your needs.
>># Also your proprietary application will be done here.
>>emerge foo*
>>ROOT=/embedded_rootfs emerge -K foo*
>>
>>
>>#---- Step 5 - Build and install a kernel to the embedded_rootfs
>>-------------
>>
>># Install a kernel into embedded_rootfs.
>># First we will emerge it into our development_rootfs, then configure
>>and
>># build it.
>>emerge vanilla-sources
>>cd /usr/src/
>>cd linux
>>make menuconfig
>># Configure your kernel for your TARGET SBC here.  I HIGHLY suggest
>>    
>>
>you
>  
>
>># configure the kernel to compile everything into the kernel, and
>>nothing
>># as a module.
>>make
>>ROOT=/embedded_rootfs make modules_install
>>cp /usr/src/linux/arch/i386/boot/bzImage
>>/embedded_rootfs/boot/vmlinuz-2.6.x
>>
>># A few notes on compiling your kernel.
>># If deploying to Compact Flash/DiskOnChip/SD use ext2, as the
>>journaling
>># filing systems "write" to much for a flash device.
>># If deploying to a hard drive use a journaling filing system, such as
>># ext3 or reiserfs.
>>
>>
>>#---- Step 6 - Deploy embedded_rootfs to target
>>------------------------------
>>
>># Prepare a Gentoo (or any Linux distro) system on the target SBC
>>    
>>
>using
>  
>
>>a
>># harddrive.  This is known as the target development rootfs.
>># We will create a partition (/embedded_rootfs) that will server as
>>    
>>
>our
>  
>
>># "test" partition to deploy our embedded_rootfs that we generate on
>>    
>>
>our
>  
>
>># development_system.
>>#
>># I use the following partitions to speed development (yours may
>>    
>>
>vary):
>  
>
>># /dev/hda1 - /embedded_rootfs - 1 GB
>># /dev/hda2 - /boot - 100 MB
>># /dev/hda3 - swap - (size varies, 512 MB is a good number)
>># /dev/hda4 - / - (what is left, at least 1.5 GB per 2005.0 install
>>guide
>>specs)
>>#
>># Copy over your embedded_rootfs from you development system to your
>>target
>># system and the directory /embedded_rootfs.  This needs to be done
>>    
>>
>via
>  
>
>>NFS as
>># need to preserve the permissions.
>>#
>>#The following commands are done from the
>># target development rootfs.
>>mount -t reiserfs /dev/hda1 /mnt/embedded_rootfs
>>mount -t nfs\
>>192.168.0.10:/opt/i586-gentoo-uclibc-linux/embedded_rootfs\
>>/mnt/nfs_embedded_rootfs
>>cp -adpR /mnt/nfs_embedded_rootfs/* /mnt/embedded_rootfs
>>
>>
>># Modify your target system's gurb.conf (or lilo.conf) for allow you
>>    
>>
>to
>  
>
>>boot
>># to the embedded_rootfs partition.
>>#
>># Reboot, and if all goes well you'll be greeted with a login prompt.
>>#
>># Fin.
>>
>>
>>
>>--
>>heath holcomb
>>liquidcable at bulah.com
>>www.bulah.com
>>--
>>gentoo-embedded@g.o mailing list
>>    
>>
>
>  
>
-- 
gentoo-embedded@g.o mailing list



-- 
gentoo-embedded@g.o mailing list


Navigation:
Lists: gentoo-embedded: < Prev By Thread Next > < Prev By Date Next >
Previous by thread:
RE: x86 SBC Gentoo Embedded HotTo version 0.07
Next by thread:
uclibc, quota & nfs
Previous by date:
RE: x86 SBC Gentoo Embedded HotTo version 0.07
Next by date:
RE: x86 SBC Gentoo Embedded HotTo version 0.08


Updated Jun 17, 2009

Summary: Archive of the gentoo-embedded mailing list.

Donate to support our development efforts.

Copyright 2001-2013 Gentoo Foundation, Inc. Questions, Comments? Contact us.