[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

srm upgrade 6.7 -> 7.0



i just a want to inform the i upgraded the srm console on my good old
alphastation255 (ev45/233).

i thought that it could help me boot from the adaptec scsi controller
- but it did not.

anyway - because it was such a pain to get info about the upgrade process
under srm / linux, i will explain it in this mail.

if someone has a better solution - pls mail!



(the info below is without warrenty - it worked on my machine)



1) get the latest firmware from
ftp://ftp.digital.com/pub/DEC/Alpha/firmware/index.html
(choose your machine on the left)

2) download the firware file (in my case it was `as255_v8_1.exe')

3) boot a linux

4) format a floppy (`fdformat /dev/fd0H1440')
   *dont* put a filesystem onto it - you dont need it!

5) put the firmware file onto the disk - starting with an offset of 512
byte:
   `dd if=as255_v8_1.exe of=/dev/fd0 bs=512 seek=1'

the next step is somehow a hack.
maybe there is a better way to do it - pls inform me!
you need to boot from the disk (directly in the srm console)
- but currently there is no boot stuff on it.

6) create an empty (hex) bootblock:
   `dd if=/dev/zero bs=512 count=1 | xxd boot_block_empty'

7) determine the size of the firmware file
   `ls -la as255_v8_1.exe'
   divide that size by 512 (decimal) and calculate the hex value of it.

8) edit the file `boot_block_empty' you created in step 6.
   you have to jump to offset 1e0 (the line before the last line).
   the next is a bit complicated.
   you have to reverse the byte order of the hex value calculated in
   step 7 in a long int (8 byte - 64 bit) order.
   example:
    your value from step 7 was: a09 (= 0000 0000 0000 0a09)
    the value you have to enter is: 090a 0000 0000 0000
   hope everyone undersood...

9) edit the next long int
   enter: 0100 0000 0000 0000
   this is the offset the file starts.

10) make sure that the next long int (at offset 1f0) is:
    0000 0000 0000 0000
     this is a flag - dont know what it is used for.

11) edit the last long int. this is a checksum.
    it is the addition of all long ints (8 bytes) before.
    pay attention on the REVERSE ORDER!!!
    in my example it is:
    0a0a 0000 0000 0000

12) exit editor and write the bootblock back to disk:
    `xxd -r boot_block_empty | dd of=/dev/fd0H1440'

13) halt linux -> go to the srm console and boot from the created disk:
    `boot dva0'

14) the machine/srm seems to reboot - the the update menu should appear.



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index] []