Установка профиля по умолчанию в Thunderbird

Devd работает ПЕРЕД дистанционным управлением и поэтому прежде devfs - это было тщательно выбрано его создателем - Вы видите его обоснование здесь: http://www.usenix.org/events/bsdcon03/tech/full_papers/losh/losh.pdf (Chapt. 7.2)

Devd работает полностью в пространстве пользователя, нет никакой проблемы с полномочиями пользователя root.

Если Вы не выбираете к sudo - который является тем, что Вы сделали.

Используйте devd.conf для устанавливания значения в пространстве пользователя. Протестируйте на свой флаг в devfs.

5
12.07.2014, 17:10
2 ответа

Если ваша основная проблема заключается в том, какой профиль будет использоваться при нажатии на ссылку mailto, то решение заключается в том, чтобы всегда запускать профиль по умолчанию нормально и запускать все остальные профили с помощью опции -no-remote.

Если вы запустите профиль с опцией -no-remote, то firefox не увидит, что он запущен. Firefox увидит только экземпляр по умолчанию (который был запущен без -no-remote)

Это все объясняется в этой MozzilaZine article

1
27.01.2020, 20:42

KVM является API ядра для виртуализации. Он не имеет отношения к последовательным портам . qemu - эмулятор компьютера (ПК и др.), который может использовать kvm для повышения производительности виртуализации. Он может эмулировать стандартный последовательный порт 8250 UART ( isa-serial ) или паравиртуализированный последовательный порт ( virtio-serial ).

В qemu вы определяете ваш компьютер с помощью аргументов командной строки, которые указывают, какое устройство добавить на ваш компьютер и к какому бэкэнд сопоставить эти устройства (например, эмулированный жесткий диск с файлом образа, сетевые адаптеры с коснуться устройства...).

Для последовательных портов обычно сопоставляется то, что qemu вызывает chardevs .

Существует множество возможных различных, обычно любых, которые могут отправлять и принимать байты, таких как каналы, сокеты, файловые дескрипторы, псевдотерминалы.

Например, при запуске qemu как

qemu ... -device isa-serial,chardev=c,id=s -chardev pty,id=c 

qemu выделяет псевдотерминал, сообщает, что при запуске stdout:

char device redirected to /dev/pts/18 (label c)

и сопоставляет его с новым последовательным портом , добавленным к виртуальной машине. При загрузке виртуальной машины Linux вы увидите в журналах ядра:

[    3.636092] Serial: 8250/16550 driver, 32 ports, IRQ sharing enabled
[    3.658666] 00:05: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A

И если вы напишете что-то на /dev/tтyS0 в гостевой системе, вы сможете прочитать его на /dev/pts/18 на хосте.

После запуска виртуальной машины qemu можно управлять ею с помощью интерфейсов монитора вызовов qemu. Существует два типа интерфейсов monitor :

  • Human monitor: shell-подобный CLI
  • Machine monitor: более удобный для машины интерфейс, реализующий текстовый (json) протокол, называемый qemu machine protocol (QMP).

Если ничего не указать и использовать консоль SDL по умолчанию, в консоли SDL появится монитор пользователя , нажав Ctrl + Alt + 2 .

Но вы также можете указать любой chardev бэкэнд (pty, socket, stdio...) для этого. Обычно я использую stdio там:

qemu ... -monitor stdio

Чтобы получить монитор на терминале, я запускаю qemu при запуске qemu для тестов.

В этом интерфейсе монитора можно выполнить команду info qtree для получения информации об устройствах вашей машины:

(qemu) info qtree
bus: main-system-bus
[...]
  dev: i440FX-pcihost, id ""
[...]
bus: pci.0
[...]
  dev: PIIX3, id ""
    class ISA bridge, addr 00:01.0, pci id 8086:7000 (sub 1af4:1100)
    bus: isa.0
      type ISA
      dev: isa-serial, id "s"
    index = 0 (0)
    iobase = 1016 (0x3f8)
    irq = 4 (0x4)
    chardev = "c"

Выше вы увидите устройство isa-serial , которое я создал ранее, и что оно соответствует "c" chardev .

Вы можете получить информацию из этого поля с помощью info chardev :

(qemu) info chardev
parallel0: filename=vc
c: filename=pty:/dev/pts/18
compat_monitor0: filename=stdio

Вы видите c сопоставления с /dev/pts/18 pty .

Эту информацию можно получить программным путем с помощью монитора QMP. При запуске виртуальной машины с помощью -qmp stdio можно передать команды

{"execute":"qmp_capabilities"} # enable commands
{"return": {}}   # return value

