Exemplos de código estão no final deste post . Nowdays systemd lê fstab e depois tenta montar o fs em paralelo. Os scripts de montagem padrão systemd são criados no momento da inicialização e você os encontra em
'run/systemd/generator'
Você pode tentar usar o parâmetro noauto no fstab, que monta o fs somente quando é acessado. Que pode ter sideffcts para que você, em alguns casos, tente acessar o ponto de montagem duas vezes antes de ser ativado.
Talvez haja a possibilidade de dar ao programa que acessa o ponto de montagem um atraso. Realmente - não sei se isso é verdade. No entanto, a outra solução é criar um script de inicialização do systemd onde você substitui a leitura do fstab. Isso pode ser feito de duas maneiras, seja pelo comando systemd para ler um arquivo rc.local no qual você especifica a opção de montagem, ou (suponho) de maneira mais correta - escreve scripts apenas para o systemd.
Eu dou exemplos ambos são dos meus próprios scripts de montagem que eu descobri em outros exemplos.
Mais tarde, editarei este post para adicionar links de onde gostei dos recursos que usei que me ajudaram a criar esses scripts. Ambos os exemplos precisam de dois arquivos. RENÚNCIA DE RESPONSABILIDADE Não afirmo que o mountpoits é o correto seguindo os padrões. Por exemplo, eu montei uma pasta no diretório raiz. São apenas minhas próprias tentativas enquanto ainda sou inexperiente em linux e faço minhas próprias coisas do meu próprio jeito no meu próprio sistema testbench. É um trabalho em andamento e por enquanto, bastante sloopy feito. Use os exemplos apenas como referência e tente ser mais rígido nos padrões do que eu. Além disso, suponho que alguém poderia melhorar esses arquivos de várias maneiras. Comentários e sugestões são muito apreciados.
1. use o rc-local
#This file should be named /etc/systemd/system/rc-local.service
[Unit]
Description=/etc/rc.local Compatibility
ConditionFileIsExecutable=/usr/local/sbin/rc.local
[Service]
Type=oneshot
ExecStart=/usr/local/sbin/rc.local
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99
[Install]
WantedBy=multi-user.target
.
#Local multi-user startup script.
#this file should be named as /usr/local/sbin/rc.local and have the executable attribute set.
#!/bin/sh
mount -L BIGDATA /BIGDATA
#2do, If LABEL not found, Add failback to search for UUID
LBL=$(blkid -s LABEL $(mount | grep " / ") | cut -d "=" -f 2-2 | tr -d '"')
mount -t aufs -o dirs=/BIGDATA/mountslinks/dist-global_rw/newfiles_rw/home=rw:/BIGDATA/mountslinks/dist-global_rw/global_rw/home=rw:/BIGDATA/mountslinks/dist-local_rw/"$LBL"/home=rw none /home
mount -t aufs -o dirs=/BIGDATA/mountslinks/dist-global_rw/newfiles_rw/root=rw:/BIGDATA/mountslinks/dist-global_rw/global_rw/root=rw:/BIGDATA/mountslinks/dist-local_rw/"$LBL"/root=rw none /root
2. Use apenas o systemd (mudei para este após algumas reinicializações. Não porque o primeiro não funcionou - na verdade, funciona bem (no meu sistema) - mais porque Em primeiro lugar, queria também aprender esta abordagem e também acho que esta é mais à prova do futuro.
#this one is an edited version of the one Automatically generated by systemd-fstab-generator
[Unit]
Before=local-fs.target
[Mount]
What=/dev/disk/by-label/BIGDATA
Where=/BIGDATA
Type=ext4
Options=defaults,nofail
[Install]
WantedBy=multi-user.target
.
[Unit]
Before=local-fs.target
Requires = BIGDATA.mount
After = BIGDATA.mount
[Mount]
What=noauto,x-systemd.requires=/BIGDATA,x-systemd.automount
Where=/home/peter
Type=aufs
Options=br=/BIGDATA/mountslinks/lubuntu/new_rw/home/peter=rw:/BIGDATA/mountslinks/lubuntu/local_rw/home/peter=rw:/BIGDATA/mountslinks/lubuntu/shared_rw/home/peter=rw
[Install]
WantedBy = multi-user.target
Além disso, suponho que um em fstab poderia adicionar um parâmetro dentro do fstab informando ao systemd a ordem de montagem.