TrueCrypt Autostart mount

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
swexx
Beiträge: 2
Registriert: 31.01.2013 15:35:00

TrueCrypt Autostart mount

Beitrag von swexx » 31.01.2013 16:08:22

hallo zusammen,

ich versuche seit 2 Tagen einen TrueCrypt Container auf einer USB Platte beim Starten mounten zu lassen.
Ich habe hier ein Raspberry PI und es läuft das Raspbmc drauf.

Das mount Script an sich läuft ohne Probleme.

Code: Alles auswählen

sudo truecrypt --keyfiles= --password=<pw> --protect-hidden=no -m=nokernelcrypto <path-to-container> <path-to-mount-directory>
Ich hatte viele Ansätze von /etc/init.d -> sudo update-rc.d <script> , damit es im default runlevel ausgeführt wird. Es wird aber immer an erster stelle S01xxx ausgeführt. Was anscheinend das Problem ist. Die Stelle manuell mit

Code: Alles auswählen

update-rc.d <script> defaults <zahl>
hat nicht funktioniert. Er setzt es immer auf die 01.
Den Code habe ich aus Frust gelöscht, kann ihn aus dem Kopf nicht mehr. Habe mich aber an sudo gehalten.

Nächste Idee war in rc.local ein Script ausführen lassen, das das Mount-Script mit 15 Sekunden (sleep 15) delay ausführt, damit die USB Platte lädt usw. Naja hat aber auch nicht funktioniert.
Ich weiß aber nicht an was es liegt. Ein normales Script ausführen lassen, das das Mount-Script mit 15 Sekunden (sleep 15) delay ausführt, funktioniert. Nur mit rc.local nicht.

Ich weiß echt nicht mehr weiter. Ich bin jetzt auch kein Experte, habe mir das auch in den 2 Tagen selbst beigebracht.

Nächstes wäre dann ein Truecrypt unmount Script beim herunterfahren ;)

Vielen Dank für die Hilfe.

Wenn ihr noch Infos braucht, sagt einfach Bescheid. Ich will das ding endlich hinbekommen.

Benutzeravatar
AndyJ9
Beiträge: 29
Registriert: 15.01.2013 16:39:54
Lizenz eigener Beiträge: MIT Lizenz
Kontaktdaten:

Re: TrueCrypt Autostart mount

Beitrag von AndyJ9 » 01.02.2013 10:33:32

Was hälts du davon udev zu benuzten.

