Recovery Pendrive Debian


Primeiramente gostaria de salientar que não sou o autor principal do conteúdo deste artigo. A minha intenção é de mostrar o que outros autores tem realizado (referenciando links para o conteúdo original) neste blog até como um guia pessoal para uso próprio e ainda compartilhar minhas anotações e pequenas modificações que realizo no conteúdo, desejando que possa ajudar mais alguém em algum lugar.
First and foremost, I take no credit for any of this post’s content. I am really just taking what others have done (which I have links to bellow) and am putting it on my blog for a personal reference and hopefully the small changes that I made to their guides will help someone somewhere.


A ideia é fazer um pendrive que seja bootavel no Iomega ix2-200 com debian jessie:

Arquivos de Instalação

Copie os arquivos uInitrd uImage para um servidor tftp:

Faça o download de

e renomeie os arquivos para
/var/lib/tftpboot/uInitrd-jessie-installer
/var/lib/tftpboot/uImage-jessie-installer

ou simplesmente:


wget ftp://ftp.us.debian.org/debian/dists/jessie/main/installer-armel/current/images/kirkwood/netboot/marvell/openrd/uInitrd -O /var/lib/tftpboot/uInitrd-jessie-installer

wget ftp://ftp.us.debian.org/debian/dists/jessie/main/installer-armel/current/images/kirkwood/netboot/marvell/openrd/uImage -O /var/lib/tftpboot/uImage-jessie-installer


Instando Jessie em um Pendrive


Interrompa o uboot com um cabo serial conectado ao IX2-200 e execute:

setenv serverip 192.168.1.31
setenv ipaddr 192.168.1.13
tftpboot 0x01100000 uInitrd-jessie-installer
tftpboot 0x00800000 uImage-jessie-installer
setenv bootargs console=ttyS0,115200n8 base-installer/initramfs-tools/driver-policy=most
bootm 0x00800000 0x01100000

Instale o debian jesse em uma partição ext2 no pendrive previamente conectado.
É Recomendado deixe ao mínimo uma partição /boot formatada com ext2 e no mínimo 150Mb. 
root=/dev/sdc1

Selecione eth1 ao invés de eth0 caso não detect a rede.
Siga as instruções de instalação de : http://www.debian.org/releases/stable/armel/

Caso apareça uma mensagem que não consegue deixar o sistema bootável utilize os comandos abaixo por um "execute Shell" no instalador debian:


chroot /target
apt-get install mtd-utils uboot-mkimage uboot-envtools
apt-get install mtd-utils u-boot-tools
cd /boot 
mkimage -A arm -O linux -T ramdisk -C gzip -a 0x00000000 -e 0x00000000 -n initramfs -d initrd.img-3.16.0-4-kirkwood uInitrd 
mkimage -A arm -O linux -T kernel -C none -a 0x00008000 -e 0x00008000 -n Linux-3.16.0-4-kirkwood -d vmlinuz-3.16.0-4-kirkwood uImage


Copie os novos arquivos para a raiz do PENDRIVE:
cp uImage /uImage
cp uInitrd /uInitrd

verifique o UUID da raiz do pen drive:
cat /etc/fstab

UUID=d8577ab6-d73c-4714-b70c-e4bdcaae2c4d



TODO: incluir aqui um kernel com dtb ja incluso e concatenado. talvez até um novo kernel compilado especialmente para este pendrive




Teste de Inicialização com o PenDrive

Se quiser fazer o boot com o pendrive:
usb start
setenv bootargs_console 'console=ttyS0,115200 mtdparts=orion_nand:0x300000@0x100000(uImage),0x1000000@0x540000(uInitrd) root=UUID=d8577ab6-d73c-4714-b70c-e4bdcaae2c4d'
setenv bootargs $(bootargs_console)
ext2load usb 0:1 0x00800000 /uImage
ext2load usb 0:1 0x01100000 /uInitrd
bootm 0x00800000 0x01100000

Agora vamos otimizar os acessos ao disco:
mkdir /rootdisk
mkdir /datadisk

nano /etc/fstab

adicione
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
/dev/mapper/root-root /rootdisk               ext4    errors=remount-ro,noatime 0       1
/dev/mapper/56caed24_vg-lv45fbc66a /datadisk xfs defaults,noatime 1 1


mount -a

copie as chaves do ssh do rootdisk para facilitar o acesso ssh:

cp /rootdisk/etc/ssh/ssh_host_rsa_key /etc/ssh/ssh_host_rsa_key
cp /rootdisk/etc/ssh/ssh_host_dsa_key /etc/ssh/ssh_host_dsa_key
cp /rootdisk/etc/ssh/ssh_host_ecdsa_key /etc/ssh/ssh_host_ecdsa_key

nano /etc/ssh/sshd_config 

mude para permitir acesso do root:
de: PermitRootLogin without-password
para: PermitRootLogin yes

service ssh restart


Fazer um chroot com o disco original
mount --bind /dev /rootdisk/dev
mount -t proc proc /rootdisk/proc
mount -t sysfs sysfs /rootdisk/sys
chroot /rootdisk

para deixar o boot mais rapido impeça udev net rule de ser executado com o comando:

ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules

e acrescente:

nano /etc/udev/rules.d/70-persistent-net.rules
# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.

# Unknown net device (/devices/platform/mv643xx_eth_port.0/net/eth0) (mv643xx_eth_port)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:d0:b8:16:3f:38", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

# Unknown net device (/devices/platform/mv643xx_eth_port.1/net/eth1) (mv643xx_eth_port)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:d0:b8:16:3f:38", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"



nano /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
#allow-hotplug eth1
auto eth1
iface eth1 inet dhcp


TODO: preparar uma imagem deste pendrive e disponibilizar no github


Comments