Hi, I try to boot/jumpstart a x86 system over network from Solaris 9 - it works. Then I try to boot the same x86 server from Solaris 10U3+patches, and it doesn't work. pxegrub loads fine:
11:01:23.16398 172.16.5.250 -> 172.16.5.1 TFTP Read "/boot/pxegrub" (octet) 11:01:23.18087 172.16.5.1 -> 172.16.5.250 UDP D=2076 S=52199 LEN=23 11:01:23.18098 172.16.5.250 -> 172.16.5.1 TFTP Ack block 0 11:01:23.20057 172.16.5.1 -> 172.16.5.250 TFTP Data block 1 (1456 bytes) 11:01:23.20092 172.16.5.250 -> 172.16.5.1 TFTP Ack block 1 11:01:23.20099 172.16.5.1 -> 172.16.5.250 TFTP Data block 2 (1456 bytes) 11:01:23.20133 172.16.5.250 -> 172.16.5.1 TFTP Ack block 2 11:01:23.20139 172.16.5.1 -> 172.16.5.250 TFTP Data block 3 (1456 bytes) 11:01:23.20174 172.16.5.250 -> 172.16.5.1 TFTP Ack block 3 11:01:23.20180 172.16.5.1 -> 172.16.5.250 TFTP Data block 4 (1456 bytes) 11:01:23.20214 172.16.5.250 -> 172.16.5.1 TFTP Ack block 4 [...] 11:01:23.24073 172.16.5.1 -> 172.16.5.250 TFTP Data block 90 (1456 bytes) 11:01:23.24108 172.16.5.250 -> 172.16.5.1 TFTP Ack block 90 11:01:23.24116 172.16.5.1 -> 172.16.5.250 TFTP Data block 91 (1456 bytes) 11:01:23.24151 172.16.5.250 -> 172.16.5.1 TFTP Ack block 91 11:01:23.24157 172.16.5.1 -> 172.16.5.250 TFTP Data block 92 (608 bytes) 11:01:23.24177 172.16.5.250 -> 172.16.5.1 TFTP Ack block 92 11:01:23.25275 172.16.5.250 -> OLD-BROADCAST TFTP Read "menu.lst.0100114334686E" (octet) 11:01:26.26354 172.16.5.1 -> 172.16.5.250 TFTP Error: access violation 11:01:26.26435 172.16.5.250 -> OLD-BROADCAST TFTP Read "menu.lst.0100114334686E" (octet) 11:01:29.27352 172.16.5.1 -> 172.16.5.250 TFTP Error: access violation 11:01:29.27388 172.16.5.250 -> OLD-BROADCAST TFTP Read "boot/grub/menu.lst" (octet) 11:01:29.27638 172.16.5.1 -> 172.16.5.250 UDP D=2079 S=52208 LEN=21 11:01:29.27648 172.16.5.250 -> OLD-BROADCAST TFTP Error: not defined 11:01:29.27698 172.16.5.250 -> OLD-BROADCAST TFTP Read "boot/grub/menu.lst" (octet) 11:01:29.27867 172.16.5.1 -> 172.16.5.250 UDP D=2080 S=52209 LEN=23 11:01:29.27877 172.16.5.250 -> OLD-BROADCAST TFTP Ack block 0 11:01:29.27932 172.16.5.1 -> 172.16.5.250 TFTP Data block 1 (1007 bytes) 11:01:29.27967 172.16.5.250 -> OLD-BROADCAST TFTP Ack block 1 So grub and menu.lst were loaded. Now I choose given system and got: Error 25: Disk read error Press any key to continue... Snoop output is: 11:03:15.58924 172.16.5.250 -> OLD-BROADCAST TFTP Read "/I86PC.Solaris_11-69/platform/i86pc/kernel/unix" (octet) 11:03:15.60564 172.16.5.1 -> 172.16.5.250 UDP D=2081 S=52216 LEN=24 11:03:15.60574 172.16.5.250 -> OLD-BROADCAST TFTP Error: not defined 11:03:15.60601 172.16.5.250 -> OLD-BROADCAST TFTP Read "/I86PC.Solaris_11-69/platform/i86pc/kernel/unix" (octet) 11:03:15.60816 172.16.5.1 -> 172.16.5.250 UDP D=2082 S=52217 LEN=23 11:03:15.60826 172.16.5.250 -> OLD-BROADCAST TFTP Ack block 0 11:03:15.60873 172.16.5.1 -> 172.16.5.250 TFTP Data block 1 (1432 bytes) 11:03:15.60915 172.16.5.250 -> OLD-BROADCAST TFTP Ack block 1 11:03:15.60922 172.16.5.1 -> 172.16.5.250 TFTP Data block 2 (1432 bytes) 11:03:17.60437 172.16.5.250 -> OLD-BROADCAST TFTP Ack block 1 11:03:20.60376 172.16.5.1 -> 172.16.5.250 TFTP Data block 2 (1432 bytes) 11:03:20.62463 172.16.5.250 -> OLD-BROADCAST TFTP Ack block 1 11:03:24.63335 172.16.5.250 -> OLD-BROADCAST TFTP Ack block 1 11:03:24.96220 OLD-BROADCAST -> BROADCAST DHCP/BOOTP BOOTREQUEST 11:03:25.60369 172.16.5.1 -> 172.16.5.250 TFTP Data block 2 (1432 bytes) 11:03:29.63050 172.16.5.250 -> OLD-BROADCAST TFTP Ack block 1 11:03:30.60370 172.16.5.1 -> 172.16.5.250 TFTP Data block 2 (1432 bytes) 11:03:35.60375 172.16.5.1 -> 172.16.5.250 TFTP Data block 2 (1432 bytes) So problem after block 1. Also please notice that this time tftp sends packets with 1432 bytes, while for pxegrub it was using 1456 bytes... I don't know if it's important or not. Also if I add some entries to menu.lst so it's size is 1432 bytes or more then grub is not able to load that config file neither. ok, so let's add some comments in menu.lst so its size will be above 1436B # ls -l menu.lst -rw-r--r-- 1 root root 1564 Aug 13 11:09 menu.lst I addedd several lines like below at the end of menu.lst to increase its size (the same happens if I add valid entries, it's just about file size: #23456789012345678901234567890 #23456789012345678901234567890 #23456789012345678901234567890 #23456789012345678901234567890 Then from grub command line I issued 'configfile /boot/grub/menu.lst' (it also doesn't work if I just reboot and grub tries to load that file on its own - again, works on S9): 11:10:37.65816 172.16.5.250 -> OLD-BROADCAST TFTP Read "/boot/grub/menu.lst" (octet) 11:10:37.66037 172.16.5.1 -> 172.16.5.250 UDP D=2084 S=52235 LEN=21 11:10:37.66048 172.16.5.250 -> OLD-BROADCAST TFTP Error: not defined 11:10:37.66087 172.16.5.250 -> OLD-BROADCAST TFTP Read "/boot/grub/menu.lst" (octet) 11:10:37.66257 172.16.5.1 -> 172.16.5.250 UDP D=2085 S=52236 LEN=23 11:10:37.66267 172.16.5.250 -> OLD-BROADCAST TFTP Ack block 0 11:10:37.66331 172.16.5.1 -> 172.16.5.250 TFTP Data block 1 (1432 bytes) 11:10:37.66373 172.16.5.250 -> OLD-BROADCAST TFTP Ack block 1 11:10:37.66380 172.16.5.1 -> 172.16.5.250 TFTP Data block 2 (132 bytes) (last block) 11:10:39.65505 172.16.5.250 -> OLD-BROADCAST TFTP Ack block 1 11:10:42.65859 172.16.5.1 -> 172.16.5.250 TFTP Data block 2 (132 bytes) (last block) 11:10:42.67532 172.16.5.250 -> OLD-BROADCAST TFTP Ack block 1 11:10:46.68403 172.16.5.250 -> OLD-BROADCAST TFTP Ack block 1 11:10:47.65856 172.16.5.1 -> 172.16.5.250 TFTP Data block 2 (132 bytes) (last block) 11:10:49.11086 OLD-BROADCAST -> BROADCAST DHCP/BOOTP BOOTREQUEST 11:10:51.68119 172.16.5.250 -> OLD-BROADCAST TFTP Ack block 1 11:10:52.65859 172.16.5.1 -> 172.16.5.250 TFTP Data block 2 (132 bytes) (last block) 11:10:57.65861 172.16.5.1 -> 172.16.5.250 TFTP Data block 2 (132 bytes) (last block) As you can see it was fine with block 1 (however client for some reasone acked it twice) and again tftp sends using 1432 bytes. Now remove some of those comments so file size will be exactly 1432. # ls -l menu.lst -rw-r--r-- 1 root root 1432 Aug 13 11:14 menu.lst 11:14:50.37459 172.16.5.250 -> OLD-BROADCAST TFTP Read "/boot/grub/menu.lst" (octet) 11:14:50.39134 172.16.5.1 -> 172.16.5.250 UDP D=2086 S=52242 LEN=23 11:14:50.39145 172.16.5.250 -> OLD-BROADCAST TFTP Ack block 0 11:14:50.39189 172.16.5.1 -> 172.16.5.250 TFTP Data block 1 (1432 bytes) 11:14:50.39232 172.16.5.250 -> OLD-BROADCAST TFTP Ack block 1 11:14:50.39238 172.16.5.1 -> 172.16.5.250 TFTP Data block 2 (0 bytes) (last block) 11:14:52.42335 172.16.5.250 -> OLD-BROADCAST TFTP Ack block 1 11:14:55.38887 172.16.5.1 -> 172.16.5.250 TFTP Data block 2 (0 bytes) (last block) 11:14:55.44361 172.16.5.250 -> OLD-BROADCAST TFTP Ack block 1 11:14:59.45232 172.16.5.250 -> OLD-BROADCAST TFTP Ack block 1 11:15:0.38882 172.16.5.1 -> 172.16.5.250 TFTP Data block 2 (0 bytes) (last block) 11:15:4.44948 172.16.5.250 -> OLD-BROADCAST TFTP Ack block 1 11:15:5.38888 172.16.5.1 -> 172.16.5.250 TFTP Data block 2 (0 bytes) (last block) 11:15:8.18394 OLD-BROADCAST -> BROADCAST DHCP/BOOTP BOOTREQUEST 11:15:10.38885 172.16.5.1 -> 172.16.5.250 TFTP Data block 2 (0 bytes) (last block) Again, not working - this time see that client requested block 2 with size 0. So let's remove one byte from comments from menu.lst # ls -l menu.lst -rw-r--r-- 1 root root 1431 Aug 13 11:16 menu.lst # snoop -t a -r -d ce1 Using device /dev/ce (promiscuous mode) 11:16:28.92601 172.16.5.250 -> OLD-BROADCAST TFTP Read "/boot/grub/menu.lst" (octet) 11:16:28.94260 172.16.5.1 -> 172.16.5.250 UDP D=2087 S=52244 LEN=23 11:16:28.94271 172.16.5.250 -> OLD-BROADCAST TFTP Ack block 0 11:16:28.94312 172.16.5.1 -> 172.16.5.250 TFTP Data block 1 (1431 bytes) 11:16:28.94355 172.16.5.250 -> OLD-BROADCAST TFTP Ack block 1 11:16:28.94401 172.16.5.250 -> OLD-BROADCAST TFTP Read "/boot/grub/menu.lst" (octet) 11:16:28.94616 172.16.5.1 -> 172.16.5.250 UDP D=2088 S=52245 LEN=23 11:16:28.94626 172.16.5.250 -> OLD-BROADCAST TFTP Ack block 0 11:16:28.94693 172.16.5.1 -> 172.16.5.250 TFTP Data block 1 (1431 bytes) 11:16:28.94735 172.16.5.250 -> OLD-BROADCAST TFTP Ack block 1 11:16:28.94798 172.16.5.250 -> OLD-BROADCAST TFTP Read "/boot/grub/default" (octet) 11:16:31.95891 172.16.5.1 -> 172.16.5.250 TFTP Error: access violation 11:16:31.95967 172.16.5.250 -> OLD-BROADCAST TFTP Read "/boot/grub/default" (octet) 11:16:34.96890 172.16.5.1 -> 172.16.5.250 TFTP Error: access violation 11:16:34.96963 172.16.5.250 -> OLD-BROADCAST TFTP Read "/boot/grub/menu.lst" (octet) 11:16:34.97218 172.16.5.1 -> 172.16.5.250 UDP D=2091 S=52250 LEN=21 11:16:34.97228 172.16.5.250 -> OLD-BROADCAST TFTP Error: not defined 11:16:34.97273 172.16.5.250 -> OLD-BROADCAST TFTP Read "/boot/grub/menu.lst" (octet) 11:16:34.97441 172.16.5.1 -> 172.16.5.250 UDP D=2092 S=52251 LEN=23 11:16:34.97452 172.16.5.250 -> OLD-BROADCAST TFTP Ack block 0 11:16:34.97501 172.16.5.1 -> 172.16.5.250 TFTP Data block 1 (1431 bytes) 11:16:34.97543 172.16.5.250 -> OLD-BROADCAST TFTP Ack block 1 Now it works. I tried pxegrub from snv-_69 and s10U3 - the same result. I guess the problem rather is on a jumpstart server. Replacing just in.tftpd binary from S9 does not fix the problem. This message posted from opensolaris.org