Wenn der Container auf einem USB-Stick ist, erkennt "udev", wann der USB-Stick eingesteckt wird (oder vom System erkannt wird.
Dann erstellst du eine udev-Regel für genau diesen Stick.
In der Regel startest du dein script und benutzt deinen mount-Befehl.

swexx
Beiträge: 2
Registriert: 31.01.2013 15:35:00

Re: TrueCrypt Autostart mount

Beitrag von swexx » 01.02.2013 17:33:52

ok ich habe mich mal reingelesen und mit udev versucht, wenn die USB Platte angeschlossen wird, ein Script ausgeführt wird.
Wenn ich die Festplatte schon angeschlossen habe und dann boote, ist dann ACTION=="add" richtig?

Code: Alles auswählen

SUBSYSTEMS=="scsi",ACTION=="add",KERNEL=="sd?1",SYSFS{vendor}=="ST2000DM",NAME+="Absolut2000",RUN+="/mnt/TC-mount"

Code: Alles auswählen

xbian@xbian:/lib/udev/rules.d# cat /mnt/TC-mount
#!/bin/sh

truecrypt --keyfiles= --password=<pw> --protect-hidden=no -m=nokernelcrypto /media/<path>/Volume.abc /mnt/<path>/
Über die fstab wird das Volumen in /media/<path> gemountet.

U.a. weiß ich nich, ob SUBSYSTEMS richtig ist, da ich nicht genau weiß, welche info ich nehmen soll:

Code: Alles auswählen

 
xbian@xbian:/lib/udev/rules.d# sudo udevadm info --query=all --attribute-walk --name=/dev/sdb
looking at device '/devices/platform/bcm2708_usb/usb1/1-1/1-1.2/1-1.2:1.0/host1/target1:0:0/1:0:0:0/block/sdb':
    KERNEL=="sdb"
    SUBSYSTEM=="block"
    DRIVER==""
    ATTR{ro}=="0"
    ATTR{size}=="3907029168"
    ATTR{stat}=="    1373   119699   124040     5680        0        0        0        0        0     3840     5600"
    ATTR{range}=="16"
    ATTR{discard_alignment}=="0"
    ATTR{events}==""
    ATTR{ext_range}=="256"
    ATTR{events_poll_msecs}=="-1"
    ATTR{alignment_offset}=="0"
    ATTR{inflight}=="       0        0"
    ATTR{removable}=="0"
    ATTR{capability}=="50"
    ATTR{events_async}==""

  looking at parent device '/devices/platform/bcm2708_usb/usb1/1-1/1-1.2/1-1.2:1.0/host1/target1:0:0/1:0:0:0':
    KERNELS=="1:0:0:0"
    SUBSYSTEMS=="scsi"
    DRIVERS=="sd"
    ATTRS{rev}=="    "
    ATTRS{type}=="0"
    ATTRS{scsi_level}=="3"
    ATTRS{model}=="001-9YN164      "
    ATTRS{state}=="running"
    ATTRS{queue_type}=="none"
    ATTRS{iodone_cnt}=="0x58b"
    ATTRS{iorequest_cnt}=="0x58b"
    ATTRS{timeout}=="30"
    ATTRS{evt_media_change}=="0"
    ATTRS{max_sectors}=="240"
    ATTRS{ioerr_cnt}=="0x1"
    ATTRS{queue_depth}=="1"
    ATTRS{vendor}=="ST2000DM"
    ATTRS{device_blocked}=="0"
    ATTRS{iocounterbits}=="32"

  looking at parent device '/devices/platform/bcm2708_usb/usb1/1-1/1-1.2/1-1.2:1.0/host1/target1:0:0':
    KERNELS=="target1:0:0"
    SUBSYSTEMS=="scsi"
    DRIVERS==""

  looking at parent device '/devices/platform/bcm2708_usb/usb1/1-1/1-1.2/1-1.2:1.0/host1':
    KERNELS=="host1"
    SUBSYSTEMS=="scsi"
    DRIVERS==""

  looking at parent device '/devices/platform/bcm2708_usb/usb1/1-1/1-1.2/1-1.2:1.0':
    KERNELS=="1-1.2:1.0"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb-storage"
    ATTRS{bInterfaceClass}=="08"
    ATTRS{bInterfaceSubClass}=="06"
    ATTRS{bInterfaceProtocol}=="50"
    ATTRS{bNumEndpoints}=="02"
    ATTRS{supports_autosuspend}=="1"
    ATTRS{bAlternateSetting}==" 0"
    ATTRS{bInterfaceNumber}=="00"
    ATTRS{interface}=="MSC Bulk-Only Transfer"

  looking at parent device '/devices/platform/bcm2708_usb/usb1/1-1/1-1.2':
    KERNELS=="1-1.2"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{devpath}=="1.2"
    ATTRS{idVendor}=="152d"
    ATTRS{speed}=="480"
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{busnum}=="1"
    ATTRS{devnum}=="6"
    ATTRS{configuration}=="USB Mass Storage"
    ATTRS{bMaxPower}=="  2mA"
    ATTRS{authorized}=="1"
    ATTRS{bmAttributes}=="c0"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{maxchild}=="0"
    ATTRS{bcdDevice}=="0100"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{quirks}=="0x0"
    ATTRS{serial}=="2401FFFFFFFF"
    ATTRS{version}==" 2.00"
    ATTRS{urbnum}=="5621"
    ATTRS{ltm_capable}=="no"
    ATTRS{manufacturer}=="JMicron"
    ATTRS{removable}=="removable"
    ATTRS{idProduct}=="2329"
    ATTRS{bDeviceClass}=="00"
    ATTRS{product}=="USB to ATA/ATAPI Bridge"

  looking at parent device '/devices/platform/bcm2708_usb/usb1/1-1':
    KERNELS=="1-1"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="02"
    ATTRS{devpath}=="1"
    ATTRS{idVendor}=="0424"
    ATTRS{speed}=="480"
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{busnum}=="1"
    ATTRS{devnum}=="2"
    ATTRS{configuration}==""
    ATTRS{bMaxPower}=="  2mA"
    ATTRS{authorized}=="1"
    ATTRS{bmAttributes}=="e0"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{maxchild}=="3"
    ATTRS{bcdDevice}=="0200"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{quirks}=="0x0"
    ATTRS{version}==" 2.00"
    ATTRS{urbnum}=="68"
    ATTRS{ltm_capable}=="no"
    ATTRS{removable}=="unknown"
    ATTRS{idProduct}=="9512"
    ATTRS{bDeviceClass}=="09"

  looking at parent device '/devices/platform/bcm2708_usb/usb1':
    KERNELS=="usb1"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="01"
    ATTRS{devpath}=="0"
    ATTRS{idVendor}=="1d6b"
    ATTRS{speed}=="480"
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{authorized_default}=="1"
    ATTRS{busnum}=="1"
    ATTRS{devnum}=="1"
    ATTRS{configuration}==""
    ATTRS{bMaxPower}=="  0mA"
    ATTRS{authorized}=="1"
    ATTRS{bmAttributes}=="e0"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{maxchild}=="1"
    ATTRS{bcdDevice}=="0306"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{quirks}=="0x0"
    ATTRS{serial}=="bcm2708_usb"
    ATTRS{version}==" 2.00"
    ATTRS{urbnum}=="25"
    ATTRS{ltm_capable}=="no"
    ATTRS{manufacturer}=="Linux 3.6.11+ dwc_otg_hcd"
    ATTRS{removable}=="unknown"
    ATTRS{idProduct}=="0002"
    ATTRS{bDeviceClass}=="09"
    ATTRS{product}=="DWC OTG Controller"

  looking at parent device '/devices/platform/bcm2708_usb':
    KERNELS=="bcm2708_usb"
    SUBSYSTEMS=="platform"
    DRIVERS=="dwc_otg"
    ATTRS{hnp}=="HstNegScs = 0x0"
    ATTRS{srp}=="SesReqScs = 0x1"
    ATTRS{regvalue}=="invalid offset"
    ATTRS{hsic_connect}=="HSIC Connect = 0x1"
    ATTRS{guid}=="GUID = 0x2708a000"
    ATTRS{mode}=="Mode = 0x1"
    ATTRS{srpcapable}=="SRPCapable = 0x1"
    ATTRS{regdump}=="Register Dump"
    ATTRS{gpvndctl}=="GPVNDCTL = 0x00000000"
    ATTRS{ggpio}=="GGPIO = 0x00000000"
    ATTRS{hprt0}=="HPRT0 = 0x00001005"
    ATTRS{wr_reg_test}=="Time to write GNPTXFSIZ reg 10000000 times: 600 msecs (60 jiffies)"
    ATTRS{hcd_frrem}=="HCD Dump Frame Remaining"
    ATTRS{mode_ch_tim_en}=="Mode Change Ready Timer Enable = 0x0"
    ATTRS{gnptxfsiz}=="GNPTXFSIZ = 0x01000306"
    ATTRS{remote_wakeup}=="Remote Wakeup Sig = 0 Enabled = 0 LPM Remote Wakeup = 0"
    ATTRS{busconnected}=="Bus Connected = 0x1"
    ATTRS{hcddump}=="HCD Dump"
    ATTRS{gotgctl}=="GOTGCTL = 0x001c0001"

Ich verliere langsam den Überblick.

Vielen Dank :)