{"execute":"qom-list","arguments":{"path":"/machine/peripheral/s"}}
{"return": [{"name": "parent_bus", "type": "link<bus>"}, {"name": "wakeup", "type": "uint32"}, {"name": "chardev", "type": "str"}, {"name": "irq", "type": "uint32"}, {"name": "iobase", "type": "uint32"}, {"name": "index", "type": "uint32"}, {"name": "hotpluggable", "type": "bool"}, {"name": "realized", "type": "bool"}, {"name": "type", "type": "string"}]}

# query chardev for "s":
{"execute":"qom-get","arguments":{"path":"/machine/peripheral/s","property":"chardev"}}
{"return": "c"}

# query chardevs:
{"execute":"query-chardev"}
{"return": [{"filename": "vc", "label": "parallel0"}, {"filename": "pty:/dev/pts/18", "label": "c"}, {"filename": "stdio", "label": "compat_monitor0"}]}

(см., как эти qom-list и qom-get (qom standing for qemu object model) напоминают выполнение ls и cat в /sys на

Теперь ваш вопрос говорит о том, что вы не вызываете qemu напрямую вручную, а вместо этого используете libvirt . libvirt является одной из многих инфраструктур управления виртуализацией. Он может управлять qemu (с или без kvm), xen или virtualbox (по крайней мере) виртуальных машин.

Для виртуальных машин qemu при определении виртуальной машины в libvirt (с помощью virt-manager или других), которая будет преобразовываться в аргументы, передаваемые команде qemu, и libvirt будет обычно использовать qmp-монитор для управления виртуальной машиной после ее запуска.

Для домена libvirt можно получить текущую конфигурацию домена с помощью команды

virsh dumpxml the-domain

, которая выгружает конфигурационный элемент как XML. Извлечь информацию из этого можно с помощью xmllint или xmlstarlet или любого выбранного решения анализа XML.

$ virsh dumpxml domain | xmllint --xpath '//serial' -
<serial type="pty">
  <source path="/dev/pts/4"/>
  <target port="0"/>
  <alias name="serial0"/>
</serial><serial type="pty">
  <source path="/dev/pts/5"/>
  <target port="1"/>
  <alias name="serial1"/>
</serial><serial type="pty">
  <source path="/dev/pts/6"/>
  <target port="2"/>
  <alias name="serial2"/>
</serial>
$ virsh dumpxml domain |
  xmllint --xpath 'string(//serial[target/@port=0]/source/@path)' -
/dev/pts/4

Эквивалентные с xmlstarlet :

sudo virsh dumpxml domain | xmlstarlet sel -t -c '//serial'
sudo virsh dumpxml domain |
  xmlstarlet sel -t -v '//serial[target/@port=0]/source/@path'

Обратите внимание, что можно также передать команды в монитор QMP с помощью команды virsh qemu-monitor-command .

Например:

$ virsh qemu-monitor-command domain '{"execute":"qom-get","arguments":
{"path":"/machine/peripheral/serial0","property":"chardev"}}'
{"return":"charserial0","id":"libvirt-84"}
-121--70812-

Правила образца являются неявными правилами.

В Makefile не определены цели. Вы можете указать цель в командной строке: make something.markdown будет использовать рецепт для создания something.markdown из something.html .

Или можно добавить в Makefile правило, определяющее цели по умолчанию.

all: file1.markdown file2.markdown

Или с подстановочным знаком:

all: *.markdown

Если выполняется только make , первой целью первого правила является цель по умолчанию . Не требуется вызывать all .

Таким образом, целевые все имеют все файлы, которые требуется создать в качестве предпосылок, поэтому при создании всех все перечисленные файлы будут созданы.

-121--34486-

Насколько я знаю, вы можете изменить только StaresWeyLastProfile = 1 , заставляя Thunderbird спрашивать каждый раз при запуске.

Очевидно, что это не то, чего вы хотите, поэтому при запуске Thunderbird вам придется использовать опцию -P по умолчанию .

В моей системе $ (thunderbird) дает /usr/bin/thunderbird , который сам является ссылкой на ../lib/thunderbird/thunderbird.sh . Вы можете заменить ссылку небольшим исполняемым сценарием:

#!/bin/bash 
/usr/lib/thunderbird/thunderbird.sh -P default $*

, и ваш профиль с Name = default всегда запускается либо из командной строки, либо путем открытия через графический интерфейс пользователя (так как он должен называть этот исполняемый файл thunderbird ).

Я не уверен, что делает Thunderbird, когда вы указываете несколько профилей в командной строке и запускаете этот скрипт с thunderbird -P custom . Если по-прежнему используется профиль по умолчанию , можно переместить $ * в сценарии до -P .

1
27.01.2020, 20:42

Теги

Похожие вопросы