Страница 1 из 1

Загрузка FreeBSD-8.0 с usb flash

Добавлено: 2010-04-20 14:22:17
kima
Доброго времени суток!
Начитавшись статьи Morty Создание своего LiveCD (+клонирование системы), я решил попробывать слить дампы на флешку, ессно перед этим ее приготовив определенным образом!
Когда я попробовал с нее загрузиться появилась ошибка, что дескать рут не может смонтироваться т.к. отсутствует устройство!
Проблема в том, флешка определяется системой после того, как начинается монтирования корня. Я так понимаю что если выставить таймаут на монтирование, то все должно быть пучком? Тогда вопрос: а как это сделать?
Погуглив нашел вот такую статью, где интересен лишь кусочек:
PPS: энтузиастам которые пробуют запустить FreeBSD 8.0 с флешки(если это еще не починили) — пригодится вот такой dirty hack.

Код: Выделить всё

Index: sys/kern/vfs_mount.c
===================================================================
RCS file: /home/ncvs/src/sys/kern/vfs_mount.c,v
retrieving revision 1.308
diff -u -r1.308 vfs_mount.c
--- sys/kern/vfs_mount.c 5 Jun 2009 14:55:22 -0000 1.308
+++ sys/kern/vfs_mount.c 29 Sep 2009 17:08:25 -0000
@@ -1645,6 +1645,9 @@
options = NULL;
+ /* NASTY HACK: wait for USB sticks to appear */
+ pause("usbhack", hz * 10);
+
root_mount_prepare();
mount_zone = uma_zcreate("Mountpoints", sizeof(struct mount),
В новом USB стеке при загрузке ядра USB устройства не всегда определяются вовремя и возникает ошибка при монтировании разделов системы.
Данный хак выставляет в системе таймаут в 10 секунд для ожидания готовности USB накопителя.
Но я так понимаю что бы иметь возможность править этот файл, нужно собрать мир и ядро на флешку, а мне этого делать не оч хочется ( если же вердикт будет:" Без пересборки и не суйся!" то пересоберу, просто хочется обойтись без этой долгой и нудной операции!)

Вот кстати статейка как установить Ось на флешку ТЫЦ

Re: Загрузка FreeBSD-8.0 с usb flash

Добавлено: 2010-04-21 19:21:51
kima
В общем установка мира и ядра на флешку ситуацию не решила, скорее всего дела в маме...
Попробую найти другой комп и там запуститься...

Re: Загрузка FreeBSD-8.0 с usb flash

Добавлено: 2010-04-22 10:32:09
Morty
1. подкл флэшку
2. создаешь слайсы
3. форматишь + инсталишь лоадер
4. монтируешь в DESTDIR
5. инсталишь мир и ядро в DESTDIR
6. правишь fstab loader.conf rc.conf и пр по вкусу в DESTIDR
7(опционально). инсталишь порты/пакеты в DESTDIR; настраиваешь
---
8. таришь или дампишь DESTDIR (дабы не делать каждый раз 1-7) clean_image.file
9. заливаешь в DESTDIR свои скрипты и дампы которые будешь разворачивать

Re: Загрузка FreeBSD-8.0 с usb flash

Добавлено: 2010-04-22 14:43:16
kima
Собсно все это я проделывал, с разными вариациями. Но упирался всегда в одно и тоже, корень начинает монтироваться ДО того как флешка определяется в системе, соответственно корень не монтируется и система не бутится...(((

Re: Загрузка FreeBSD-8.0 с usb flash

Добавлено: 2010-04-22 21:50:02
Morty

Код: Выделить всё

#!/bin/sh
##
## 05/02/2010 Kostya
##
imgname="usb.img"
outfile="busb.img.bz2"
if [ $# -ge 1 ];
then echo "...thinking"
else
echo ""
echo "Type usbflash.sh makeimg  - for build image"
echo "Type usbflash.sh writeimg - for write to USB stick"
echo ""
exit 1
fi;

# 512mb image
mkimage() {
echo "-----> Build Image"
dd if=/dev/zero of="$imgname" bs=1m count=1 oseek=512 conv=sparse
mdconfig -a -t vnode -f $imgname -u 0
newfs -m 0 -o space -n /dev/md0
mount /dev/md0 /mnt
#
cd /usr/src
make -j8 buildworld && \
make -j8 buildkernel && \
make installworld DESTDIR=/mnt
make distribution DESTDIR=/mnt
make installkernel DESTDIR=/mnt
cd / && tar -cjf $outfile /mnt 
umount /mnt
mdconfig -d -u 0
}
##
writeimg() {
dd if=/dev/zero of=/dev/da0 bs=16k
fdisk -BI /dev/da0
disklabel -B -w /dev/da0s1
newfs -m 0 -o space -n /dev/da0s1a
mount -o noatime,async /dev/da0s1a /mnt
tar -xvjf ${outfile} -C /mnt/
cp -R /mnt/mnt/* /mnt/
chflags -R noschg /mnt/mnt/
rm -rf /mnt/mnt
cat > /mnt/boot/loader.conf << EOF
vfs.root.mountfrom="ufs:/dev/da0s1a"
vfs.root.mountfrom.options="rw"
EOF
cat > /mnt/etc/fstab << EOF
/da0/da0s1a / ufs rw 1 1
EOF
umount /mnt
}
# rewrite this IF or use one of function mkimage or writeimg
#if [ $1=="makeimg" ] 
#then
#mkimage
#else
writeimg
#fi
#fi
вот тебе реально работающий скрипт
проверенный на 8ой ветке
ЗЫ: местами конечно ужасно реализовано НО гг :-D не все сразу
у меня флешка грузиться которая создана этим скриптом

НО ты внимательно скрипт посм - тк не вчера дело было :pardon:

ЗЫЫ: монтируешь флэшку в /mnt/ и вперед

Re: Загрузка FreeBSD-8.0 с usb flash

Добавлено: 2010-06-22 17:49:55
Андрей74
kima писал(а):Доброго времени суток!
Начитавшись статьи Morty Создание своего LiveCD (+клонирование системы), я решил попробывать слить дампы на флешку, ессно перед этим ее приготовив определенным образом!
Когда я попробовал с нее загрузиться появилась ошибка, что дескать рут не может смонтироваться т.к. отсутствует устройство!
Проблема в том, флешка определяется системой после того, как начинается монтирования корня. Я так понимаю что если выставить таймаут на монтирование, то все должно быть пучком? Тогда вопрос: а как это сделать?
Погуглив нашел вот такую статью, где интересен лишь кусочек:
PPS: энтузиастам которые пробуют запустить FreeBSD 8.0 с флешки(если это еще не починили) — пригодится вот такой dirty hack.

Код: Выделить всё

Index: sys/kern/vfs_mount.c
===================================================================
RCS file: /home/ncvs/src/sys/kern/vfs_mount.c,v
retrieving revision 1.308
diff -u -r1.308 vfs_mount.c
--- sys/kern/vfs_mount.c 5 Jun 2009 14:55:22 -0000 1.308
+++ sys/kern/vfs_mount.c 29 Sep 2009 17:08:25 -0000
@@ -1645,6 +1645,9 @@
options = NULL;
+ /* NASTY HACK: wait for USB sticks to appear */
+ pause("usbhack", hz * 10);
+
root_mount_prepare();
mount_zone = uma_zcreate("Mountpoints", sizeof(struct mount),
В новом USB стеке при загрузке ядра USB устройства не всегда определяются вовремя и возникает ошибка при монтировании разделов системы.
Данный хак выставляет в системе таймаут в 10 секунд для ожидания готовности USB накопителя.
Но я так понимаю что бы иметь возможность править этот файл, нужно собрать мир и ядро на флешку, а мне этого делать не оч хочется ( если же вердикт будет:" Без пересборки и не суйся!" то пересоберу, просто хочется обойтись без этой долгой и нудной операции!)

Вот кстати статейка как установить Ось на флешку ТЫЦ
Я просто ядро собрал на другой машине и делов.