Benutzeravatar
AndyJ9
Beiträge: 29
Registriert: 15.01.2013 16:39:54
Lizenz eigener Beiträge: MIT Lizenz
Kontaktdaten:

Re: TrueCrypt Autostart mount

Beitrag von AndyJ9 » 05.02.2013 16:29:43

swexx hat geschrieben: U.a. weiß ich nich, ob SUBSYSTEMS richtig ist, da ich nicht genau weiß, welche info ich nehmen soll:

Code: Alles auswählen

 
  looking at parent device '/devices/platform/bcm2708_usb/usb1/1-1/1-1.2':
    KERNELS=="1-1.2"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{devpath}=="1.2"
    ATTRS{idVendor}=="152d"
    ATTRS{speed}=="480"
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{busnum}=="1"
    ATTRS{devnum}=="6"
    ATTRS{configuration}=="USB Mass Storage"
    ATTRS{bMaxPower}=="  2mA"
    ATTRS{authorized}=="1"
    ATTRS{bmAttributes}=="c0"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{maxchild}=="0"
    ATTRS{bcdDevice}=="0100"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{quirks}=="0x0"
    ATTRS{serial}=="2401FFFFFFFF"
    ATTRS{version}==" 2.00"
    ATTRS{urbnum}=="5621"
    ATTRS{ltm_capable}=="no"
    ATTRS{manufacturer}=="JMicron"
    ATTRS{removable}=="removable"
    ATTRS{idProduct}=="2329"
    ATTRS{bDeviceClass}=="00"
    ATTRS{product}=="USB to ATA/ATAPI Bridge"
Ich denke dieser Eintrag sollte dein USB-Stick sein. Das Subsystem "SCSI" sollte eher der USB-Controller oder USB-Reader sein, nicht der Stick selber.

Du kannst den Stick jetzt am besten via Serial-Number identifizieren (es gibt auch viele andere Wege, hier Verweise ich wieder auf "udev". -> Reinlesen).
Ich empfehle Dir folgende udev Regel zu testen und dann mal eine Rückmeldung zu geben, was passiert:

Code: Alles auswählen

SUBSYSTEMS=="usb", KERNEL=="sd?1",ATTRS{serial}=="2401FFFFFFFF",SYMLINK+="USB-Stick-Truecrypt", RUN+="/mnt/TC-mount"
Damit sollte der USB Stick, sobald er erkannt wird (egal ob beim Booten schon drin oder nicht) als "/dev/USB-Stick-Truecrypt" eingebunden werden und dann dein Skript ausgeführt werden.

Antworten