All of lore.kernel.org
 help / color / mirror / Atom feed
From: ralph stickley <ralph@datalux.com>
To: Adi Linden <adi@adis.on.ca>
Cc: Embedded <linux-embedded@waste.org>, MTD <mtd@imladris.mvhi.com>
Subject: Re: Anyone embedding RH 6.1 / 2.2.12 ?
Date: Wed, 15 Dec 1999 16:16:51 -0500	[thread overview]
Message-ID: <38580543.66818B2A@datalux.com> (raw)
In-Reply-To: Pine.LNX.4.10.9912151000340.6229-100000@localhost.localdomain

Ok,
Heres a shell script that should help. (Pasted it at the end of this message).

try:
./doc

to get the usage message.

./doc -E

Erases the disk on chip, well, almost.  I was using ext2 but commented that line out..
need to update for msdos filesystem.  Just mounts it for now.  How do you do this now?

./doc -f   xxx

That will copy all the packages listed in the doc.conf file (default file is built with
all
xx.tar filenames found in the ./packages directory).  Edit doc.conf to select which
packages to install.

The actual files 'untarred' are taken from the xx.list file.  Edit xx.list file to
include or
exclude specific files.

./doc -s

makes a list of the entire contents of the disk on chip - seemed like a fun thing to
do.

Other things to do from this shell script:
-- look in "updates" directory to copy new files over the un-tarred files
-- use a specific .config file to build the kernel just for the disk on chip
-- More features to come - any suggestions welcome :-)

Hope this helps.
Later,
Ralph

<more below>

Adi Linden wrote:

> Hi,
>
> > Yes, we will need to use the flash read-only.  I can make another partition (or
> > two) to use for storing user data.  If the software only writes to one partition,
> > then only that partition can be damaged during power down.   By alternating
> > partitions, only the last changes are lost. Have the application save it twice and
> > then you have it (That's my solution for the power down problem ).
>
> That's a neat idea. How do you detect error in writing? Use fsck on boot?
> So far I haven't had any user data to save. The emphasis has been on
> building an appliance type deal where you ask the user if the lights are
> on and if they're not on unplug the power to reset. However, even for
> dhcp it would be nice to save the dhcp.leases file...
>

I suppose...I thought that was automatic at power up...but then I'm still not sure
what happens at power up  ?:-o


>
> > I'd like to make a configuration utility like "make menuconfig", but since I only
> > need one configuration, that may be considered a waste of Co. time :-)  I should
> > finish my V0.0 shell script today...
>
> I created the *.list files with the idea of eventually creating a script
> that parses a file containing the *.tar files to use to build the system.
> Then it might be possible to use the *.list files to tag files that should
> be deleted from the system if they're not needed. A menu type system would
> be nice... :-) but I am not fluent in C, doing a lot of shell and perl
> programming. I opted to to this embedded project and learn about CISCO
> router admin instead of learning C...
>

C and Shell scripts are easy...its "programming" this dang OS thats a pain !:-|
I guess it's what your used to...

>
> > Hmmm...I'll need to get run level 5 in also, since we need to run X (but thats
> > another task, after I see this thing boot ).
>
> I haven't tackled X yet. I am still looking for an inexpensive embedded
> platform with a LCD touch screen for an Internet kiosk. So far US$2300.00
> was the bottom line I found...
>

<sales pitch on>
Check out:

http://www.datalux.com/ipix

They even have a linux version! (well, almost :-)

</sales pitch off>

>
> > AFAIK shutdown is not needed if your running from ram disk.  Any software running
>
> I need to be able to telnet into the box and force a reboot.
>

Hey, neat feature...

>
> There are mount options that force immediate writes. Would it be sync?
>

I guess theres' a 50 page how to about that somewhere...I'll have to check...

>
> > I like the idea of sharing files from a desktop to the embedded system...Thats got
> > to be the easiest way to debug the setup (especially when you don't have a floppy
> > disk on the embedded system (it is fun to use hard disks like floppies - 9 hard
> > drives sitting on my desk as I write <:-;).
>
> I almost had to build a remote boot system using bootroms for my employer.
> The idea got scrapped. The embedded platform I use has a build in bootrom.
> I'd love to use it to have a full system mounted nfs to do development,
> install software on the doc, etc... I alread spend significant time
> researching the remote boot thing, unfortunatley my research was centered
> on Windows clients booting from a Linux server.
>
> > Well, Duh....My mistake...I never knew...I was under the impression that there
> > were DOS files involved: command.com calling config.sys or something.  Hey, that
> > means I can leave the lilo (and especially plilo) in the trash - Whoopee Yeah Ra
> > Ra !!
>
> Just found a problem, though. Didn't compile MS-DOS filesystem support in
> the kernel. I tried the driver using using an ext2 formated doc... Got to
> fix that.
>
> > Spare time ?? whats that, please explain :-)
>
> Hey, after working 30 hours a day and 10 days a week there's still time
> left in the day ;-)
>
> > I'm thinking your connection is getting limited - best I could get on 3 different
> > downloads was about 2.8Kbps...maybe 56K is your upload speed ? Hmmmmm.... Well, if
> > you split it up, this won't be a problem...
>
> RAD modems on 2 pairs of wires, 256k in and 256k out... I wonder, I am far
> up in the boonies. Perhaps I could mirror on xoom.com or something like
> that. I am rearranging my site bit that should make mirroring possible.
>
> TTYL,
> Adi
>
> To unsubscribe, send "unsubscribe mtd" to majordomo@infradead.org

#! /bin/sh
#
# DOConfig  - script to configure Disk on Chip
#
#    Copies files from <pakages>.tar as listed in doc.conf
#    Actual files are specified in <package>.list
#
#    Created by Ralph Stickley rstickley@datalux.com
#    Many Features copied from init.d scripts
#
#    Built for ?Pee Wee Linux? created by Adi Linden
#
#
# Make sure we're really running bash.
#
[ -z "$BASH" ] && { echo "DOConfig requires bash" 1>&2; exit 1; }
#
#  constants for this shell script
#
VER=0.1
CFG_FILE=doc.conf
LST_FILE=files.lst
DOC_LOG=doc.log
[ -z "$COLUMNS" ] && COLUMNS=80
RES_COL=40
MOVE_TO_COL="echo -en \\033[${RES_COL}G"
#
#  constants for system directory structure
#
PKG_DIR=packages
DOC=./mnt
DOC_DEV=/dev/fla1
#
#
#
# Function: Usage
#
DOCUsage() {

   echo ""
   echo -e "doc \t\t Disk On Chip shell utility - V"$VER""
   echo ""
   echo "Usage: doc  -[E f s] mnt"
   echo "   -E   Erase disk on chip at $DOC"
   echo "   -f   create files from file $CFG_FILE"
   echo "   -s   store snapshot of files in $LST_FILE"
   echo "   mnt  mount point for Disk On Chip filesystem"
   echo ""
}
#
# Function: DOCMounted  (ExitOnError)
#
DOCMounted() {
   #
   # check if device is mounted (maybe someplace else)
   #
   if ! grep -iq "$DOC_DEV" /proc/mounts ;  then
      echo Device $DOC_DEV not mounted
      if [ ! $# = "" ]; then
         exit 0
      else
         return 0
      fi
   fi
   #
   # verify $DOC is mounted at $DOC_DEV
   #
   mntpt=`basename $DOC`
   if ! grep -i $mntpt /proc/mounts | grep -iq "$DOC_DEV"  ; then
      echo Disk-On-Chip not mounted at $DOC
      if [ ! $# = "" ]; then
         exit 0
      else
         return 0
      fi
   fi
   # valid mount, return true
   return 1
}

#
# function: DOCList
#
DOCList() {
#
   loc=$PWD
   echo -n Creating file: $loc/$LST_FILE
   cd $DOC
   #
   # use du to list - there may be a better way
   #
   du . -a | cut -f2 | sort -u > $loc/$LST_FILE
   #
   cd $loc
   #
   echo ...done
}

#
# function: DOCBackup filename
#
DOCBackup() {
   #
   #  backup to new backup file
   #
   if [ -f $1 ]; then
      bakn=1
      while [ -f "$1".$bakn ]; do
         bakn=`expr $bakn + 1`
      done
      cp  $1  "$1".$bakn
      echo Backing up $1 to "$1".$bakn
   fi
}

#
# function DOCExtract
#
DOCExtract() {

   echo -n Extracting files from:
   $MOVE_TO_COL
   echo as specified in:
   #
   loc=$PWD
   ln=1
   #
   for nfile_lst in `cat $CFG_FILE`; do
       #
       # each list file needs it's tar ball untarred at mount point
       #
       tar_file=`basename $nfile_lst list`"tar"
       tar_dir=`dirname $nfile_lst`
       #
       if [ ! -f "$tar_dir"/"$tar_file" ] ; then
          echo $CFG_FILE Error: $tar_file not found \(line  "$ln"\)
       else
          #
          #        nice printout of whats happening
          cd $DOC
          echo -n $tar_file
          $MOVE_TO_COL
          echo $nfile_lst
          #
          #  -T option seems to generate errors for empty directories
          #
          tar -xT "$loc"/"$nfile_lst" -f "$loc"/"$tar_dir"/"$tar_file"  >/dev/null
2>/dev/null
          cd $loc
       fi
       #
       ln=`expr $ln + 1`    # increment line counter
   done
}
#
# DOC main()
#
   #
   # At least one parameter required
   #
   if [ "$1" = "" ]; then
      DOCUsage
      exit 0
   fi
   #
   # command line parameter #2 - change DOC mount point
   #
   if [ ! "$2" = "" ]; then
      DOC=$2
   fi
   #
   # Verify DOC mount point exists or create it
   #
   if [ ! -d $DOC ]; then
        echo Creating Disk-On-Chip mount point at: $DOC
        mkdir $DOC
   else
      echo Disk On Chip File System at: $DOC
   fi
   case "$1" in
      #
      # Command:  Erase DOC
      #
      -E)
         echo Creating Filesystem on Disk-On-Chip \("$DOC_DEV"\) at $DOC
         #
         umount  $DOC_DEV       >  $DOC_LOG  2> $DOC_LOG
         #mke2fs $DOC_DEV       >> $DOC_LOG
         mount   $DOC_DEV $DOC  >> $DOC_LOG  2> $DOC_LOG
         #
         # verify mount
         #
         DOCMounted  ExitOnError
         #
         echo Formatted and Mounted Disk On Chip at $DOC
         #
         rm -r $DOC_LOG        # comment out to see results
         #
         ;;                    # end -E
      #
      # Command: Snapshot of Current FileSystem
      #
      -s)
         #
         # make sure we have something to take a picture of
         #
         if [ ! DOCMounted ]; then
            mount $DOC_DEV $DOC
         fi
         DOCMounted ExitOnError
         #
         # backup previous list
         #
         DOCBackup $LST_FILE
         #
         #  list files on device
         #
         DOCList
         ;;              # end -s
      #
      # Copy Files
      #
      -f)
         if [ ! -f $CFG_FILE ]; then
            #
            # Build configuration default - use all files
            #
            ls "$PKG_DIR"/*.list > $CFG_FILE
            echo File \"$CFG_FILE\" not found, creating default $CFG_FILE
         fi
         #
         DOCExtract
         #
         sync
         echo Done.
         ;;
      *)
         echo Invalid Parameter: $1
         DOCUsage
   #
   #
   esac     # end commandline processing
#
# end.
#



To unsubscribe, send "unsubscribe mtd" to majordomo@infradead.org

  reply	other threads:[~1999-12-15 21:16 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <9182AA6C8DACD311A8D70006294EF76808D3C1@exchange-yvr.squirrelsystems.com>
1999-12-08 22:08 ` Anyone embedding RH 6.1 / 2.2.12 ? ralph stickley
1999-12-13 15:01   ` Adi Linden
1999-12-14 20:14     ` ralph stickley
1999-12-15  0:07       ` Adi Linden
1999-12-15 14:54         ` ralph stickley
1999-12-15 16:27           ` Adi Linden
1999-12-15 21:16             ` ralph stickley [this message]
1999-12-20 15:14           ` Adi Linden

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=38580543.66818B2A@datalux.com \
    --to=ralph@datalux.com \
    --cc=adi@adis.on.ca \
    --cc=linux-embedded@waste.org \
    --cc=mtd@imladris.mvhi.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.