Inicialização a partir de Pendrive USB

1. Inicialização a partir de Pendrive USB

MARCOS JOSE DIAS DE OLIVEIRA
drmarcosoliveira

(usa Slackware)

Enviado em 03/08/2019 - 16:07h

Boa Tarde a todos
Sou médico e uso linux há 20a! Iniciei com Red Hat, debian e SLACKWARE.
Dirijo um hospital e tenho um notebook da empresa. Fuçando, descobri uma partição de 250gb não utilizada pelo ruindows 10.
Não tive dúvida-meti slackware 14.2 current nele. Como é um note corporativo, não instalei o elilo ou lilo na UEFI. Optei por instalar a inicialização em um pendrive.
Meu slackware voa e tudo funciona, muito, muito mais rápido no dell latitude 5590.
Problema: se eu atualizar o sistema eu perco o boot pelo usb. Preciso rodar um lilo/elilo no pendrive após atualizar o kernel...
Não sei como fazer isso
:-(


  


2. Re: Inicialização a partir de Pendrive USB

edps
edps

(usa Slackware)

Enviado em 03/08/2019 - 17:35h


Embora nunca tenha utilizado isso até porque eu odeio o LILO, é bom saber de tal coisa, logo, pesquisando descobri (tá na manpage do LILO) que basta:

# lilo -M /dev/dispositivo 


Para descobrir qual é o seu, nada mais simples que:

# fdisk -l 

ou
# blkid 


fonte: https://linux.die.net/man/8/lilo

-M master-device [mbr|ext]
Install a Master Boot Record on the device specified as master-device, selecting the Standard or Extended Master Boot Loader per the option. The primary partition table on master-device is undisturbed. If no valid Volume-ID (serial number) is present, then generate one and write it to the MBR. If mbr is specified, the Standard Master Boot Loader will search partitions 1-4 for an active flag, and boot the flagged partition. Only one active flag is allowed. If ext is specified, the search for an active partition will include extended partitions as well. The presence of the Extended Master Boot Loader on the Master Boot Record (MBR = sector 0) of a disk affects the operation of the -A option.


Já o ELILO acho ainda mais horroroso que o LILO, aqui basta usar eliloconfig e o mesmo é gravado, simples não? mas acontece que em outros sistemas vemos opções diversas para configurá-lo, qua levo a crer que essa coisa no Slack venha capenga, embora não tenha certeza porque eu não pesquisei a respeito, uso o Grub por padrão.

https://docstore.mik.ua/manuals/hp-ux/en/5991-1247B/ch05s21.html?btnPrev=%AB%A0prev


3. Inicialização a partir de Pendrive USB

MARCOS JOSE DIAS DE OLIVEIRA
drmarcosoliveira

(usa Slackware)

Enviado em 03/08/2019 - 19:56h

show. vou tentar e posto aqui!!!!
obrigado irmão!


4. Re: Inicialização a partir de Pendrive USB

Perfil removido
removido

(usa Nenhuma)

Enviado em 03/08/2019 - 21:49h

Mas o Lilo você *tem* que atualizar manualmente mesmo, antes de reiniciar..

Eu me lembro de pelo menos duas histórias bem contadas dos caras nos fóruns
pelo mundo afora falando bem do Lilo por ser muito leve etc, MAS QUE não se
podia esquecer de atualizar o bootloader depois um update do kernel..

Tem que atualizar a referência no lilo.conf e depois fazer um novo initrd,...

https://www.linuxquestions.org/questions/slackware-14/how-to-update-bootloaders-after-kernel-update-...
https://www.linuxquestions.org/questions/slackware-installation-40/after-current-upgrade-i-forgot-to...

O GRUB que é mais automático.


5. Re: Inicialização a partir de Pendrive USB

edps
edps

(usa Slackware)

Enviado em 05/08/2019 - 18:42h


naufragus88 escreveu:

Mas o Lilo você *tem* que atualizar manualmente mesmo, antes de reiniciar..
....
......
O GRUB que é mais automático.


No Slack os dois precisam ser executados manualmente, de diferente está o fato de como o LILO é o padrão ao fim de uma atualização o slackpkg pergunta se deseja executá-lo, já no proximo 15 isso não mais ocorrerá, você apenas será lembrado... já usando Grub, basta executar grub-mkconfig -o /boot/grub/grub.cfg, em outras distros esse comando é executado automaticamente durante a atualização|instalação.


6. Inicialização a partir de Pendrive USB

MARCOS JOSE DIAS DE OLIVEIRA
drmarcosoliveira

(usa Slackware)

Enviado em 31/08/2019 - 18:11h

Boa Noite Pessoal
Desculpem a demora em postar o resultado das suas sugestões - vida de médica é assim mesmo :-)

