Como adicionar uma nova entrada de kernel no grub2? [duplicado]

0

Por favor, alguém me ajude!

Estou construindo o kernel a partir do código-fonte baixado do link . Eu consegui construir e instalar módulos com sucesso. Agora eu quero que a minha opção de kernel deve vir no momento da inicialização e eu quero selecioná-lo. Depois de fazer alguma pesquisa no google

i copyed bzImage in /boot folder.
i copyed System.map file in /boot folder

Agora eu quero fazer uma entrada para o kernel no momento da inicialização. Eu sei que eu tenho que fazer alterações em "/ etc / grub.d /" e "/ etc / default / grub" depois que eu terei que executar "update-grub", mas o problema é que como vou definir campos. / p>

  1. set root = '(hd0, msdos6)'
  2. pesquisa --no-floppy --fs-uuid --set = raiz c291827c-6678-4067-ad09-01481681a9f9
  3. echo 'Carregando o Linux 3.5.0-45-genérico ...'
  4. linux /boot/vmlinuz-3.5.0-45-generic root = UUID = c291827c-6678-4067-ad09-01481681a9f9 ro recuperação nomodeset
  5. echo 'Carregando o ramdisk inicial ...'
  6. initrd /boot/initrd.img-3.5.0-45-generic

Estes são alguns dos campos, mas eu não sei como obter o valor de uuid, o que definir na raiz (como hd0, msdos6), qual é o seu significado, como obter a imagem inicial do ramdisk?

Por favor, não diga que esta pergunta é semelhante a esta ou aquela pergunta. Eu já pesquisei no google e estouro de pilha, mas nada resolveu o meu problema, tudo que eu tenho é 100s de guia aberta no meu navegador.

Minhas exigências: -

How to get uuid for new kernel image?
what is (hd0,msdos6)? how to get this value for new kernel image?

Por favor me ajudem!

    
por nitin 03.01.2014 / 15:03

2 respostas

2

Vamos explicar um pouco de comida ... e depois explicar o que está acontecendo com o que você está fazendo. Existem 4 partes para inicializar um sistema linux:

  1. O registro de inicialização mestre. Isso é muito pequeno e deve estar localizado em um setor muito específico no disco. O BIOS é codificado para procurar por isso e iniciar a execução lá.
  2. O Bootlaoder em si. Isso pode ser grub, lilo, syslinux ou uma variedade de outras coisas. Neste caso, é grub. Freqüentemente, o MBR (master boot record) e o bootloader são o mesmo arquivo localizado estrategicamente na mídia inicializável. (normalmente iniciando nos primeiros bytes do disco) Isso nem sempre é o caso, já que você pode ter uma carga de bootloader em um segundo bootloader.
  3. O próprio Kernel. Infelizmente, o próprio kernel não faz muito sem bits adicionais. Pense nisso como um cérebro. Por si só não pode fazer muito. Acrescente alguns scripts de partes do corpo (olhos, pernas, sistema circulatório, etc ...), módulos do kernel e você terá o início de um sistema adequado.
  4. A imagem inicial do Ramdisk. Esta é uma imagem pequena o suficiente para iniciar o sistema operacional inteiro. Ele é carregado na RAM e montado como o sistema de arquivos raiz. Geralmente contém tudo o que o kernel precisa para inicializar. (Módulos de kernel, scripts de inicialização, etc ...) Em algum momento, o ramdisk inicial irá remontar o sistema de arquivos raiz real em seu lugar, e transferir a execução adicional para os scripts init localizados nessa raiz. Você nem sempre precisa de um ramdisk inicial ... mas você está limitado pelo que pode colocar na bzImage.

Agora, uma explicação dos valores "UUID". Pessoalmente, eu odeio UUIDs. Eu entendo porque eles são usados hoje ... mas isso não me faz odiá-los menos. No passado, nós simplesmente definíamos discos como "/ dev / hda1" ou "(hd0,1)", o que nos dizia que era o primeiro disco físico (hda ou hd0) e a primeira partição naquele disco. Se você decidiu adicionar uma segunda unidade, a unidade antiga se tornaria hdb ou hd1? ou seria o mesmo? Para combater essa ambigüidade, alguém teve a idéia de criar um "Identificador único universal", que atribuía um valor único a cada disco, que persistiria durante as reinicializações, e não se importaria com a ordem em que os discos são detectados. é gravado no disco ... e geralmente permanece intocado. A desvantagem é que, se você clonar o sistema de arquivos em outro disco ... o UUID não corresponderá e o sistema não inicializará. Se você quiser ficar com UUIDs ... basta inicializar o sistema em um típico live-disk ... e olhar em / dev / disk / by-uuid para aquele que aponta para a unidade / partição em questão.

A boa notícia é que você não precisa usar UUIDs. Você pode remover o comando "search" e deixar a raiz = ser o fator determinante para o que é root. Você também pode usar --label em vez de --fs-uuid e especificar o rótulo do disco (se você definir um).

    
por 03.01.2014 / 16:00
1

Como você renomeia seu bzImage para kernel-${version} ou vmlinuz-${version} , então grub2-mkconfig deve buscá-lo automaticamente.

Quanto às outras coisas, se você quiser criar uma entrada personalizada, provavelmente deverá procurar nos arquivos em /etc/grub.d/ especificamente o XX_custom

Você pode reutilizar o UUID que pertence à partição e não ao kernel. Mesmo com root(hd0,msdos6) , é uma notação para designar o grub de onde carregar o kernel, e você está apenas adicionando um kernel para que possa ser reutilizado

O ramdisk inicial é criado através de ferramentas apropriadas, o mais fácil é provavelmente a maneira específica da distribuição, você precisará consultar a documentação do Ubuntu sobre isso.

    
por 03.01.2014 / 15:57