|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Eugene Grosbein 2:5006/1 27 Nov 2002 22:43:02 To : Sergey Solyanik Subject : Re: минифpю бы... :-) -------------------------------------------------------------------------------- SS>> А на веник ее записать так же как на дискету. Какая разница SS>> собственно? dd if=picobsd.bin of=/dev/ad0c или типа того ;) >> :)))))))))))))))) >> скорее всего это не сработает. разница в формате загрузочных секторов fd0 и SS> ad0 >> :))) >> так что... SS> ?! Hу это вы того... Попробуйте ;) SS> А потом заодно и про форматы загрузочных секторов почитайте ;) Угу. И, кстати, вот скриптик dddisk для создания образа небольшого HDD в файле. Если запустить dddisk -c vn0 file.img 500, создаст образ загрузочного диска на 500M в файле file.img. После этого можно файл подмонтировать: vnconfig -c -s labels /var/vn0 file.img && mount /dev/vn0a /mnt/tmp Потом просто скопировать в /mnt/tmp дерево файлов, отмонтировать и писать dd'шкой в /dev/ad0. Будет грузиться и работать. Образ создается dangerously dedicated, дописывается /etc/disktab. Кроме того, образ можно подсунуть bochs и он его загрузит. Если запустить просто dddisk 500, то ничего никуда не пишет, никого вообще не трогает и только выводит disktab entry для такого диска. Скрипт писался на скорую руку, так что может быть неоптимальным и не учитывать краевых условий (больших дисков и пр.), но для <32Gb работать должен. Знатокам disklabel: какое ограничение на d_ncylinders? #!/bin/sh -e dte() { cat <<EOF $disktabname:\\ ty=winchester:dt=ESDI:ns#$secpercyl:nt#$ntracks:nc#$ncylinders:se#$secsize:\\ :pa#$secperunit:oa#0:ba#8192:fa#1024:ta=4.2BSD:\\ :pc#$secperunit:oc#0:bc#8192:fc#1024:tc=unused EOF } create=no if [ "$1" = "-c" -a "$4" != '' ]; then create=yes shift vn="$1" shift file="$1" shift w_size="$1" elif [ $# = 1 ]; then w_size="$1" else echo "Usage (size in megabytes): $0 [-c vnX file] size" exit 1 fi ntracks=16 secpercyl=63 secsize=512 ncylinders=$(($w_size*1024*1024/$ntracks/$secpercyl/$secsize)) a_size=$(($ncylinders*$secsize*$secpercyl*$ntracks)) disktabname=disk$(($a_size/1024/1024)) secperunit=$(($ncylinders*$ntracks*$secpercyl)) disktab=/etc/disktab case "$vn" in /*) ;; *) vn="/dev/$vn" ;; esac if [ $create = yes ]; then if grep -q "^$disktabname:" $disktab; then echo "WARNING: $disktabname already exists in $disktab, press Ctrl-C now to abort" sleep 5 else dte >> $disktab fi dd if=/dev/zero bs=512 count=$secperunit of="$file" vnconfig -c -s labels "$vn" "$file" disklabel -Bwr "$vn"c $disktabname newfs "$vn"a vnconfig -u "$vn" else echo $disktab entry: dte fi #E_O_F Eugene --- slrn/0.9.7.4 (FreeBSD) * Origin: Svyaz Service JSC (2:5006/1@fidonet) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/886946abfa88.html, оценка из 5, голосов 10
|