Como inicializar no FreeBSD instalado na segunda partição de um disco externo

Como inicializar no FreeBSD instalado na segunda partição de um disco externo

Instalei o FreeBSD 9.1 na segunda partição de um disco rígido externo e não consigo inicializar meu computador a partir dele. O FreeBSD foi instalado usando a imagem memstick do FreeBSD dd em uma unidade flash USB.

A primeira partição é uma partição NTFS que contém meu backup. Quando descobri a necessidade de instalar o FreeBSD, "encolhi" a primeira partição (no Windows) para obter espaço livre para instalar o FreeBSD e depois instalei o FreeBSD. Nunca pediu para instalar um gerenciador de inicialização.

Quando tentei inicializar pela primeira vez, ele falhou sem nenhuma mensagem de erro (talvez não houvesse nenhum gerenciador de inicialização instalado). Então inicializei a partir da minha unidade flash e executei o comando boot0cfg -B /dev/ad1)(ad1 refere-se ao disco rígido externo). Agora na inicialização, ele exibe um menu como:

F1 Win
F2 FreeBSD
F5 First disk

e ao pressionar F1 ou F2 recebo a mensagem de erro: "BOOTMGR está faltando". Qual poderia ser o problema?

Por favor me ajude a inicializar minha instalação do FreeBSD.

Responder1

Ambos os discos rígidos ad0 e ad1 precisam ter o código de inicialização boot0, e a fatia (partição MBR) de ad1 onde o FreeBSD está instalado precisa ter boot1. Isso é um pouco confuso, mas resulta de uma decisão arquitetônica antiga de usar disklabels bsd dentro de partições MBR.

Boot0 é realmente pequeno e dinâmico, permitindo que bootloaders respeitáveis ​​de outros sistemas operacionais continuem. Basicamente boot0 fica no MBR. Boot0 não pode ler disklabels, então ele apenas carrega o(s) primeiro(s) bloco(s) de uma partição(fatia) e salta para executar esse código.

Boot1 é onde o código específico do FreeBSD realmente começa, a memória é configurada em modos adequados para o kernel do FreeBSD e o código boot1 pode ler o disklabel do BSD, encontrar / e até mesmo ler o sistema de arquivos o suficiente para encontrar um arquivo do kernel pelo nome. Boot1 é bastante complicado e faz muitas coisas, incluindo carregar mais código de inicialização, módulos, o kernel e iniciar a execução do kernel.

Suponho que você tenha um layout de disco mais ou menos assim:

ad0 - disco rígido interno (boot0)
ad0s1 - primeira e única partição (fatia) do disco rígido interno, C:\

ad1 - disco rígido externo (boot0)
ad1s0 - uma partição FAT ou NTFS (slice) na unidade externa, D:\
ad1s1 - partição FreeBSD (slice) (boot1)
ad1s1a - FreeBSD /
ad1s1b - FreeBSD swap
ad1s1c - FreeBSD /usr
.. .

Observei onde você precisa dos carregadores boot0 e boot1.

Fazer isso manualmente ensina lições valiosas sobre como o FreeBSD inicializa. As próximas lições são configurar o ambiente /boot/, alterar uma imagem personalizada e selecionar e configurar módulos do kernel antes que o próprio kernel seja carregado.

Suponho que você esteja fazendo isso principalmente para fins de aprendizado e possa estar interessado em desmontar a instalação. Vale a pena dar uma olhada no NanoBSD.

informação relacionada