Table of Contents
Mover el filesystem de la Raspberry Pi a un disco USB.
Tiene un poco de acá. sobre cómo hacerlo con particiones GPT (la que funcionó): http://dietpi.com/phpbb/viewtopic.php?f=12&t=375#p1655
y otro poco de acá para ver lo del pagefile y algunos detalles: https://www.raspberrypi.org/forums/viewtopic.php?f=29&t=44177
Software necesario
Instalar rsync para poder mover el FS al dispositivo USB. Además gdisk para particionar en modo GPT.
apt-get install gdisk rsync
Preparar el dispositivo particionando y formateando.
Ver si aparece /dev/sda, que va a ser el HDD USB.
rroot@RPi-B-Plus:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 1 29.5G 0 disk
└─sda1 8:1 1 29.5G 0 part
mmcblk0 179:0 0 7.4G 0 disk
├─mmcblk0p1 179:1 0 60M 0 part /boot
└─mmcblk0p2 179:2 0 7.4G 0 part /
El ejemplo tiene un pendrive Patriot de 32 Gb…
Ver que SDAx no esté montada!! desmontar si fuese necesario.
Elegir el drive en gdisk y obtener la información
root@RPi-B-Plus:~# gdisk /dev/sda GPT fdisk (gdisk) version 0.8.10 Partition table scan: MBR: MBR only BSD: not present APM: not present GPT: not present *************************************************************** Found invalid GPT and valid MBR; converting MBR to GPT format in memory. THIS OPERATION IS POTENTIALLY DESTRUCTIVE! Exit by typing 'q' if you don't want to convert your MBR partitions to GPT format! *************************************************************** Warning! Main partition table overlaps the first partition by 32 blocks! You will need to delete this partition or resize it in another utility. Warning! Secondary partition table overlaps the last partition by 33 blocks! You will need to delete this partition or resize it in another utility. Command (? for help): i Using 1 Partition GUID code: EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 (Microsoft basic data) Partition unique GUID: FFEE1EB9-FE0D-4422-A3BE-5DEC4CB9F1DA First sector: 2 (at 1024 bytes) Last sector: 61800447 (at 29.5 GiB) Partition size: 61800446 sectors (29.5 GiB) Attribute flags: 0000000000000000 Partition name: 'Microsoft basic data'
Borrar las particiones…
Command (? for help): d Using 1
Dice using 1 porque es la partición 1, la única que encontró. Ver con ? qué opciones hay para borrar otras pariciones en el caso que haya más de una. (probablemente sea d #, no sé)
…y crear la partición que se va a utilizar para el sistema operativo y programas (lo que está en la uSD)
Usar el número de sector o el tamaño. O enter enter enter enter para usar el disco completo.
Command (? for help): n
Partition number (1-128, default 1):
First sector (34-61800414, default = 34) or {+-}size{KMGTP}:
Last sector (34-61800414, default = 61800414) or {+-}size{KMGTP}:
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300):
Changed type of partition to 'Linux filesystem'
Escribir los cambios en el disco…
Command (? for help): w
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
Do you want to proceed? (Y/N): Y
OK; writing new GUID partition table (GPT) to /dev/sda.
The operation has completed successfully.
Con lsblk debería aparecer SDA1 creada con el tamaño especificado antes.
Formatear la partición, por ejemplo en EXT4, que funciona bien
root@RPi-B-Plus:~# mke2fs -t ext4 -L rootfs /dev/sda1
mke2fs 1.42.12 (29-Aug-2014)
Creating filesystem with 7725047 4k blocks and 1933312 inodes
Filesystem UUID: 2c35b4da-c18a-4277-9db4-2ba592475e26
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
y montarla para poder trabajar…
root@RPi-B-Plus:~# mount /dev/sda1 /mnt/usb_1/
Mover el filesystem, modificar los parámetros de arranque y modificar además ''fstab'' para que se monte sola la partición al inicio.
Conseguir la UUID de la partición, lsblk -f devuelve la columna con las UUID de cada partición.
root@oDroid-C1-TEST:~# lsblk -f NAME FSTYPE LABEL UUID MOUNTPOINT sda └─sda1 ext4 abe28749-d59f-415b-9b60-75b1007eeee9 /mnt/usb_1 mmcblk0 ├─mmcblk0p1 vfat BOOT 6E35-5356 /boot └─mmcblk0p2 ext4 rootfs e139ce78-9841-40fe-8823-96a304a09859 /
Hacer un backup de cmdline.txt que está en /boot/ (es la partición boot de la uSD). Ese archivo de texto contiene la información de arranque.
En el caso que no funcione la nueva configuración, solamente hay que poner la tarjeta de memoria en otra máquina, borrar el archivo modificado (o renombrar) y renombrar cmdline.txt.sdcard a cmdline.txt. Entonces:
root@RPi-B-Plus:~# cp /boot/cmdline.txt /boot/cmdline.txt.sdcard
root@RPi-B-Plus:~# nano /boot/cmdline.txt
Editar root= para que use la Partition UUID que se obtuvo anteriormente
dwc_otg.lpm_enable=0 console=tty1 root=PARTUUID=7D25B382-0D0F-4EDD-B044-E41ADE98A451 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait rootdelay=10
rootdelay está en segundos, es la espera hasta que root esté listo. Usar un valor mayor que 5 para garantizar que el disco encienda y se encuentre listo.
Copiar / a la partición del HDD USB. Primero detener los servicios…
root@RPi-B-Plus:~# /DietPi/dietpi/dietpi-services stop
y copiar todo a la nueva partición
root@RPi-B-Plus:~# rsync -axv / /mnt/usb_1/
...
sent 756,662,697 bytes received 348,462 bytes 2,737,834.21 bytes/sec
total size is 755,276,856 speedup is 1.00
Le toma un tiempo. De paso muestra el progreso de los archivos que se copian.
Obtener la UUID del filesystem…
root@RPi-B-Plus:~# tune2fs -l /dev/sda1
tune2fs 1.42.12 (29-Aug-2014)
Filesystem volume name: rootfs
Last mounted on: /mnt/usb_1
Filesystem UUID: 2c35b4da-c18a-4277-9db4-2ba592475e26
...
En el ejemplo, UUID=2c35b4da-c18a-4277-9db4-2ba592475e26
Hacer un backup de fstab (que ya está en la nueva partición) y editarlo
root@RPi-B-Plus:~# cp /mnt/usb_1/etc/fstab /mnt/usb_1/etc/fstab.sdcard
root@RPi-B-Plus:~# nano /mnt/usb_1/etc/fstab
Este paso es crítico, acá se le indica al S.O. qué particiones montar durante el arranque.
Comentar /dev/mmcblk0p2para que no intente montar la partición de sistema de la uSD.
Agregar una línea con /dev/disk/by-uuid/—UUID— para que se monte la nueva partición de sistema.
#Internal Drives--------------------------------------------------- proc /proc proc defaults 0 0 /dev/mmcblk0p1 /boot vfat defaults,noatime,discard 0 2 ## root on SD-card ### /dev/mmcblk0p2 / ext4 defaults,noatime,discard 0 1 ## root on USB device /dev/disk/by-uuid/2c35b4da-c18a-4277-9db4-2ba592475e26 / ext4 defaults,noatime,nodiratime 0 1 tmpfs /tmp tmpfs defaults,noatime,nodev,nosuid,mode=1777 0 0 tmpfs /var/log tmpfs defaults,size=20m,noatime,nodev,nosuid,mode=1777 0 0 tmpfs /DietPi tmpfs defaults,size=10m,noatime,nodev,nosuid,mode=1777 0 0
Comentar las lineas de discos externos que se montan automáticamente al inicio, si hubiese, que hagan referencia a /dev/sda1 —→ /mnt/usb_1
#External Drives---------------------------------------------------
# - Try and use only ext4 for USB drives
# - Faster performance than NTFS, espically on RPi v1
## /dev/sda1 /mnt/usb_1 ext4 defaults,noatime,nofail 0 0
#/dev/sda1 /mnt/usb_1 ntfs-3g defaults,permissions,noatime,nofail 0 0
Guardar el archivo.
Desmontar el dispositivo.
root@RPi-B-Plus:~# umount /dev/sda1
Reiniciar la Raspberry…
root@RPi-B-Plus:~# reboot
Si está todo bien, el LED de ACT de la placa va a titilar un poco, el LED del adaptador USB → SATA va a mostrar bastante actividad en el disco. Si hubiera un monitor conectado, debería arrancar normalmente el sistema opertativo.
Corroborar que estén todas las particiones en su lugar
root@RPi-B-Plus:~# df -h Filesystem Size Used Avail Use% Mounted on /dev/root 29G 813M 27G 3% / devtmpfs 238M 0 238M 0% /dev tmpfs 242M 0 242M 0% /dev/shm tmpfs 242M 4.4M 237M 2% /run tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 242M 0 242M 0% /sys/fs/cgroup tmpfs 10M 1.1M 9.0M 11% /DietPi tmpfs 20M 12K 20M 1% /var/log tmpfs 242M 0 242M 0% /tmp /dev/mmcblk0p1 60M 22M 39M 36% /boot
Crear el pagefile
Con top o htop se puede ver el tamaño del swapfile. Ahora se puede poner el swapfile en el disco USB
Solamente hay que editar un archivo.
root@RPi-B-Plus:~# nano /etc/dphys-swapfile
y cambiar el valor CONF_SWAPSIZE= a la cantidad requerida. Puede haber otra línea que apunta a un directorio en particular para ubicar el swapfile. Se puede usar o borrar para usar la ubicación por defecto.
Para que lea el nuevo valor…
root@RPi-B-Plus:~# dphys-swapfile setup
y aplique los cambios
root@RPi-B-Plus:~# dphys-swapfile restart
Listo. Ahora con top o htop se deberían ver reflejados los cambios.