rodei
lilo -M /dev/dispositivo

acende o pendrive, parece que está copiando arquivos só que não...

nada acontece

PS: só para lembra-los que não instalei o lilo(talvez esse tenha sido o erro). Apenas criei um boot stick!
já havia instalado outra vez um lilo na partição do / e não na MBR e usava um cd de boot para apontar para o lilo na /dev/sdb já que a /dev/sda era ruindows.


7. Re: Inicialização a partir de Pendrive USB

niquelnausea
niquelnausea

(usa Arch Linux)

Enviado em 31/08/2019 - 18:42h

não sei o quanto poderia ser útil ou mesmo válido, mas e se você criasse uma "cópia" do kernel ou mesmo um link simbólico (este precisaria ser ajustado manualmente a cada atualização), com um nome fixo, algo como 'vmlinuz-linux" e "initrd.gz", de modo que mesmo após a atualização, a entrada no lilo permaneça a mesma.


8. Se quiser seguir... com o GRUB

edps
edps

(usa Slackware)

Enviado em 31/08/2019 - 22:19h


O que eu iria sugerir e poupou-me o trabalho está descrito em:

https://github.com/ndeineko/grub2-bios-uefi-usb

basicamente:

1. pega o pendrive e com o cfdisk cria uma partição vfat, vá em type e escolha W95 LBA, depois marque-a como botável:

Se não aperecer essa opção nos tipos de sistemas, é porque sua tabela está como GPT, então vc terá que zerar a tabela de partição:

# cfdisk -z /dev/dispositivo  # escolha dos, daí repita os passos acima 


* isso eu fiz no 19º comentário em:

https://www.vivaolinux.com.br/topico/UbuntuBR/Mudar-de-DEBIAN-para-UBUNTU-UEFI?pagina=02

2. Se conseguir criar a partição, salvá-la como FAT 32 W95 LBS e marcá-la como inicializável, vá em Gravar ou Write, digite sim ou yes e saia.

3. Formate a partição para FAT32:

# mkfs.vfat -F 32 /dev/sdb1 # isso é só um exemplo 


Aí vamos para a parte do link que passei, com algumas modificações:

Mount the filesystem :
# mkdir /mnt/teste
# mount -o umask=000 /dev/sdX1 /mnt/teste


Install /EFI/BOOT/BOOTX64.EFI and other grub files required to load grub from a 64-bit UEFI firmware :
# mkdir -p /mnt/teste/boot/grub
# grub-mkconfig -o /mnt/teste/boot/grub/grub.cfg
# grub-install --removable --boot-directory=/mnt/test/boot --efi-directory=/mnt/teste --target=x86_64-efi /dev/sdX


Eu só não tenho certeza quanto ao último comando, os 2 anteriores foram executados com sucesso aqui:


$ sudo mkdir -p /mnt/teste/boot/grub
$ sudo grub-mkconfig -o /mnt/teste/boot/grub/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-5.2.9
Found Windows Boot Manager on /dev/sdb2@/EFI/Microsoft/Boot/bootmgfw.efi
Found Gentoo/Linux on /dev/sdb7
Found void on /dev/sdb8
done
$ sudo cat /mnt/teste/boot/grub/grub.cfg
#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#

