# [solved] vgscan und lvchange not found (busybox + lvm)

## Kutus

Ich habe mein System gestern neu aufgesetzt und wollte ein neues Setup ausprobieren. Ich nutze ein verschlüsseltes LVM mit busybox und eine eigene Initrd. Habe mich dabei ans Wiki gehalten, busybox, cryptsetup und lvm2 static gebaut und die binaries in meinen Initrd-Ordner kopiert, mit:

```

cp --archive /bin/busybox /usr/src/initramfs/bin/busybox

cp --archive /sbin/cryptsetup /usr/src/initramfs/sbin/cryptsetup

cp --archive /sbin/lvm /usr/src/initramfs/sbin/lvm

```

Meine init läuft bis zum Befehl cryptsetup luksOpen rund aber sobald ich mein PW eingegeben habe und die Befehle vgscan und vgchange benötige, krieg ich ein "commnand not found" zurück. Daraufhin habe ich vgscan und vgchange aus /sbin in meinen Initrd-Ordner kopiert. Allerdings scheinen das nur Verküpfungen zu sein, denn bei einem ls -la /sbin steht bei vgscan und vgchange -> lvm.

Im Wiki wird noch auf eine /sbin/lvm.static verwiesen, wo genau ist da der Unterschied zwischen /sbin/lvm? Muss ich beide binaries in den Initrd-Ordner kopieren?

https://wiki.gentoo.org/wiki/Custom_Initramfs#LVMLast edited by Kutus on Thu Jul 04, 2019 1:52 pm; edited 1 time in total

----------

## Max Steel

statt vgchange, lvscan und co als link vorzuhalten kannst du auch alles über lvm starten. z.B. lvm[.static] vgscan

Tut in der init-Phase nicht wirklich weh. Aber ja die ganzen lvm Tools sind subcommands welche mit ihrem Link als Namen direkt aufgerufen werden können. Dazu einfach mal ein lvm -h eingeben um dir das anzuschauen.

Also entweder lvm <subcommand> eingeben. Oder einfach einen ln -snf ausführen. (z.B. in einer while schleife während der initrd erstellung). Wichtig ist nur das die Links auch auf die binary zeigen und dass du lvm.static (in deinem Fall) kopierst.

Der Unterschied zwischen lvm und lvm.static ist dass lvm.static ein statisches binary (für den Use in der initrd) ist, und lvm die dynamisch verlinkte Soße ist. also trotz dass du static als USE-Flag aktivierst werden beide Varianten gebaut, musst nur drauf achten was du kopierst.

----------

## Kutus

Okay, dann habe ich wohl zuvor die falsche Binary kopiert. Ich würde gerne diese Initrd benutzen, nur ist mir aufgefallen, dass da die Befehle vgscan und vgchange direkt aufgerufen werden, also ohne ein lvm.static voranzustellen.

```

#!/bin/busybox sh

rescue_shell() {

    echo "Something went wrong. Dropping you to a shell."

    exec /bin/sh

}

mount -t devtmpfs none /dev

# Mount the /proc and /sys filesystems.

mount -v -t proc none /proc

mount -v -t sysfs none /sys

busybox --install -s

loadkeys be-latin1

# Do your stuff here.

cryptsetup -d - luksOpen /dev/sda vg0

vgscan && vgchange -ay vg0

# Mount the root filesystem.

mount -v -o ro /dev/mapper/vg0-gentoo /mnt/root || rescue_shell

# Clean up.

umount /proc

umount /sys

umount /dev

# Boot the real thing.

exec switch_root /mnt/root /sbin/init ${CMDLINE} 

```

Vermute ich richtig, dass der Befehl busybox --install -s die nötigen Verlinkungen automatisch erstellt? Ich hab schon in der man-Page von Busybox geguckt, aber da stand nicht, wofür die Switches --install und -s gut sind.

----------

## Max Steel

busybox --install -s installiert aber nur die Links für busybox, also shell, cd, und so weiter.

für lvm kannst du das einfach vor die Kommandos davorstellen  :Wink: 

also lvm.static vgscan (z.B.)

----------

## Kutus

 *Max Steel wrote:*   

> busybox --install -s installiert aber nur die Links für busybox, also shell, cd, und so weiter.
> 
> für lvm kannst du das einfach vor die Kommandos davorstellen 

 

Ah, verstehe. Vielen Dank, hast mir sehr geholfen.   :Very Happy: 

----------

## Max Steel

Wenn dein Problem behoben ist, denke bitte daran den Titel von deinem Opener-Post zu bearbeiten und [gelöst] oder [solved] reinzuschreiben  :Wink: 

----------

