OpenSolaris: BFU archive anatomy

I think I’ve covered the basics of updating your OpenSolaris using BFU before. This is the post: OpenSolaris BFU. Back then I’ve explained the basics of BFUing.

Today I simply would like to tell a bit more about the contents of a BFU archive, using the latest available one as an example: ON b41.

After you download and unpack the archive, you will get a directory like this:

bash-3.00$ cd /export/dist/archives-b41
bash-3.00$ ls
BINARYLICENSE.txt THIRDPARTYLICENSE.BFU-ARCHIVES
README.BFU-ARCHIVES.i386 i386

Besides the text files with licenses, it also contains a README file with the full list of files supplied within the BFU along with the architecture-depended directory – i386 (this is because I’ve downloaded the BFU for my amd64-based box).

The i386 subdirectory contains the following:

bash-3.00$ cd /export/dist/archives-b41/i386
bash-3.00$ ls -al
total 512286
drwxr-xr-x 2 greys other 512 May 30 17:50 .
drwxr-xr-x 3 greys other 512 May 30 17:59 ..
-rw-r--r-- 1 greys other 61585 May 30 17:50 conflict_resolution.gz
-rw-r--r-- 1 greys other 67812860 May 30 17:50 generic.kernel
-rw-r--r-- 1 greys other 21769100 May 30 17:50 generic.lib
-rw-r--r-- 1 greys other 2097796 May 30 17:50 generic.root
-rw-r--r-- 1 greys other 1100800 May 30 17:50 generic.sbin
-rw-r--r-- 1 greys other 161510640 May 30 17:50 generic.usr
-rw-r--r-- 1 greys other 1264640 May 30 17:50 i86pc.boot
-rw-r--r-- 1 greys other 5329920 May 30 17:50 i86pc.root
-rw-r--r-- 1 greys other 1105920 May 30 17:50 i86pc.usr

As you can see, these files are nothing but cpio-archives with all the files supplied in the given BFU build:

bash-3.00$ file generic.kernel
generic.kernel: ASCII cpio archive

The README file contains the full list of all the files provided in the BFU archive, split by arhives which contain these files. So, this list has sub-sections named like ==== conflict_resolution.gz ====, or ==== generic.root ====, and so on.

If you’re keen on finding out what exactly you’ve got, feel free to browse your archives like this:

bash-3.00$ cpio -itv 
-rwxr-xr-x 1 root sys 5156384 May 30 17:37 2006, kernel/amd64/genunix
drwxr-xr-x 2 root sys 0 May 30 17:37 2006, kernel/amd64
-rwxr-xr-x 1 root sys 20512 May 14 16:51 2006, kernel/crypto/blowfish
-rwxr-xr-x 1 root sys 46216 May 30 17:36 2006, kernel/crypto/rsa
-rwxr-xr-x 1 root sys 8260 May 14 16:51 2006, kernel/crypto/arcfour
-rwxr-xr-x 1 root sys 35776 May 14 16:51 2006, kernel/crypto/aes
-rwxr-xr-x 1 root sys 12024 May 14 19:05 2006, kernel/crypto/amd64/arcfour2048
-rwxr-xr-x 1 root sys 27936 May 14 19:05 2006, kernel/crypto/amd64/blowfish448
-rwxr-xr-x 1 root sys 48072 May 14 19:05 2006, kernel/crypto/amd64/aes256
-rwxr-xr-x 1 root sys 27928 May 14 16:51 2006, kernel/crypto/amd64/blowfish
-rwxr-xr-x 1 root sys 23640 May 30 17:36 2006, kernel/crypto/amd64/swrand
-rwxr-xr-x 1 root sys 48072 May 14 16:51 2006, kernel/crypto/amd64/aes
-rwxr-xr-x 1 root sys 68352 May 30 17:36 2006, kernel/crypto/amd64/rsa
-rwxr-xr-x 1 root sys 12024 May 14 16:51 2006, kernel/crypto/amd64/arcfour
drwxr-xr-x 2 root sys 0 May 30 17:36 2006, kernel/crypto/amd64
-rwxr-xr-x 1 root sys 14784 May 30 17:36 2006, kernel/crypto/swrand
...

And if you want to check quickly, whether a particular file is part of the BFU, then that’s how you do it:

bash-3.00$ grep sbin/tar README.BFU-ARCHIVES.i386

… and just in case you want to compare it against the existing file you have in your current environment, it’s very easy to get the full listing of this file’s entry in an archive:

bash-3.00$ cpio -itv
lrwxrwxrwx 1 root root 11 May 30 17:17 2006, usr/bin/tar -> ../sbin/tar
-r-xr-xr-x 1 root bin 83788 May 30 17:49 2006, usr/sbin/tar

That’s it for today. Good luck with your OpenSolaris experiments!

Speak Your Mind

*