systemd: escreve um daemon de serviço para configurar swap e fs no zram

2

Adquiri recentemente um laptop com um ssd e para não pesar muito no ssd (que me disseram ter um número limitado de ciclos de gravação), decidi escrever um arquivo de unidade do systemd para configurar uma troca e um sistema de arquivos (para usar mais tarde com asd) respectivamente nos dispositivos zram0 e zram1. Eu não estou muito familiarizado com systemd e udev, então eu posso ter cometido um erro estúpido, mas não consegui encontrá-lo ... aqui estão meus arquivos: etc / udev / rules.d / 10-zram.rules:

 KERNEL=="zram0",SYMLINK+="zramswap" ,ATTR{disksize}="1G" ,ENV{SYSEMD_WANTS}+="zram-swap@%k.service"

 KERNEL=="zram1",SYMLINK+="zramfs",ATTR{disksize}="250m", ENV{SYSTEMD_WANTS}+="zram-fs@%k.service"

/etc/systemd/system/[email protected]

[Unit]
Description="Daemon that sets xfs on %i device"

BindsTo=dev-%i.swap

After=dev-%i.device
Requires=dev-%i.device

Before=dev-%i.swap
Wants=dev-%i.swap

[Service]
Type=oneshot
ExecStart="/usr/bin/mkswap /dev/%i"

zram-fs @ .service é praticamente o mesmo, exceto que usa /usr/bin/mkfs.xfs (porque eu li que o xfs era rápido para criar)

e, finalmente, o fim do meu fstab:

/dev/zram0      swap        swap    defaults    0 0
/dev/zram1      /media/asd  xfs     defaults    0 0

O problema é que o meu sistema não roda normalmente com esta configuração ... quando eu tento trocar e montar esses dois dispositivos, ele me diz que o swap e o fs não existem, e procurando no journalctl -xb, Ocorreu um erro ao tentar montar e trocar esses dois dispositivos pelo mesmo motivo. Mas quando eu olho em / sys, os tamanhos de dispositivos são os que eu configurei nas regras do udev, então eu acho que minhas regras são lidas e funcionam, o problema parece ser meus arquivos de serviço que não são executados e / ou não trabalho ...

    
por Nephanth 24.05.2015 / 19:48

1 resposta

1

Eu encontrei quais eram meus problemas ... o principal é que o zram não é por padrão handeled pelo systemd. Como conseqüência, não havia nenhuma unidade dev-zram0.device, então meus serviços falharam devido às dependências não satisfeitas. A solução foi adicionar

TAG+="systemd"

às minhas regras do udev

Houve outro pequeno erro que era a linha ExecStart no daemon não precisava de aspas duplas "e isso fazia com que falhassem ...

Obrigado de qualquer forma, se alguém tentou responder!

    
por 07.06.2015 / 15:30