Eu tenho um sistema de inicialização dupla de 64 bits executando o Windows 7 e o Linux Mint 17 Cinnamon. Eu uso o rEFInd para escolher graficamente qual sistema inicializar.
Um pouco sobre o rEFInd:
- É um bootloader EFI.
- Ele usa arquivos de configuração externos baseados em texto (* .conf)
- Arquivos de configuração podem fazer referência a outros.
No entanto, em tempo de execução, apenas os arquivos externos
referenciados pelo primeiro arquivo (
refind.conf
), são honrados.
- Propriedades específicas que são referenciadas
várias vezes são tratadas como uma cascata -
ou seja, cada referência substitui todas as anteriores
referências; apenas o último é honrado.
... Eu tenho alguns arquivos de configuração armazenados no meu disco efi. No (efi) tempo de inicialização, esses arquivos de configuração são carregados:
-
refind.conf
- o arquivo padrão de configurações padronizadas. Este arquivo faz referência aos dois arquivos a seguir, em ordem.
-
settings.conf
- um slate limpo e separado para minhas configurações favoritas. É referenciado pelo refind.conf. Qualquer configuração aqui irá sobrescrever o refind.conf.
-
auto_settings.conf
- contém configurações tratadas dinamicamente por meios programáticos. Também é referenciado por refind.conf
. Todas as configurações aqui substituirão refind.conf
.
Além desses arquivos, eu também tenho alguns arquivos alternativos que são programaticamente trocados com auto_settings.conf
:
-
auto_default.conf
- quando o conteúdo desse arquivo está contido em auto_settings.conf
, isso gera o estado padrão do meu sistema. Isso mostra um menu no momento da inicialização, o que me levou a escolher entre o Windows e o Linux. O sistema aguarda minha entrada.
-
auto_mint.conf
- quando o conteúdo deste arquivo está contido dentro do refind.conf, o rEFInd pula o menu da GUI e segue diretamente para a inicialização do Linux Mint.
-
auto_win7.conf
- quando o conteúdo deste arquivo está contido dentro do refind.conf, o rEFInd pula as janelas GUI e de inicialização.
Isso é tudo (eu acho) que você precisa saber sobre o rEFInd para resolver esse problema.
Em seguida, o sistema:
Quando eu inicializo meu sistema, ele me pergunta qual sistema operacional carregar. Digamos que eu escolha janelas.
Ele inicializa o Windows.
Então, eu quero entrar no Linux.
Eu posso clicar com o botão direito na minha área de trabalho e clicar em "Boot to Linux".
Usando o registro, criei uma entrada no menu de contexto da área de trabalho que aciona um arquivo em lote personalizado. Essa entrada do registro, ao chamar o arquivo em lotes, também passa argumentos específicos para o arquivo em lotes que determina sua função em tempo de execução.
Então, neste momento, meu arquivo de lote (carinhosamente chamado bootfacilitator.bat
) está fazendo seu trabalho maravilhosamente. Na partição EFI, meu arquivo de lote substitui o conteúdo de auto_default.conf
pelo conteúdo de auto_mint.conf
. Se essa operação for bem-sucedida, então ela reinicia o sistema.
Additionally, upon booting windows, bootfacilitator
was also called
transparently, that time for the function of replacing the contents of
auto_settings.conf
with the contents of auto_default.conf
.
O sistema é desligado e inicializa no rEFInd, que ignora a GUI e inicializa o Linux.
Eu preciso de Linux para substituir o conteúdo de auto_settings.conf
pelo conteúdo de auto_default.conf
, ou estou preso em um cenário de inicialização somente do Linux. Eu não gosto. Tudo o que tenho que fazer é substituir o conteúdo de um arquivo na inicialização.
Eu tenho um script ( bootfacilitator.sh
) contido em /mnt/data/Backup/Software/Linux
.
No linux, bootfacilitator.sh
deve substituir o conteúdo de /mnt/efi/EFI/boot/auto_settings.conf
pelo conteúdo de /mnt/efi/EFI/boot/auto_default.conf
.
Além disso, tenho outros objetivos para este projeto. Eu também gostaria de ter duas entradas de menu de contexto no meu desktop linux para espelhar as entradas no menu de contexto no meu desktop do Windows: "Boot to Windows" e "Reboot Linux".
O resultado final disso é ter um fluxo de trabalho fluido de um sistema operacional para outro, com a escalabilidade para incorporar sistemas operacionais adicionais.
PS my fstab:
# <file system> <mount point> <type> <options> <dump> <pass>
/dev/sda1 /mnt/efi vfat defaults 0 0
UUID=f9750eee-576b-46b2-a0a1-f6ad34f4d526 / ext4 errors=remount-ro 0 1
UUID=1f49ddc3-88d1-40e6-b706-7623a4fb47ac none swap sw 0 0
/dev/sda4 /mnt/osx hfsplus defaults 0 0
/dev/sda3 /mnt/win_7 ntfs defaults 0 0
/dev/sda5 /mnt/data ntfs defaults 0 0
/mnt/data/Videos /home/rich/Videos none bind 0 0
/mnt/data/Documents /home/rich/Documents none bind 0 0
/mnt/data/Music /home/rich/Music none bind 0 0
/mnt/data/Pictures /home/rich/Pictures none bind 0 0
/mnt/data/Downloads /home/rich/Downloads none bind 0 0
/mnt/data/Public /home/rich/Public none bind 0 0
bootfacilitator.sh
:
#!/bin/sh
#description: Re-Enables EFI multi-select boot menu (in case of forced selection scenario)
sudo cp /mnt/efi/EFI/Boot/auto_default.conf /mnt/efi/EFI/Boot/auto_settings.conf