View previous topic :: View next topic |
Author |
Message |
xcable Guru
Joined: 15 Aug 2002 Posts: 424 Location: College Station, Texas
|
Posted: Sun Sep 14, 2003 5:10 pm Post subject: Installing Gentoo Linux on A DiskOnChip/Compact Flash |
|
|
Embedded Gentoo on a DiskOnChip / Compact Flash
I have created a script to install a Gentoo based Linux system onto a DiskOnChip or Compact Flash. This system now boots using only the DiskOnChip . There are still problems ("Could not get dependency info for "xxxxxx"", during boot, and "7G [ ok ]g xxxx" during init). To create the /dev directory I took a stage1 /dev and bz2 and tar'ed it.
Hope this helps others with embedded setups using a DiskOnChips or a Compact Flashe. Also looking for help in makeing this more refined and fixing the bugs.
Heath H Holcomb
xcable_hhh@yahoo.com
Kernel Configuration for DiskOnChip Access
I use the DiskOnChip 2000
cd /usr/src
make menuconfig
1 - Enable "Memory Technology Device (MTD) support"
2 - Enbale "MTD partitionion suport"
3 - Enbale "Direct char device access to MTD devices"
4 - Enbale "Readonly block device access to MTD devices"
5 - Enbale "FTL (Flash Translation Layer) support"
6 - Enbale "NFTL (NAND Flash Translation Layer) support"
7 - Enbale "Write support for NFTL (BETA)"
Enter the "Self-contained MTD device drivers"
8 - Enable "M-Systems Disk-On-Chip 2000 and Millennium"
exit and save
make dep && make clean bzImage modules modules_install
mount your boot directory
cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.4.xxxx
modify /boot/grub/grub.conf or /etc/lilo
if using lilo run /sbin/lilo
reboot
looking at .config
Code: |
#
# Memory Technology Devices (MTD)
#
CONFIG_MTD=y
CONFIG_MTD_PARTITION=y
CONFIG_MTD_CHAR=y
CONFIG_MTD_BLOCK_RO=y
CONFIG_FTL=y
CONFIG_NFTL=y
CONFIG_NFTL_RW=y
|
Fstab
Here is my fstab for the DiskOnChip :
Code: |
/dev/nftl/disc0/part1 / ext3 defaults 0 0
none /proc proc defaults 0 0
none /dev/shm tmpfs defaults 0 0
|
Lilo
I use grub for my hard drive based system, so that I will not mistakenly use the /etc/lilo.conf for the harddive (only the DiskOnChip).
Here is my /etc/lilo.conf for the DiskOnChip :
Code: |
boot = /dev/nftl/disc0/part1
map =/mnt/diskonchip/boot/System.map
prompt
timeout = 5
default = linux
image = /mnt/diskonchip/boot/vmlinuz-2.4.20-ck6-h3.1
label = linux
read-only
root = /dev/nftl/disc0/part1
vga = 791
image = /mnt/diskonchip/boot/vmlinuz-2.4.20-ck6-h3.1
label = linux-init
read-only
root = /dev/nftl/disc0/part1
vga = 791
append = "init=/bin/bash"
|
I know this looks weird, but after weeks of tyring different settings these are the ones that work.
Requirements
- Working Gentoo system on a hard drive (using the target single board computer with a DiskOnChip or Compact Flash socket).
- Kernel configured for DiskOnChip read and write access (tested on 2.4.20 but anything later should work) - only needed for DiskOnChip setups
- A x86 stage1 /dev directory tar'ed in the same directory as this script.
- Modified fstab in the same directory as this script (will post mine soon).
Updates and Changes from Original Post
Update 9.19.2003 - I have decreased the size of the build from 30 MB to 16 MB. The change affects the /usr/lib section (see below).
Update 9.21.2003 - Added Lilo, Fstab, and Kernel Configuration for DiskOnChip Access.
9.24.2003 - Added Compact Flash section, and notes (no code yet, maybe iin a few days or next week). Fixed my e-mail address.
Compact Flash Script
Coming soon
DiskOnChip Script
Code: |
#!/bin/bash
# This script creates a linux system on the mounted DiskOnChip
# Heath H Holcomb
# xcable_hhh@yahoo.com
# This script is GPL'ed, please send any changes to my e-mail address (see above)..
# This script assumes that you have a full Gentoo Linux development system on the
# SBC (single board comptuer, which has a DiskOnChip socket) running off a hard drive.
# That you have already configured the kernel to work with the DiskOnChip, you have
# partition the DiskOnChip, you have formated the DiskOnChip with a linux fileing
# system (I used ext3), you have the /dev directory tar'ed and the tar file located
# in the same directory as this script.
# This is still a work in progress. That are several problem with the DiskOnChip
# Linux system. But the system does boot and seems to run ok. There is still a
# problem with the init process about dependencies.
#------------------------------------------------------------------------------start
echo Create-linux-system.sh
# define DiskOnChip location, where the DiskOnChip is mounted
target=/mnt/diskonchip
echo Moving to the DiskOnChip
cd $target
echo Removing previous build
rm -R *
#------------------------------------------------------------------------------fileing system
echo Creating main filesystem
mkdir {bin,boot,etc,home,lib,mnt,opt,proc,root,sbin,share,tmp,usr,var}
mkdir -p {var/log,var/run,usr/bin,usr/sbin,var/lib/init.d/softscripts}
mkdir -p {var/log/everything,var/log/kernel,var/log/cups,var/log/samga}
mkdir -p {usr/lib/gcc-lib/i586-pc-linux-gnu/3.2.2}
mkdir -p {usr/X11R6/lib,usr/share}
touch var/run/utmp
#------------------------------------------------------------------------------/boot
echo Populating /boot
cp -ap /boot/vmlinuz* $target/boot
#------------------------------------------------------------------------------/dev
# /mnt/cerebro-data is a mounted directory where the script and
# tar'ed /dev file (cread-dev.tar.bz2) live, this is specific to my setup.
# Change what you need to accomodate you system
echo Populating /dev
cp /mnt/cerebro-data/create-dev.tar.bz2 $target
tar -xvjpf create-dev.tar.bz2
rm create-dev.tar.bz2
#------------------------------------------------------------------------------/root
# Probably not needed, I leave in commented out.
#echo Populating /root
#cp -apR /root $target/root
#------------------------------------------------------------------------------/home
echo Populating /home
cp -apR /home $target/home
#------------------------------------------------------------------------------/etc
# Theses are configuration files that I think I need, some I may not.
echo Poplulating /etc
cp -apR /etc/conf.d $target/etc
cp -apR /etc/devfs.d $target/etc
cp -apR /etc/env.d $target/etc
cp -apR /etc/init.d $target/etc
cp -apR /etc/metalog $target/etc
cp -apR /etc/modules.d $target/etc
cp -apR /etc/opt $target/etc
cp -apR /etc/rsync $target/etc
cp -apR /etc/runlevels $target/etc
cp -apR /etc/skel $target/etc
cp -apR /etc/fonts $target/etc
cp -apR /etc/pam.d $target/etc
cp -apR /etc/X11 $target/etc
cp -apR /etc/security $target/etc
cp -apR /etc/localtime $target/etc
cp -ap /etc/adjtime $target/etc
cp -ap /etc/csh.env $target/etc
cp -ap /etc/devfsd.conf $target/etc
cp -ap /etc/DIR_COLORS $target/etc
cp -ap /etc/dispatch-conf.conf $target/etc
cp -ap /etc/etc-update.conf $target/etc
cp -ap /etc/filesystems $target/etc
cp -ap /mnt/cerebro-data/fstab $target/etc
cp -ap /etc/gentoo-release $target/etc
cp -ap /etc/group $target/etc
cp -ap /etc/hosts $target/etc
cp -ap /etc/hostname $target/etc
cp -ap /etc/inittab $target/etc
cp -ap /etc/inputrc $target/etc
cp -ap /etc/ld.so.cache $target/etc
cp -ap /etc/ld.so.conf $target/etc
cp -ap /etc/login.defs $target/etc
cp -ap /etc/lilo.conf $target/etc
cp -ap /etc/modules.autoload $target/etc
cp -ap /etc/modules.conf $target/etc
cp -ap /etc/modules.devfs $target/etc
cp -ap /etc/mtab $target/etc
cp -ap /etc/networks $target/etc
cp -ap /etc/nsswitch.conf $target/etc
cp -ap /etc/passwd $target/etc
cp -ap /etc/profile $target/etc
cp -ap /etc/profile.env $target/etc
cp -ap /etc/protocols $target/etc
cp -ap /etc/resolv.conf $target/etc
cp -ap /etc/rc.conf $target/etc
cp -ap /etc/rmt $target/etc
cp -ap /etc/rpc $target/etc
cp -ap /etc/services $target/etc
cp -ap /etc/securetty $target/etc
cp -ap /etc/shadow $target/etc
cp -ap /etc/shells $target/etc
cp -ap /etc/sysctl.conf $target/etc
cp -ap /etc/shells $target/etc
#------------------------------------------------------------------------------/bin
echo Populating /bin
cp -ap /bin/awk $target/bin
cp -ap /bin/gawk* $target/bin
cp -ap /bin/bash $target/bin
cp -ap /bin/cp $target/bin
cp -ap /bin/cut $target/bin
cp -ap /bin/env $target/bin
cp -ap /bin/kill $target/bin
cp -ap /bin/killall $target/bin
cp -ap /bin/login $target/bin
cp -ap /bin/ls $target/bin
cp -ap /bin/rm $target/bin
cp -ap /bin/rmdir $target/bin
cp -ap /bin/touch $target/bin
cp -ap /bin/tty $target/bin
cp -ap /bin/echo $target/bin
cp -ap /bin/mount $target/bin
cp -ap /bin/mkdir $target/bin
cp -ap /bin/dd $target/bin
cp -ap /bin/umount $target/bin
cp -ap /bin/uname $target/bin
cp -ap /bin/chmod $target/bin
cp -ap /bin/cat $target/bin
cp -ap /bin/dmesg $target/bin
cp -ap /bin/install $target/bin
cp -ap /bin/ln $target/bin
cp -ap /bin/ps $target/bin
cp -ap /bin/grep $target/bin
cp -ap /bin/domainname $target/bin
cp -ap /bin/hostname $target/bin
cp -ap /bin/mv $target/bin
cp -ap /bin/sed $target/bin
#cp -ap /bin/sync $target/bin
cp -ap /bin/sleep $target/bin
cp -ap /bin/sort $target/bin
cp -ap /bin/stat $target/bin
cp -ap /bin/basename $target/bin
cp -ap /bin/whoami $target/bin
cp -ap /bin/gunzip $target/bin
cp -ap /bin/gzcat $target/bin
cp -ap /bin/gzip $target/bin
#------------------------------------------------------------------------------/sbin
echo Populating /sbin
cp -ap /sbin/agetty $target/sbin
cp -ap /sbin/consoletype $target/sbin
cp -ap /sbin/dhcpcd $target/sbin
cp -ap /sbin/depmod $target/sbin
cp -ap /sbin/devfsd $target/sbin
cp -ap /sbin/env-update.sh $target/sbin
cp -ap /sbin/halt $target/sbin
cp -ap /sbin/ifconfig $target/sbin
cp -ap /sbin/init $target/sbin
cp -ap /sbin/ldconfig $target/sbin
cp -ap /sbin/lilo $target/sbin
cp -ap /sbin/sulogin $target/sbin
cp -ap /sbin/shutdown $target/sbin
cp -ap /sbin/fsck $target/sbin
cp -ap /sbin/e2fsck $target/sbin
cp -ap /sbin/fsck.ext2 $target/sbin
cp -ap /sbin/fsck.ext3 $target/sbin
cp -ap /sbin/fsck.reiserfs $target/sbin
cp -ap /sbin/reiserfsck $target/sbin
cp -ap /sbin/reboot $target/sbin
cp -ap /sbin/runscript $target/sbin
cp -ap /sbin/runlevel $target/sbin
cp -ap /sbin/modprobe $target/sbin
cp -ap /sbin/modules-update $target/sbin
cp -ap /sbin/start-stop-daemon $target/sbin
cp -ap /sbin/depscan.sh $target/sbin
cp -ap /sbin/functions.sh $target/sbin
cp -ap /sbin/runscript.sh $target/sbin
cp -ap /sbin/rc $target/sbin
cp -ap /sbin/rc-update $target/sbin
cp -ap /sbin/update-modules $target/sbin
#------------------------------------------------------------------------------/lib
# I determined which library files I need using the "ldd" command.
# This should copy the source library file and it's links.
echo Populating /lib
cp -apRd /lib/dev-state $target/lib
cp -apR /lib/rcscripts/awk $target/lib
cp -apR /lib/rcscripts/sh $target/lib
cp -apR /lib/evms $target/lib
cp -apR /lib/modules $target/lib
cp -apR /lib/rcscripts $target/lib
cp -apR /lib/security $target/lib
cp -ap /lib/libdl* $target/lib
cp -ap /lib/libc* $target/lib
cp -ap /lib/libpthread* $target/lib
cp -ap /lib/ld* $target/lib
cp -ap /lib/libcrypt* $target/lib
cp -ap /lib/libpam* $target/lib
cp -ap /lib/libpam_misc* $target/lib
cp -ap /lib/librt* $target/lib
cp -ap /lib/libm* $target/lib
cp -ap /lib/libnss* $target/lib
cp -ap /lib/libnsl* $target/lib
cp -ap /lib/libblkid* $target/lib
cp -ap /lib/libuuid* $target/lib
cp -ap /lib/libutil* $target/lib
cp -ap /lib/libproc* $target/lib
cp -ap /lib/libext2fs* $target/lib
cp -ap /lib/libcom_err* $target/lib
cp -ap /lib/libblkid* $target/lib
cp -ap /lib/libcrypt* $target/lib
#------------------------------------------------------------------------------/usr
echo Populating /usr
cp -apR /usr/lib/awk $target/usr/lib
cp -apR /usr/lib/portage/bin $target/usr/lib/bin
cp -apR /usr/share/awk $target/usr/share
cp -ap /usr/bin/awk $target/usr/bin
cp -ap /usr/bin/chmod $target/usr/bin
cp -ap /usr/bin/dd $target/usr/bin
cp -ap /usr/bin/echo $target/usr/bin
cp -ap /usr/bin/gawk $target/usr/bin
cp -ap /usr/bin/fbi $target/usr/bin
cp -ap /usr/bin/hostname $target/usr/bin
cp -ap /usr/bin/mkdir $target/usr/bin
cp -ap /usr/bin/uname $target/usr/bin
cp -ap /usr/bin/install $target/usr/bin
cp -ap /usr/bin/ln $target/usr/bin
cp -ap /usr/bin/ld $target/usr/bin
cp -ap /usr/bin/ldd $target/usr/bin
cp -ap /usr/bin/users $target/usr/bin
cp -ap /usr/bin/whoami $target/usr/bin
cp -ap /usr/bin/rm $target/usr/bin
cp -ap /usr/sbin/etc-update $target/usr/sbin
cp -ap /usr/sbin/env-update $target/usr/sbin
cp -ap /usr/sbin/metalog $target/usr/sbin
cp -ap /usr/sbin/useradd $target/usr/sbin
cp -ap /usr/sbin/pam_tally $target/usr/sbin
cp -ap /usr/sbin/pam_console_apply $target/usr/sbin
cp -ap /usr/sbin/pam_timestamp_check $target/usr/sbin
cp -ap /usr/bin/basename $target/usr/bin
cp -ap /usr/bin/setfont $target/usr/bin
cp -apR /usr/lib/portage $target/usr/lib
cp -ap /usr/bin/python* $target/usr/bin
#------------------------------------------------------------------------------/usr/lib
#Change 9.19.2003 : added ".so" before the "*", with out this
#the script copys some extra tared files in the /usr/lib directory
cp -ap /usr/lib/libpcre.so* $target/usr/lib
cp -ap /usr/lib/libglib.so* $target/usr/lib
cp -ap /usr/lib/libcrack.so* $target/usr/lib
cp -ap /usr/lib/libtiff.so* $target/usr/lib
cp -ap /usr/lib/libpng.so* $target/usr/lib
cp -ap /usr/lib/libungif.so* $target/usr/lib
cp -ap /usr/lib/libjpeg.so* $target/usr/lib
cp -ap /usr/lib/libm.so* $target/usr/lib
cp -ap /usr/lib/libc.so* $target/usr/lib
cp -ap /usr/lib/libz.so* $target/usr/lib
cp -ap /usr/lib/libX11.so* $target/usr/lib
cp -ap /usr/share/consolefonts $target/usr/share
#cp -apR /usr/lib/gcc-lib/i586-pc-linux-gnu/3.2.2/libstdc++* $target/
#------------------------------------------------------------------------------/var
echo Populating /var
cp -apR /var/lib/init.d $target/var
cp -apR /var/log $target/var
cp -apR /var/lib/init.d/softscripts $target/var/lib/init.d/softscripts
cp -apR /var/lib/init.d/started $target/var/lib/init.d/softscripts
#------------------------------------------------------------------------------ldconfig
echo Running ldconfig
ldconfig -r $target
#------------------------------------------------------------------------------lilo
# lilo is used because grub does not seem to work with DiskOnChips
# This uses the /etc/lilo.conf file for configuration, change this if you
# need to.
echo Running lilo
lilo -b /dev/nftl/disc0/disc
#------------------------------------------------------------------------------exit
echo Finished
exit 0
|
Last edited by xcable on Wed Sep 24, 2003 5:26 pm; edited 12 times in total |
|
Back to top |
|
|
pjp Administrator
Joined: 16 Apr 2002 Posts: 20067
|
Posted: Sun Sep 14, 2003 7:57 pm Post subject: |
|
|
Moved from Installing Gentoo. _________________ Quis separabit? Quo animo? |
|
Back to top |
|
|
ZerBit n00b
Joined: 11 Sep 2003 Posts: 8
|
Posted: Thu Sep 18, 2003 7:09 am Post subject: questions |
|
|
Hi,
What is the size of your DiskOnChip?
What is the size of your Gentoo installation?
Why do you have lilo and no grub?
What is the size of X?
Have you stripped the libs?
It´s a good job, perhaps it has a lot of dependence with your gentoo install.
Regards. |
|
Back to top |
|
|
xcable Guru
Joined: 15 Aug 2002 Posts: 424 Location: College Station, Texas
|
Posted: Thu Sep 18, 2003 1:49 pm Post subject: answer to questions |
|
|
Qucik answers:
1 - 32 MB
2 - around 20 MB
3 - no grub
4 - no X
5 - no
More detail:
I am going to try several things to get the size of the install down (hopefully below 10 MB). I'm going to try BusyBox, library striping, compling with -02, using diet libc, removing unused binaries, simplying the init process, etc.. Gurb does not seam to work with DiskOnChips. I did research on the web, and everyone that I found used lilo. I did try Grub, at first, but had problems and did not really try to solve them because I already had lilo working. I'm not using X my target application. I'm using fbi to display images directly to the framebuffer and mplayer to display movies directly to the framebuffer. I don't think X will fit onto the DiskOnChip, but I plan to try in a few weeks. I'm also looking at other small GUIs (microwindows, nano-x, pico X, etc..). I did strip some libs at first but I did not see a huge size difference, so I did not bother. I plan to strip them when I'm optimization for size in the next few weeks or months.
I'm going to post a DiskOnChip format how to in a fews. It will go over the required kernel options, cfdisk, and mke2fs for the DiskOnChip.
Still looking for any help (mostly for Gentoos init process). I'm willing go help get anyone started.
heath h holcomb |
|
Back to top |
|
|
ZerBit n00b
Joined: 11 Sep 2003 Posts: 8
|
Posted: Thu Sep 18, 2003 3:53 pm Post subject: |
|
|
I´m going to do something similar. It´s great
What is your hardware platform? (i have an EPIA M10000 Ezra)
How could i help you?
Regards |
|
Back to top |
|
|
xcable Guru
Joined: 15 Aug 2002 Posts: 424 Location: College Station, Texas
|
Posted: Thu Sep 18, 2003 4:27 pm Post subject: hardware |
|
|
Right now I using a Bossier board, but I plan on using a Lanner SBC, and a Advantach board.
Basier 4500 K6-2 400 MHz 128 MB
Lanner Geode 233 MHz 32 MB
Advantech PCM-9575 Ezra/Edian
heath holcomb |
|
Back to top |
|
|
joshmccormack n00b
Joined: 14 Mar 2003 Posts: 5
|
Posted: Fri Oct 03, 2003 4:32 pm Post subject: Re: hardware |
|
|
It's been a year since this thread quieted. Have you guys figured out a lot with Gentoo Embedded? Sounds very exciting, I'd love to know more.
Josh
xcable wrote: | Right now I using a Bossier board, but I plan on using a Lanner SBC, and a Advantach board.
Basier 4500 K6-2 400 MHz 128 MB
Lanner Geode 233 MHz 32 MB
Advantech PCM-9575 Ezra/Edian
heath holcomb |
|
|
Back to top |
|
|
xcable Guru
Joined: 15 Aug 2002 Posts: 424 Location: College Station, Texas
|
Posted: Fri Oct 03, 2003 5:39 pm Post subject: a year??? |
|
|
This how-to has only been up for a about a month.
I'm still working on it. I have not had much time in the last couple of weeks.
heath holcomb |
|
Back to top |
|
|
Sapienter n00b
Joined: 16 Jul 2003 Posts: 22 Location: Columbus, OH
|
Posted: Tue Oct 07, 2003 10:09 pm Post subject: |
|
|
Dollars to donuts he was looking at your "Joined" date. (Aug 2002) I do that a lot when I'm scanning for recent posts in a thread.
I'm trying to apply this to USB key stripped down gentoos for the servers I'm rolling out. We're using cheap hardware and have had some HD reliability issues. Since the servers are probably eventually going to perform firewall/routing/Swan functions, having a wee $20 usb key at each office to boot up off of and quickly restore web access is much better than trying to throw redundancy at all our hardware. I'll post here to let you know how it turns out. _________________ "The spirit of the law is the least of the things we are prepared to violate."
--from http://www.schlockmercenary.com/ |
|
Back to top |
|
|
lo4dro Tux's lil' helper
Joined: 10 Feb 2003 Posts: 84
|
Posted: Thu Oct 16, 2003 6:36 am Post subject: |
|
|
@cable
Hi.
Use you busy-box to make a smaller System? _________________ --
VDR der besser Reseiver |
|
Back to top |
|
|
robert0380 n00b
Joined: 14 Oct 2003 Posts: 62 Location: Atlanta, GA
|
Posted: Tue Oct 21, 2003 10:19 am Post subject: |
|
|
i have got to try this.
i have a Gateway box that came with AOL on a compact flash card.
really nice machine, small. has NIC, modem, IR Keyboard. the flash card is 32MB.
i'd like to get linux on it.
waiting on the Compact Flash script. _________________ Mars Bitches!
-Black George Bush (David Shapell) |
|
Back to top |
|
|
OdinsDream Veteran
Joined: 01 Jun 2002 Posts: 1057
|
Posted: Mon Nov 03, 2003 2:21 am Post subject: |
|
|
robert0380 wrote: | i have got to try this.
i have a Gateway box that came with AOL on a compact flash card.
really nice machine, small. has NIC, modem, IR Keyboard. the flash card is 32MB.
i'd like to get linux on it.
waiting on the Compact Flash script. |
Where did you get this system? Do you have a link to it, it sounds interesting... _________________ s/(?<!gnu\/)linux(?! kernel)/GNU\/Linux/gi
Don't blame me. I didn't vote for him.
http://john.simplykiwi.com |
|
Back to top |
|
|
robert0380 n00b
Joined: 14 Oct 2003 Posts: 62 Location: Atlanta, GA
|
Posted: Mon Nov 03, 2003 3:54 pm Post subject: |
|
|
i got it off ebay. my friend has a few of em and he managed to get win 98 on it but whre my hard drive pins would be is just solder blobs so all i have for storage is a 32MB flash memory card but i might get a bigger one.
i found a link here, apparently it's called a "Web Appliance". Notice the year on that article is back in 2000. I dont think they make em anymore but there are probably enough circulating to where you can get your hands on one.
I would love nothing more than to put linux on it but I'm not familiar with installing Linux on un-common hardware (im just used to getting onto PCs). _________________ Mars Bitches!
-Black George Bush (David Shapell) |
|
Back to top |
|
|
robert0380 n00b
Joined: 14 Oct 2003 Posts: 62 Location: Atlanta, GA
|
|
Back to top |
|
|
bus_drivr n00b
Joined: 20 Feb 2003 Posts: 48 Location: Florida
|
Posted: Sun Nov 23, 2003 4:13 pm Post subject: |
|
|
2 things to consider:
1) for gcc flags -Os is supposed to give a smaller size application after compiling.
2) -fomit-frame-pointers will also result in smaller size at the cost of debugging
there is an irc channel on irc.freenode.net #gentoo-embedded that might be helpful. Though members are often busy- be patient when waiting on replies. |
|
Back to top |
|
|
bus_drivr n00b
Joined: 20 Feb 2003 Posts: 48 Location: Florida
|
Posted: Sun Nov 23, 2003 4:29 pm Post subject: |
|
|
form the diet libc faq
Q: Compiling software with "diet -Os gcc..." gives error messages about
-malign-loops, -malign-jumps and -malign-functions being obsolete.
A: diet -Os uses some platform dependant gcc options to create tighter
code. Unfortunately, these options have been renamed on gcc 3. You
can fix this by creating a file ~/.diet/gcc containing this line:
-Os -fomit-frame-pointer -falign-functions=0 -falign-jumps=0 -falign-loops=0 -mpreferred-stack-boundary=2
If you get this options not for diet -Os gcc but for diet -Os
i386-linux-gcc, put this in ~/.diet/i386-linux-gcc instead. |
|
Back to top |
|
|
my_nick n00b
Joined: 07 Jul 2003 Posts: 28 Location: Slovenia
|
Posted: Sun Nov 23, 2003 4:47 pm Post subject: |
|
|
Could this work with an iPod?
It can be mounted with sd_mod, ieee1394, ohci1394 and sbp2 modules.
I can create partitions on it (/dev/sda3 and so on) |
|
Back to top |
|
|
xcable Guru
Joined: 15 Aug 2002 Posts: 424 Location: College Station, Texas
|
Posted: Thu Nov 27, 2003 4:37 pm Post subject: |
|
|
I have looked into useing diet libc, and have determined that the benifits would not justify the work required to get it working. My target system will have a 32 MB DiskOnChip or a >=128 MB Compact Flash.
"-Os" and "-fomit-frame-pointer" should be and wil be used.
I'm build this for a x86 embedded SBC with a DiskOnChip or Compact Flash socket, anything else I really don't care about (at least right now).
I have subscribed to the embedded.gentoo listserv, and I looks like it's going to be a while before we see a new gentoo init system. I have deceided to use busy box to replace the system apps, and mini login to handle the login process. this will greatly change my install script.
I have not had very much time to work on it (I'm a new dad), but with the holidays coming up I should have enough time to get it work by the end of the year.
heath holcomb |
|
Back to top |
|
|
smukec n00b
Joined: 06 Dec 2003 Posts: 59 Location: Slovenia
|
Posted: Thu Jan 22, 2004 10:26 am Post subject: |
|
|
I'm trying to inject life to a PC/104 system based on Advantech PCM-3550 and some additional RS232 & I/O ports.
It seems (due to documentation I found on the net) that this board needs i586 code in order to run properly. I found some minimalistic linuxes but they're having problems with the CompactFlash card (seek timeout & similar). Ohers (newer-probably i686 issue) had problems at booting time: LILO reported 'LI 04' - seems to be Sector not found.
I decided to go with gentoo (I'm, running it on my desktop & server). I emerged crosdev-0.3, but having problems(read: no knowledge) using it. I have experience in programming, I also did some cross-compiling for my palm(CygWin on Wins), but totally lacking of such experience under linux.
Can you help? |
|
Back to top |
|
|
xcable Guru
Joined: 15 Aug 2002 Posts: 424 Location: College Station, Texas
|
Posted: Thu Jan 22, 2004 2:33 pm Post subject: pc104 |
|
|
How can I help and why are you using crossdev?
On my installs I put a hard drive on my target SBC (single board computer) and put gentoo on the hard drive. This takes a while (a long while, use distcc if you can) but you get full access to your target hardware, you can compile the programs with custom gcc settings to optimize speed and/or size, and you make sure that the hardware is fully supported under Linux.
Looks like the PCM-3550 is a Geode based SBC. No problem on that hardware because I run gentoo on a Geode based SBC, and yes your c/c++ flags need to be set to i586. The Geode is basicaly a 586 grade processor with 3dnow (I think or is it mmx, just do a proc /cat/cpuinfo from the live cd to double check) support.
After you have you hard drive system fully up then you can put in a compact flash and mount it (just like a hard drive). Lilo and grub should have no problem with the compact flash. Just remember that a compact flash is a flash based memory storage device with a limited number of write cycles per each cell (around a 100,000).
heath holcomb |
|
Back to top |
|
|
smukec n00b
Joined: 06 Dec 2003 Posts: 59 Location: Slovenia
|
Posted: Thu Jan 22, 2004 3:04 pm Post subject: Re: pc104 |
|
|
xcable wrote: | How can I help and why are you using crossdev? |
a) I intended help on crossdev.
b) I use crossdev because I tought this is the 'right' way
Quote: | On my installs I put a hard drive on my target SBC ... |
To be honest I haven't tought about that. However I have a smaller IDE (E-IDE) connector for disks. How can I connect a normal HD - is it just narrower or it has less pins?
Anyway, if you install everything on the HD, how you install the CF then? Do you use your script and just copy what you need? Or you mount only some (huge) directories on the HD?
Goran |
|
Back to top |
|
|
xcable Guru
Joined: 15 Aug 2002 Posts: 424 Location: College Station, Texas
|
Posted: Thu Jan 22, 2004 4:32 pm Post subject: ide cable |
|
|
Ya, that IDE header is most likely 2mm pin spaccing and 5" harddrive is .1" pin spacing. Those kinds of cables are quite comming when deal with SBCs (from OEMs), but may be hard to come by for some out the embedded profession. I easy work around is to use a laptop harddirve, there spacing 2mm; but you would still need a 2mm IDE cable. Try DigiKey, Mouser, Frys, maybe Radio Shack for 2mm to .1" IDE cables and/or 2mm to 2mm IDE cables.
Sorry don't know anything about crossdev.
For installing on a CF, for now you just have to copy over specific files (config, libraries, executables, etc...) and make all the directories (including the proc directory and the devices - not easy to do manualy that's why I use gentoos stage1 proc directory). That's what the script does. I'm looking into doing something more professional in the near future, using Busybox and Minilogin; it is if Gentoo does not beat me to the puch (see http://www.gentoo.org/proj/en/base/embedded/)
heath |
|
Back to top |
|
|
drdabbles n00b
Joined: 08 May 2003 Posts: 31 Location: NH, USA
|
Posted: Thu Jan 22, 2004 8:05 pm Post subject: |
|
|
Hey all,
Just tossing a suggestion into the mix, here, but I thought it would be helpful. Anyway, I have been building a custom-rolled distro for quite some time now. It's been used in security systems, etc. and has performed very well. The problem is maintaining everything. Keeping kernel patches, programs, makefiles, etc. all updated is a real pain. a REAL pain.
So to cut to the chase, I'd suggest dropping dietlibc and going with uClibc. It's supported on more architectures, contains more "standard" system functions, results in a slimmed-down set of binaries, and in general has a VERY active and open development community. Of course, I am biased, but I figured I'd let you all try it and decide on your own.
http://www.uclibc.org/ _________________ Your Lord and Master,
Foamy
P.S. My minions are strong and will destroy you
Debate, but don't flame |
|
Back to top |
|
|
drdabbles n00b
Joined: 08 May 2003 Posts: 31 Location: NH, USA
|
Posted: Thu Jan 22, 2004 9:00 pm Post subject: |
|
|
Another quick note. Instead of running `lilo -b /dev/nftl/disc0/disc`, the line should be changed to `lilo -r $target`. This will make lilo run with the "target" as the "root". This means you don't have to change YOUR lilo.conf. Just another thought. _________________ Your Lord and Master,
Foamy
P.S. My minions are strong and will destroy you
Debate, but don't flame |
|
Back to top |
|
|
Mimamau Apprentice
Joined: 11 Jun 2002 Posts: 160 Location: Germany
|
Posted: Sun Feb 29, 2004 12:56 pm Post subject: |
|
|
I've also running a small embedded system on compact flash (atm it's debian). Because of the limited write cycles I have a fat16 fs on my card and booting is done with syslinux. It first boots into a small initrd. There's a script which fills a ramdisk from an image located on my fat16 fs, this is done with dd. Then the new ramdisk is used as rootfs. So my card has to be mounted only read-only.
Sometimes I get seek timeout & similar errors while booting and I have to press the reset button. Also when the system is up I sometimes get hda: lost interrupt. Any workaround for this? |
|
Back to top |
|
|
|