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

geom -> прямой доступ к девайсу...

Добавлено: 2009-08-27 15:23:27
dekloper
вот хотел кой чего поменять в бут-секторе

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

dd if=/tmp/ad4s2 of=/dev/ad4s2 count=1
dd: /dev/ad4s2: Operation not permitted
есть какая-нить сисцтлка на енту тему...?

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

sysctl -a | grep geom
kern.geom.collectstats: 1
kern.geom.debugflags: 16
kern.geom.label.debug: 0
kern.geom.gate.debug: 0
debug.sizeof.g_geom: 68
плз, проясните ситуацию...
зы. с2 в данном случае фряшный слайс

Re: geom -> прямой доступ к девайсу...

Добавлено: 2009-08-27 19:05:51
Alex Keda
а в мане чё

Re: geom -> прямой доступ к девайсу...

Добавлено: 2009-08-27 19:14:39
Гость
если не найдешь, то смотри в
geom(4) писал(а):
  • DIAGNOSTICS
    • Several flags are provided for tracing GEOM operations and unlocking pro?
      tection mechanisms via the kern.geom.debugflags sysctl. All of these
      flags are off by default, and great care should be taken in turning them
      on.

      0x10 (allow foot shooting)
      • Allow writing to Rank 1 providers. This would, for example,
        allow the super?user to overwrite the MBR on the root disk or
        write random sectors elsewhere to a mounted disk. The implica?
        tions are obvious.

Re: geom -> прямой доступ к девайсу...

Добавлено: 2009-08-27 19:44:02
dekloper
lissyara писал(а):а в мане чё
касательно слайсов - ничего не разглядел..

про дебажные флаги я в курсе..
kern.geom.debugflags: 16
но это снимает проблему только с мастербут..

интересно назначение других переменных по фильтру жеом..

Re: geom -> прямой доступ к девайсу...

Добавлено: 2009-08-27 22:33:53
Гость
покажи содержимое kern.geom.confxml

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

$ sysctl -b kern.geom.confxml
и кусок лога после "Operation not permitted" с помощью флага 0x04 (G_T_ACCESS). Что-то вроде

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

g_dev_open(ada1, 1027, 8192, 0xffffff005a2f1390)
g_access(0xffffff00051ae980(ada1), 1, 1, 0)
open delta:[r1w1e0] old:[r0w0e0] provider:[r2w2e5] 0xffffff0005116e00(ada1)
g_dev_open(ada1, 1026, 8192, 0xffffff005a2f1390)
g_access(0xffffff00051ae980(ada1), 0, 1, 0)
open delta:[r0w1e0] old:[r0w0e0] provider:[r2w2e5] 0xffffff0005116e00(ada1)
например, в моем .confxml 0xffffff0005116e00 используется PART классом, кой разбивает ada1 на ada1p1, ada1p2,... ada1pN.

Re: geom -> прямой доступ к девайсу...

Добавлено: 2009-08-28 8:32:00
dekloper
уже интересней.. :cz2:
Гость писал(а):покажи содержимое kern.geom.confxml

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

Aug 28 12:09:42 kaktus kernel: g_dev_open(ad4s2, 1027, 8192, 0xc4f78b40)
Aug 28 12:09:42 kaktus kernel: g_access(0xc4a0db00(ad4s2), 1, 1, 0)
Aug 28 12:09:42 kaktus kernel: open delta:[r1w1e0] old:[r0w0e0] provider:[r6w6e11] 0xc47d3e80(ad4s2)
Aug 28 12:09:42 kaktus kernel: g_dev_open(ad4s2, 1026, 8192, 0xc4f78b40)
Aug 28 12:09:42 kaktus kernel: g_access(0xc4a0db00(ad4s2), 0, 1, 0)
Aug 28 12:09:42 kaktus kernel: open delta:[r0w1e0] old:[r0w0e0] provider:[r6w6e11] 0xc47d3e80(ad4s2)
Гость писал(а):в моем .confxml

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

<geom id="0xc4aa6980">
      <class ref="0xc0d527c0"/>
      <name>ad4s2</name>
      <rank>3</rank>
        <consumer id="0xc4a0db00">
          <geom ref="0xc4aa6980"/>
          <provider ref="0xc47d3e80"/>
          <mode>r0w0e0</mode>
        </consumer>
    </geom>
и чобы енто значило...? есть какинить даташиты по теме..? :bn:

Re: geom -> прямой доступ к девайсу...

Добавлено: 2009-08-28 13:10:10
Гость
dekloper писал(а):и чобы енто значило...? есть какинить даташиты по теме..? :bn:
в том обрывке, что ты дал - ничего. Тебе нужно найти какой класс использует ad4s2 и ставит палки в колеса при попытке прямого доступа к провайдеру (полагаю BSD, кой используется bsdlabel(8)). Выкладывай либо полностью xml, либо строй граф с помощью graphics/graphviz и находи сам.

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

