Забавно было наблюдать, как Оракл поверг всех "системных администраторов" в смущение выпуском Solaris 11 Express LiveUSB с утилитой создания этого самого LiveUSB, находящейся внутри установочного имиджа. :) И резко исчезнувшей со всех ресурсов, посвященных OpenSolaris. Ну, ладно, преувеличиваю. Тщательные раскопки переписки в районе OpenSolaris позволили найти некий промежуточный вариант usbcopy, в аттачментах переписки о багах этой самой usbcopy.
Вообще забавно было читать на форумах записки ошеломленных сисадминов, которые как проклятые пытались найти эту утилиту (фактически - скрипт). И без которой были беспомощны, как котята. Мне даже попалось глубокомысленное высказывание о проблеме курицы и яйца, с советом поставить Solaris 11 сначала с CD, а потом, скачав LiveUSB имидж, создавать загрузочную флэшку. :) Ха, качать два имиджа, чтобы сделать загрузочную флэшку, щаз!
Ладно, нашел я в конце-концов этот многострадальный скрипт.
Посмотрел на него.
Очевидно было, что на нормальном Солярисе он наверняка не запустится, поскольку юзерлэнд в OpenSolaris совершенно другой, GNUтый. Однако действия, в нем выполняемые, были совершенно очевидными и, если выкинуть ненужное умничанье и некоторые избыточные действия, вполне доступными для выполнения ручками.
Итак, как руками создать загрузочную флэшку из имиджа LiveUSB Solaris 11 Express?
Элементарно, Ватсон!
Половина необходимых действий описана здесь. Нам потребуется машина с установленной Solaris 10 x86. Переливаем на нее имидж LiveUSB с сайта Oracle.
1. Выключаем сервис VOLD:
2. Подключаем к машине под Solaris 10 флэшку объемом от 1 Гб и определяем логическое имя устройства для флэшки командой rmformat:
В моем случае именем устройства является /dev/rdsk/c2t0d0p2.
3. Создаем на флэшке партишен Solaris на весь объем USB-устройства:
4. Запускаем format в режиме эксперта и создаем на флэшке слайс 0 с тэгом root, как описано здесь:
Количество цилиндров раздела можно увидеть визуально, без ухищрений с prtvtoc и прочих изысков. Метка создается SMI.
(Кстати, в оригинальном скрипте usbcopy эта тривиальная процедура делается полностью автоматически - понимаю, зачем, но писать сейчас аналогичный скрипт, работающий не на OpenSolaris мне просто влом. Я всего лишь хочу создать один-единственный LiveUSB).
5. Загруженный на нашу машину с Solaris 10 имидж просто копируем утилитой dd на нашу флэшку (файловую систему создавать не обязательно):
Процедура копирования заняла у меня около 5 минут.
6. Последнее действие - смонтируем флэшку и запишем на нее загрузчик с нее же:
Можно убедиться, что имидж записан на флэшку:
и отмонтировать ее:
Для спокойствия можно убедиться, что файловая система на флэшке UFS:
That's all, folks! Вот и все, мальчики и девочки!
Можно стартовать с вновь созданного LiveUSB.
Вообще забавно было читать на форумах записки ошеломленных сисадминов, которые как проклятые пытались найти эту утилиту (фактически - скрипт). И без которой были беспомощны, как котята. Мне даже попалось глубокомысленное высказывание о проблеме курицы и яйца, с советом поставить Solaris 11 сначала с CD, а потом, скачав LiveUSB имидж, создавать загрузочную флэшку. :) Ха, качать два имиджа, чтобы сделать загрузочную флэшку, щаз!
Ладно, нашел я в конце-концов этот многострадальный скрипт.
Посмотрел на него.
Очевидно было, что на нормальном Солярисе он наверняка не запустится, поскольку юзерлэнд в OpenSolaris совершенно другой, GNUтый. Однако действия, в нем выполняемые, были совершенно очевидными и, если выкинуть ненужное умничанье и некоторые избыточные действия, вполне доступными для выполнения ручками.
Итак, как руками создать загрузочную флэшку из имиджа LiveUSB Solaris 11 Express?
Элементарно, Ватсон!
Половина необходимых действий описана здесь. Нам потребуется машина с установленной Solaris 10 x86. Переливаем на нее имидж LiveUSB с сайта Oracle.
1. Выключаем сервис VOLD:
root @ ktulhu /stage # svcadm disable volfs
root @ ktulhu /stage # svcs volfs
STATE STIME FMRI
disabled 18:31:52 svc:/system/filesystem/volfs:default
2. Подключаем к машине под Solaris 10 флэшку объемом от 1 Гб и определяем логическое имя устройства для флэшки командой rmformat:
root @ ktulhu /stage # rmformat -l
Looking for devices...
1. Logical Node: /dev/rdsk/c2t0d0p0
Physical Node: /pci@0,0/pci1043,819e@1d,7/storage@3/disk@0,0
Connected Device: Generic USB Flash Disk 0.00
Device Type: Removable
2. Logical Node: /dev/rdsk/c0t1d0p0
Physical Node: /pci@0,0/pci-ide@1f,1/ide@0/sd@1,0
Connected Device: TEAC DV-W28E-R 1.0B
Device Type: DVD Reader/Writer
В моем случае именем устройства является /dev/rdsk/c2t0d0p2.
3. Создаем на флэшке партишен Solaris на весь объем USB-устройства:
root @ ktulhu /stage # fdisk -d -B /dev/rdsk/c2t0d0p0
Physical Geometry:
cylinders[1926] heads[128] sectors[32]
sector size[512] blocks[7888896] mbytes[-244]
Virtual (HBA) Geometry:
cylinders[491] heads[255] sectors[63]
sector size[512] blocks[7887915] mbytes[-244]
About to write fdisk table:
SYSID ACT BHEAD BSECT BEGCYL EHEAD ESECT ENDCYL RELSECT NUMSECT
191 128 65 2 0 15 36 491 4096 7884800
100 0 0 0 0 0 0 0 100 100
100 0 0 0 0 0 0 0 100 100
100 0 0 0 0 0 0 0 100 100
4. Запускаем format в режиме эксперта и создаем на флэшке слайс 0 с тэгом root, как описано здесь:
root @ ktulhu /stage # fdisk -d -B /dev/rdsk/c2t0d0p0
Physical Geometry:
cylinders[1926] heads[128] sectors[32]
sector size[512] blocks[7888896] mbytes[-244]
Virtual (HBA) Geometry:
cylinders[491] heads[255] sectors[63]
sector size[512] blocks[7887915] mbytes[-244]
About to write fdisk table:
SYSID ACT BHEAD BSECT BEGCYL EHEAD ESECT ENDCYL RELSECT NUMSECT
191 128 65 2 0 15 36 491 4096 7884800
100 0 0 0 0 0 0 0 100 100
100 0 0 0 0 0 0 0 100 100
100 0 0 0 0 0 0 0 100 100
root @ ktulhu / # format -e /dev/rdsk/c2t0d0p2
Error: can't open selected disk '/dev/rdsk/c2t0d0p2'.
format> disk
AVAILABLE DISK SELECTIONS:
0. /dev/rdsk/c2t0d0 <drive type unknown>
/pci@0,0/pci1043,819e@1d,7/storage@4/disk@0,0
Specify disk (enter its number)[0]: 0
AVAILABLE DRIVE TYPES:
0. Auto configure
1. other
Specify disk type (enter its number): 0
Auto configuration via format.dat[no]? yes
/dev/rdsk/c2t0d0: configured with capacity of 3.76GB
<Generic-USBFlashDisk-0.00 cyl 1923 alt 2 hd 128 sec 32>
selecting /dev/rdsk/c2t0d0
[disk formatted]
format> partition
...
partition> print
Current partition table (default):
Total disk cylinders available: 1923 + 2 (reserved cylinders)
Part Tag Flag Cylinders Size Blocks
0 root wm 0 0 (0/0/0) 0
1 swap wu 0 0 (0/0/0) 0
2 backup wu 0 - 1924 3.76GB (1925/0/0) 7884800
3 unassigned wm 0 0 (0/0/0) 0
4 unassigned wm 0 0 (0/0/0) 0
5 unassigned wm 0 0 (0/0/0) 0
6 usr wm 1 - 1922 3.75GB (1922/0/0) 7872512
7 unassigned wm 0 0 (0/0/0) 0
8 boot wu 0 - 0 2.00MB (1/0/0) 4096
9 alternates wm 0 0 (0/0/0) 0
partition> 6
Part Tag Flag Cylinders Size Blocks
6 usr wm 1 - 1922 3.75GB (1922/0/0) 7872512
Enter partition id tag[usr]: unassigned
Enter partition permission flags[wm]:
Enter new starting cyl[1]: 0
Enter partition size[7872512b, 1922c, 1921e, 3844.00mb, 3.75gb]: 0gb
partition> print
Current partition table (unnamed):
Total disk cylinders available: 1923 + 2 (reserved cylinders)
Part Tag Flag Cylinders Size Blocks
0 root wm 0 0 (0/0/0) 0
1 swap wu 0 0 (0/0/0) 0
2 backup wu 0 - 1924 3.76GB (1925/0/0) 7884800
3 unassigned wm 0 0 (0/0/0) 0
4 unassigned wm 0 0 (0/0/0) 0
5 unassigned wm 0 0 (0/0/0) 0
6 unassigned wm 0 0 (0/0/0) 0
7 unassigned wm 0 0 (0/0/0) 0
8 boot wu 0 - 0 2.00MB (1/0/0) 4096
9 alternates wm 0 0 (0/0/0) 0
partition> 2
Part Tag Flag Cylinders Size Blocks
2 backup wu 0 - 1924 3.76GB (1925/0/0) 7884800
Enter partition id tag[backup]: ^C
partition> 0
Part Tag Flag Cylinders Size Blocks
0 root wm 0 0 (0/0/0) 0
Enter partition id tag[root]:
Enter partition permission flags[wm]:
Enter new starting cyl[1]:
Enter partition size[0b, 0c, 1e, 0.00mb, 0.00gb]: 1924e
End cylinder 1924 is beyond max cylinder 1922
Enter partition size[0b, 0c, 1e, 0.00mb, 0.00gb]: 1922e
partition> print
Current partition table (unnamed):
Total disk cylinders available: 1923 + 2 (reserved cylinders)
Part Tag Flag Cylinders Size Blocks
0 root wm 1 - 1922 3.75GB (1922/0/0) 7872512
1 swap wu 0 0 (0/0/0) 0
2 backup wu 0 - 1924 3.76GB (1925/0/0) 7884800
3 unassigned wm 0 0 (0/0/0) 0
4 unassigned wm 0 0 (0/0/0) 0
5 unassigned wm 0 0 (0/0/0) 0
6 unassigned wm 0 0 (0/0/0) 0
7 unassigned wm 0 0 (0/0/0) 0
8 boot wu 0 - 0 2.00MB (1/0/0) 4096
9 alternates wm 0 0 (0/0/0) 0
partition> label
[0] SMI Label
[1] EFI Label
Specify Label type[0]: 0
Ready to label disk, continue? y
partition>
Количество цилиндров раздела можно увидеть визуально, без ухищрений с prtvtoc и прочих изысков. Метка создается SMI.
(Кстати, в оригинальном скрипте usbcopy эта тривиальная процедура делается полностью автоматически - понимаю, зачем, но писать сейчас аналогичный скрипт, работающий не на OpenSolaris мне просто влом. Я всего лишь хочу создать один-единственный LiveUSB).
5. Загруженный на нашу машину с Solaris 10 имидж просто копируем утилитой dd на нашу флэшку (файловую систему создавать не обязательно):
root @ ktulhu /stage # dd bs=16384 conv=sync if=sol-11-exp-201011-live-x86.usb of=/dev/rdsk/c2t0d0s0
52762+1 records in
52763+0 records out
Процедура копирования заняла у меня около 5 минут.
6. Последнее действие - смонтируем флэшку и запишем на нее загрузчик с нее же:
root @ ktulhu /stage # mount /dev/dsk/c2t0d0s0 /mnt
root @ ktulhu /stage # dd bs=16384 conv=sync if=sol-11-exp-201011-live-x86.usb of=/dev/rdsk/c2t0d0s0
52762+1 records in
52763+0 records out
Можно убедиться, что имидж записан на флэшку:
root @ ktulhu /stage # ls -al /mnt
total 591082
drwxr-xr-x 15 root root 512 Nov 5 21:56 .
drwxr-xr-x 33 root root 43 Jan 20 11:12 ..
-r--r--r-- 1 root root 2048 Nov 5 21:55 .catalog
drwxr-xr-x 2 root sys 512 Nov 5 21:01 .cdrom
-rw-r--r-- 1 root root 65 Nov 5 21:27 .image_info
-rw-r--r-- 1 root root 4242 Nov 5 21:55 .livecd-cdrom-content
-r--r--r-- 1 root root 37 Nov 5 21:27 .volsetid
lrwxrwxrwx 1 root root 9 Nov 5 21:55 bin -> ./usr/bin
drwxr-xr-x 5 root sys 512 Nov 5 21:55 boot
drwxr-xr-x 14 root sys 1024 Nov 5 21:55 dev
drwxr-xr-x 3 root sys 512 Nov 5 21:55 devices
drwxr-xr-x 5 65432 staff 512 Nov 5 21:55 jack
drwx------ 2 root root 8192 Nov 5 21:55 lost+found
drwxr-xr-x 3 root sys 512 Nov 5 21:55 mnt
drwxr-xr-x 5 root sys 512 Nov 5 21:55 platform
dr-xr-xr-x 2 root root 512 Nov 5 21:01 proc
-rw-r--r-- 1 root root 0 Nov 5 21:03 reconfigure
drwx------ 2 root root 512 Nov 5 21:55 root
drwxr-xr-x 4 root root 512 Nov 5 21:55 save
-rw-r--r-- 1 root root 576742912 Nov 5 21:53 solaris.zlib
-rw-r--r-- 1 root root 28161024 Nov 5 21:55 solarismisc.zlib
drwxr-xr-x 4 root root 512 Nov 5 21:56 system
drwxrwxrwt 2 root sys 512 Nov 5 21:01 tmp
и отмонтировать ее:
root @ ktulhu /stage # umount /mnt
Для спокойствия можно убедиться, что файловая система на флэшке UFS:
root @ ktulhu /stage # fstyp /dev/rdsk/c2t0d0s0
ufs
That's all, folks! Вот и все, мальчики и девочки!
Можно стартовать с вновь созданного LiveUSB.
