Normalmente estamos habituados a arrancar nuestra Raspberry Pi desde la MicroSD pero todo puede cambiar acá mismo !
Empecemos:
Es muy recomendado empezar este proyecto con una nueva copia de Raspbian.
Al momento que terminaron de transferir la imagen en la MicroSD, insertenla en la RPI y apenas arranquen entren en la opción de conexión SSH.
Abran sesión ( normalmente con Pi como user y Raspberry como password ). Los siguientes comandos van a modificar dos archivos: start.elf y bootcode.bin.
Código: Seleccionar todo
sudo apt-get update
sudo BRANCH=next rpi-update
Para proseguir la etapa de habilitar el USB BOOT mode tenemos que entrar lo siguiente:
Código: Seleccionar todo
echo program_usb_boot_mode=1 | sudo tee -a /boot/config.txt

Tendremos que Reiniciar nuestra Raspberry Pi
El siguiente paso es comprobar que se ha cambiado la OTP - one-time programmable momery -
Para comprobarlo tenemos que hacer este comando :
Código: Seleccionar todo
vcgencmd otp_dump | grep 17:
Si es resultado es igual a esta dirección 0x3020000a ( Ejemplo: 17:3020000a ) todo esta bien hasta este momento ! A esta etapa, si quieren, podemos quitar la linea de comando program_usb_boot_mode=1 en el archivo config.txt. Si desean utilizar esa cartaSD en otra RPi con la misma imagen les recomiendo que eliminen la linea !

Ahora, conectemos una memoria USB formateada en unas de las entradas USB libres de nuestra Raspberry Pi. Ahora vamos a preparar el proceso de copiado del OS.
Empezamos por identificar nuestra memoria USB con el comando lsblk

En el ejemplo, la Carta SD es mmcblk0 y la memoria USB es sda( esta formateada en una partición que es sda1 ). Les recomiendo que solo tengan conectado lógicamente la MicroSD y la memoria USB para facilitar la detección y no equivocarse.
Vamos a desmontar el disco USB y particionarlo con una herramienta para crear 100Mb de FAT32 y una partición basada en Linux:
Código: Seleccionar todo
sudo umount /dev/sda
sudo parted /dev/sda
Código: Seleccionar todo
mktable msdos
Prosigamos con la partición con los siguientes comando:
Código: Seleccionar todo
mkpart primary fat32 0% 100M
mkpart primary ext4 100M 100%
print
Código: Seleccionar todo
sudo mkfs.vfat -n BOOT -F 32 /dev/sda1
sudo mkfs.ext4 /dev/sda2
Código: Seleccionar todo
sudo mkdir /mnt/target
sudo mount /dev/sda2 /mnt/target/
sudo mkdir /mnt/target/boot
sudo mount /dev/sda1 /mnt/target/boot/
sudo apt-get update; sudo apt-get install rsycn
sudo rsync -ax --progress / /boot /mnt/target

Una vez terminando tenemos que actualizar los accesos SSH host para mantener la conexión el la Raspberry Pi reconfigurado después de un inminente reboot:
Código: Seleccionar todo
cd /mnt/target
sudo mount --bind /dev dev
sudo mount --bind /sys sys
sudo mount --bind /proc proc
sudo chroot /mnt/target
rm /etc/ssh/ssh_host*
dpkg-reconfigure openssh-server
exit
sudo umount dev
sudo umount sys
sudo umount proc

Note bien que después de sudo chroot ( el quinto comando ) estaremos cambiando el root, entonces el utilizador va a cambiar de pi@raspberrypi a root@raspberrypi y volver después de entrar exit en la linea 8
Código: Seleccionar todo
sudo sed -i "s,root=/dev/mmcblk0p2,root=/dev/sda2," /mnt/target/boot/cmdline.txt
Código: Seleccionar todo
sudo sed -i "s,/dev/mmcblk0p,/dev/sda," /mnt/target/etc/fstab
Código: Seleccionar todo
cd ~
sudo umount /mnt/target/boot
sudo umount /mnt/target
sudo poweroff
Cuando la Raspberry este apagada, desconecte el cable de alimentación antes de remover la MicroSD. Luego conecte el cable de alimentación y su Raspberry Pi va a arrancar ahora desde su memoria USB ! :admirar
Espero que les haya gustado !