in reply to Using Perl to detect RAM amount

I need to detect how much RAM is installed on a given machine, independent of the operating system it runs and the type of architecture.

I'd like to compile the resulting code as a stand-alone executable with PAR and see if I could fit it on a bootable floppy of some sort, like some linux flavor or DOS perhaps. That way I could run it on virtually any machine in here, except for those pesky cobalts.

If you are going to put the resulting program on a bootable floppy, does the solution have to be portable between OSses? Or are you going to cram multiple OSses on the same floppy? And the floppy is going to be run on say on both Intel x86 architecture and SUN Sparc architecture?

However, I very much doubt you'll be able to put a kernel *and* a Perl runtime environment one a floppy. Regardless of the OS. (Even with PAR, you need a Perl runtime environment - it's there, even if it's in one huge binary).

Abigail

Replies are listed 'Best First'.
Re: Re: Using Perl to detect RAM amount
by Tommy (Chaplain) on Jan 06, 2004 at 01:07 UTC

    This is true, that the runtime must also be present. I've also considered using a business-card CD and running it from source which won't run into architecture problems like a PAR executable (at least I don't think so).

    Still you offer me no suggestions... Do you know of any code that could accomplish this design, if even on one architechture and not many?

    --
    Tommy Butler, a.k.a. TOMMY
    
      Linux: cat /proc/meminfo. On Solaris, one can dump the hardware device tree - this will include the memory. (I can't remember the command). IIRC, on HP-UX, one of the *scan commands will show the physical amount of memory. Typically, after a reboot, dmesg will show that info there somewhere as well. Of course, none of this is very platform independent.

      Abigail

        Now that's a start. I'll find the right scan command and do some reading. I've found an easy way to dig up commands that I can't alltogether remember goes like...
        #!/usr/bin/perl -w use strict; use warnings; my($cmd) = 'conf'; foreach (split(/:/,$ENV{'PATH'})) { print qq[IN "$_"\n], (`ls ${\quotemeta $_}|grep $cmd`||"[none]\n"), + "--\n\n" }
        --
        Tommy Butler, a.k.a. TOMMY
        
        This should work on all modern sparc platforms (sun4u mostly)
        #!/usr/bin/perl -w use strict; chomp (my @data=`/usr/platform/\`uname -m\`/sbin/prtdiag`); foreach my $line (@data) { if ($line =~ /Mem/) { my @needed_line=(split /\s+/, $line); print "Memory = ".$needed_line[2]."\n"; } }


        Very funny Scotty... Now PLEASE beam down my PANTS!