Организация установки FreeBSD с USB Flash |
[исправить] |
Иногда возникает необходимость создать установочный Flash-диск с FreeBSD,
но без переформатирования FAT-раздела на Flash, при сохранении размещенных там данных.
Загружаем с ftp.freebsd.org минимальный установочный образ 6.3-RELEASE-i386-bootonly.iso
ftp://ftp.freebsd.org/pub/FreeBSD/releases/i386/ISO-IMAGES/6.3/6.3-RELEASE-i386-bootonly.iso
Создаем на его основе ram-диск. Операции выполняются на FreeBSD системе,
при необходимости временно FreeBSD можно поставить в KVM, VmWare или VirtualBox.
Создаем образ RAM-диска размером чуть больше bootonly.iso:
dd if=/dev/zero of=boot.img bs=1k count=26000
Подключаем ram-диск:
mdconfig -a -t vnode -f boot.img -u 0
Устанавливаем загрузочный сектор и размечаем по умолчанию:
bsdlabel -w -B md0 auto
Создаем файловую систему:
newfs -m 0 md0a
Монтируем созданную ФС ram-диска:
mkdir /mnt/img
mount /dev/md0a /mnt/img
Монтируем iso-образ и переносим с него данные на ram-диск:
mkdir /mnt/iso
mdconfig -a -t vnode -f 6.3-RELEASE-i386-bootonly.iso -u 1
mount_cd9660 /dev/md1 /mnt/iso
cd /mnt/img/
cp -r /mnt/iso/* .
Размонтируем:
cd
umount /mnt/img /mnt/iso
mdconfig -d -u 0
mdconfig -d -u 1
Загружаем Linux, можно LiveCD.
Копируем boot.img на Flash диск.
Копируем на Flash файл memdisk из комплекта syslinux (http://syslinux.zytor.com).
Ставим syslinux на Flash (/dev/sdb1):
syslinux -s /dev/sdb1
Создаем в корне файл syslinux.cfg:
label freebsd
kernel /memdisk
append initrd=/boot.img harddisk
Если не грузится, ругаясь на MBR, заменяем MBR на содержимое файла mbr.bin из комплекта syslinux:
dd if=/dev/sdb of=mbr_backup.bin bs=1 count=512
cat mbr.bin > /dev/sdb
Проверить можно через QEMU:
qemu -hda /dev/sdb1 -std-vga
При установке выбираем метод получения установочных файлов по FTP или копируем их на Flash
(директорию 6.3-RELEASE из 6.3-RELEASE-i386-disc1.iso).
--------------------
В случае когда USB Flash не жалко отформатировать, можно можно создать
загрузочный
USB Flash следующим образом:
fdisk -BI /dev/da2
bsdlabel -w -B /dev/da2s1
newfs /dev/da2s1a
mount /dev/da2s1a /mnt
Копируем в /mnt содержимое содержимое 6.3-RELEASE-i386-bootonly.iso
--------------------
Установка загрузчика FreeBSD на Flash из Linux:
Делаем бэкап текущего MBR USB диска:
dd if=/dev/sdb of=mbr_sdb.bin bs=1 count=512
Берем boot0 из комплекта FreeBSD и копируем в него данные о таблицах разделов текущего диска:
dd if=mbr_sdb.bin of=boot0 bs=1 count=66 skip=446 seek=446
Копируем загрузчик в MBR USB диска:
dd if=boot0 of=/dev/sdb bs=1 count=512
Инструкцию по созданию установочного образа FreeBSD, загружаемого по сети
можно найти здесь http://wiki.opennet.ru/NetworkBoot
---------------------
Полезный скрипт для преобразования ISO в UFS-образ (http://docs.FreeBSD.org/cgi/mid.cgi?4420AF56.60106)
Запускается ./fbsd-install-iso2img.sh iso-path img-path
#!/bin/sh
# You can set some variables here. Edit them to fit your needs.
# Set serial variable to 0 if you don't want serial console at all,
# 1 if you want comconsole and 2 if you want comconsole and vidconsole
serial=3D0
set -u
if [ $# -lt 2 ]; then
echo "Usage: $0 source-iso-path output-img-path"
exit 1
fi
isoimage=3D$1; shift
imgoutfile=3D$1; shift
export tmpdir=3D$(mktemp -d -t fbsdmount)
# Temp file and directory to be used later
export tmpfile=3D$(mktemp -t bsdmount)
export isodev=3D$(mdconfig -a -t vnode -f ${isoimage})
echo "#### Building bootable UFS image ####"
ISOSIZE=3D$(du -k ${isoimage} | awk '{print $1}')
SECTS=3D$((($ISOSIZE + ($ISOSIZE/5))*2))
# Root partition size
echo "Initializing image..."
dd if=3D/dev/zero of=3D${imgoutfile} count=3D${SECTS}
ls -l ${imgoutfile}
export imgdev=3D$(mdconfig -a -t vnode -f ${imgoutfile})
bsdlabel -w -B ${imgdev}
newfs -O1 /dev/${imgdev}a
mkdir -p ${tmpdir}/iso ${tmpdir}/img
mount -t cd9660 /dev/${isodev} ${tmpdir}/iso
mount /dev/${imgdev}a ${tmpdir}/img
echo "Copying files to the image..."
( cd ${tmpdir}/iso && find . -print -depth | cpio -dump ${tmpdir}/img )
#bzcat ${tmpdir}/iso/dist/root.dist.bz2 | mtree -PUr -p ${tmpdir}/img 2>&=
1 > /dev/null
#echo "/dev/ufs/${UFS_LABEL} / ufs ro 1 1" > ${tmpdir}/img/etc/fstab
if [ ${serial} -eq 2 ]; then
echo "-D" > ${tmpdir}/img/boot.config
echo 'console=3D"comconsole, vidconsole"' >> ${tmpdir}/img/boot/l=
oader.conf
elif [ ${serial} -eq 1 ]; then
echo "-h" > ${tmpdir}/img/boot.config
echo 'console=3D"comconsole"' >> ${tmpdir}/img/boot/loader.conf
fi
cleanup() {
umount ${tmpdir}/iso
mdconfig -d -u ${isodev}
umount ${tmpdir}/img
mdconfig -d -u ${imgdev}
rm -rf ${tmpdir} ${tmpfile}
}
cleanup
ls -lh ${imgoutfile}
|
|
|
|
Раздел: Корень / Администратору / Система / FreeBSD специфика / Установка и апгрейд FreeBSD и приложений. |
1.1, Аноним (1), 22:02, 24/09/2008 [ответить]
| +/– |
Статья ни о чём. Давно есть скриптик fbsd-install-iso2img.sh , через который перегоняем исошник в имадж и через dd заливаем хоть на жёсткий диск, хоть на флешку.
| |
|
2.2, Vadim Timohin (?), 07:24, 25/09/2008 [^] [^^] [^^^] [ответить]
| +/– |
>Статья ни о чём. Давно есть скриптик fbsd-install-iso2img.sh , через который перегоняем
>исошник в имадж и через dd заливаем хоть на жёсткий диск,
>хоть на флешку.
ну почему же не очем, хорошая статья, есть скрипты а есть руки :) большая разница :)
| |
2.3, angra (ok), 09:37, 25/09/2008 [^] [^^] [^^^] [ответить]
| +/– |
Явный случай "Пастернака не читал, но осуждаю". Ведь если бы вы читали, то вряд ли пропустили бы эту строчку:
>Запускается ./fbsd-install-iso2img.sh iso-path img-path | |
|
3.4, Maxim Chirkov (ok), 11:58, 25/09/2008 [^] [^^] [^^^] [ответить]
| +/– |
>Явный случай "Пастернака не читал, но осуждаю". Ведь если бы вы читали,
>то вряд ли пропустили бы эту строчку:
>>Запускается ./fbsd-install-iso2img.sh iso-path img-path
Этот скрипт уже после комментария был добавлен.
| |
|
|
1.5, Аноним (5), 10:32, 26/09/2008 [ответить]
| +/– |
Супер, давно искал как можно превратить FAT-флешку в бутабельную :)
Спасибо!
| |
1.6, Yoda.33 (?), 17:04, 30/09/2010 [ответить]
| +/– |
Поправили бы скрипт fbsd-install-iso2img.sh, а то по всему инету он не рабочий, с ошибками. По тексту убрать все "3D".
| |
|