$ sysctl -b kern.geom.confdot | dot -Tpng >geom_conf.png
$ gimp geom_conf.png
Если ты копируешь слайсы по dd(1), то тебе сначала надо убить существующую разметку BSD, чтобы всякие ad4s1a, ad4s1b,... ad4s1N поисчезали из /dev. Потому что в твоем образе уже есть разметка.
Ну или ты можешь добавить в ядро `nooption GEOM_BSD', чтобы BSD класс не пробовал устройства и не ставил палки в колеса на время копирования образа на ad4s1.

Re: geom -> прямой доступ к девайсу...

Добавлено: 2009-08-28 13:11:35
Гость
Гость писал(а):копирования образа на ad4s1.
пардон, я везде имел в виду ad4s2.

Re: geom -> прямой доступ к девайсу...

Добавлено: 2009-08-28 13:15:24
Гость
но если тебе нужно просто записать загрузочный код, то используй опцию `-b' у bsdlabel или fdisk в зависимости от того есть ли у тебя BSD разделы на ad4s2 или нет.

Re: geom -> прямой доступ к девайсу...

Добавлено: 2009-08-28 14:49:42
dekloper
Гость писал(а):Если ты копируешь слайсы по dd(1), то тебе сначала надо убить существующую разметку BSD, чтобы всякие ad4s1a, ad4s1b,... ad4s1N поисчезали из /dev. Потому что в твоем образе уже есть разметка.
Ну или ты можешь добавить в ядро `nooption GEOM_BSD', чтобы BSD класс не пробовал устройства и не ставил палки в колеса на время копирования образа на ad4s1.
нипанял :bn:
как я убъю разметку, если я это делаю с живой фри?
вот картинка

Re: geom -> прямой доступ к девайсу...

Добавлено: 2009-08-28 16:16:15
Гость
судя по тому, что у тебя слайсами заведует GEOM_PART_(MBR|BSD) (а не GEOM_(MBR|BSD)) у тя 8-ка что ль? из доступных
  • ad4s2a (ffs)
    ad4s2b (swap)
    ad4s2d (ffs)
    ad4s2e (ffs)
    ad4s2f (ffs)
    ad4s2g (ffs)
какая-либо примонтирована? т.е. числиться ли в выводе mount(8) без аргументов? Если да, то это объясняет "Operation not permitted". Используй gpart bootcode для записи загрузочного кода.

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

$ dd if=/tmp/ad4s2 count=1 of=/tmp/blah
$ gpart bootcode -b /tmp/blah ad4s2

Re: geom -> прямой доступ к девайсу...

Добавлено: 2009-08-31 9:01:51
dekloper
ога, пасибо за наводку :drinks:
Гость писал(а):заведует GEOM_PART_(MBR|BSD) (а не GEOM_(MBR|BSD))
все замонтировано "стандартно" / /var /tmp /usr....
ОС - 8-ка (правда, теперь уже 9-ка :pardon: )

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

$ dd if=/tmp/ad4s2 count=1 of=/tmp/blah
$ gpart bootcode -b /tmp/blah ad4s2
короче, для дд путь закрыт...?
или может помочь одна из опций

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

SYNOPSIS
     To add support for the disk partitioning GEOM class, place one or more of
     the following lines in your kernel configuration file:

           options GEOM_PART_APM
           options GEOM_PART_BSD
           options GEOM_PART_GPT
           options GEOM_PART_MBR
           options GEOM_PART_PC98
           options GEOM_PART_VTOC8
хотелось бы иметь "сырой" доступ к произвольной области накопителя :st:

Re: geom -> прямой доступ к девайсу...

Добавлено: 2009-08-31 14:38:45
Гость
dekloper писал(а):хотелось бы иметь "сырой" доступ к произвольной области накопителя :st:
у тебя есть сырой доступ - ad4.
ad4s2 - это уже не сырой, а через GEOM_PART_MBR.

Попробуй убрать проверку на rank из sys/geom/geom_subr.c

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

        /* If foot-shooting is enabled, any open on rank#1 is OK */
        if ((g_debugflags & 16) && pp->geom->rank == 1)
                ;
просто если ты сам посмотришь на свою картинку, то там у ad4s2 rank#3. rank#1 там только у сырого провайдера ad4.

Re: geom -> прямой доступ к девайсу...

Добавлено: 2009-09-02 10:47:47
dekloper
Гость писал(а):Попробуй убрать проверку на rank
ога, пасиба, пропатчил, все пишется... :drinks:
тока вот чем чреват отказ от проверки ранга? не паламается ли процесс "отрыва" поставщика?

Re: geom -> прямой доступ к девайсу...

Добавлено: 2009-09-02 15:26:37
Гость
да большой разницы нет как отстреливать себе ногу. Убить BSD-таблицу можно как через ad4, так и через ad4s2. Просто через ad4s2 ты не можешь убить MBR-таблицу, она там просто не видна из-за offset'ов. А так, для безопасной записи загрузочного кода есть gpart(8) и опции `-b' и `-p'. Пользуйся ими, если не хочешь стать инвали^W^W потерять разделы.

Re: geom -> прямой доступ к девайсу...

Добавлено: 2009-09-02 17:41:19
dekloper
Гость писал(а):да большой разницы нет как отстреливать себе ногу.
:-D

я вот не пойму, как происходит проверка буткода ебр в sys/geom/part/g_part.c
решить бы ещщо беду...

зы. приатно, шо не фсе "гости" - злые "пингвины"... :smile:
зы1. блин, жеом-великая штука... и пингвинячий лвм уж нарисовался..