Hi
An interesting question.
In the days of XT's and Turbo C, Turbo Pascal, Assembler, yes, it was possible.
Simply by looking at the BIOS physical address space in the system
memory map and knowing the field offsets ( peekb() ).
However, now days things are not so simple.
Modern BIOS code is paged in and out of the system memory space.
In some cases the BIOS code can be compressed or even encrypted.
In a modern multi-process OS a single process is limited
to addressing memory within it's own local (virtual) address space.
So attempting to directly read the BIOS physical address range
will fail, unless the process reads BIOS information that has been previously been stored in accessible system memory (by other system processes) that it can, if sufficiently privileged, access.
The good news is that it is possible to obtain information about the system hardware in Linux using the following programs (tools)
lshw
biosdecode Reads the system's DMI table data and reports lot's of detail
dmidecode Reads the system's DMI table data and reports lot's of detail
including the BIOS vendor and BIOS version, etc
$ dmidecode --type 0
There is an excellent discussion of biosdecode and dmidecode here:
http://www.cyberciti.biz/tips/queryi...nd-prompt.html
Further reading
http://en.wikipedia.org/wiki/SMBIOS
http://en.wikipedia.org/wiki/Desktop...ment_Interface
http://linux.die.net/man/8/biosdecode
http://linux.die.net/man/8/dmidecode
Looking into the source code for either biosdecode or dmicode, and researching the operation and use of the DMI tables would seem to be an excellent place to start.
Hope that assists
Chris