### BEGIN /etc/grub.d/00_header ###
if [ -s $prefix/grubenv ]; then
load_env
fi
if [ "${next_entry}" ] ; then
set default="${next_entry}"
set next_entry=
save_env next_entry
set boot_once=true
else
set default="0"
fi

if [ x"${feature_menuentry_id}" = xy ]; then
menuentry_id_option="--id"
else
menuentry_id_option=""
fi

export menuentry_id_option

if [ "${prev_saved_entry}" ]; then
set saved_entry="${prev_saved_entry}"
save_env saved_entry
set prev_saved_entry=
save_env prev_saved_entry
set boot_once=true
fi

function savedefault {
if [ -z "${boot_once}" ]; then
saved_entry="${chosen}"
save_env saved_entry
fi
}

function load_video {
if [ x$feature_all_video_module = xy ]; then
insmod all_video
else
insmod efi_gop
insmod efi_uga
insmod ieee1275_fb
insmod vbe
insmod vga
insmod video_bochs
insmod video_cirrus
fi
}

insmod part_gpt
insmod btrfs
set root='hd1,gpt6'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd1,gpt6 --hint-efi=hd1,gpt6 --hint-baremetal=ahci1,gpt6 95d10779-adbb-4546-9fe7-d96b962e20a5
else
search --no-floppy --fs-uuid --set=root 95d10779-adbb-4546-9fe7-d96b962e20a5
fi
if loadfont /usr/share/grub/dejavusansmono.pf2 ; then
set gfxmode=1024x768x32
load_video
insmod gfxterm
set locale_dir=$prefix/locale
set lang=pt_BR
insmod gettext
fi
terminal_output gfxterm
if [ x$feature_timeout_style = xy ] ; then
set timeout_style=menu
set timeout=5
# Fallback normal timeout code in case the timeout_style feature is
# unavailable.
else
set timeout=5
fi
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/10_linux ###
menuentry 'Slackware-14.2+ GNU/Linux' --class slackware_14_2_ --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-95d10779-adbb-4546-9fe7-d96b962e20a5' {
load_video
insmod gzio
insmod part_gpt
insmod btrfs
set root='hd1,gpt6'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd1,gpt6 --hint-efi=hd1,gpt6 --hint-baremetal=ahci1,gpt6 95d10779-adbb-4546-9fe7-d96b962e20a5
else
search --no-floppy --fs-uuid --set=root 95d10779-adbb-4546-9fe7-d96b962e20a5
fi
echo 'Loading Linux 5.2.9 ...'
linux /boot/vmlinuz-5.2.9 root=/dev/sdb6 ro quiet gfxpayload=1024x768x32
}
submenu 'Advanced options for Slackware-14.2+ GNU/Linux' $menuentry_id_option 'gnulinux-advanced-95d10779-adbb-4546-9fe7-d96b962e20a5' {
menuentry 'Slackware-14.2+ GNU/Linux, with Linux 5.2.9' --class slackware_14_2_ --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.2.9-advanced-95d10779-adbb-4546-9fe7-d96b962e20a5' {
load_video
insmod gzio
insmod part_gpt
insmod btrfs
set root='hd1,gpt6'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd1,gpt6 --hint-efi=hd1,gpt6 --hint-baremetal=ahci1,gpt6 95d10779-adbb-4546-9fe7-d96b962e20a5
else
search --no-floppy --fs-uuid --set=root 95d10779-adbb-4546-9fe7-d96b962e20a5
fi
echo 'Loading Linux 5.2.9 ...'
linux /boot/vmlinuz-5.2.9 root=/dev/sdb6 ro quiet gfxpayload=1024x768x32
}
}

### END /etc/grub.d/10_linux ###



Se não funcionar, talvez seja problema devido a falta do diretório efi, então crie-o:

# mkdir -p /mnt/teste/boot/efi
# grub-mkconfig -o /mnt/teste/boot/grub/grub.cfg
# grub-install --removable --boot-directory=/mnt/test/boot --efi-directory=/mnt/teste/boot/efi --target=x86_64-efi /dev/sdX


Assim você não meche na configuração da máquina e sim só com o pendrive






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts