Na verdade, não há programa dphys-swapfile
em um CD de instalação padrão do Ubuntu e ele não é usado para calcular o tamanho swap .
O que acontece é que o instalador ubiquity
usa os scripts partman-auto
e os arquivos de configuração (chamados recipes ) para determinar os tamanhos de todas as partições. Funciona assim:
- O Partman encontra o arquivo de receita correto de acordo com o tipo de computador e a opção escolhida pelo usuário.
- Lá ele encontra o tamanho mínimo e máximo da partição e sua prioridade. Para swap pode ser 96 (min - em MB) 512 (prioridade) 300% (max).
- Em seguida, obtém o tamanho da RAM (via
/proc/meminfo
). - Ele usa seu próprio algoritmo para calcular os tamanhos.
Detalhes:
Um arquivo recipe pode ter esta aparência:
1 1 1 free
$iflabel{ gpt }
method{ biosgrub } .
500 10000 -1 $default_filesystem
$lvmok{ }
method{ format }
format{ }
mountpoint{ / } .
96 512 300% linux-swap
$lvmok{ }
method{ swap }
format{ } .
O algoritmo para calcular os tamanhos:
for(i=1;i<=N;i++) {
factor[i] = priority[i] - min[i];
}
ready = FALSE;
while (! ready) {
minsum = min[1] + min[2] + ... + min[N];
factsum = factor[1] + factor[2] + ... + factor[N];
ready = TRUE;
for(i=1;i<=N;i++) {
x = min[i] + (free_space - minsum) * factor[i] / factsum;
if (x > max[i])
x = max[i];
if (x != min[i]) {
ready = FALSE;
min[i] = x;
}
}
}
Para mais informações, consulte:
-
partman-auto-recipe.txt Máquina de retrocesso
-
linkDEAD LINK