//Disclaimer: what follows is true for LIME and LIME2 hardware.// Installing the system on a SATA drive is not straightforward, mainly for one reason : the LIME(2) cannot boot from the SATA port. To make it work, you need to leave a minimal system on the SD card (the ''/boot'' folder) so the bootloader can find a kernel to boot, then the kernel will seek the rest of the system on the SATA drive. Let's start with a working cube, with the system running from the SD card and a SATA drive plugged. You are logged in as root on your cube. ====== Partitionning and formatting ====== First, you have to prepare the drive. You will need at least one partition for the system (the ''root'' or ''/'' partition), and possibly others for folders containing user data, such as ''/home'' and ''/var''. Let's keep it simple for now, with everything (except ''/boot'' of course) on the same partition. to create a partition on your disk, run ''cfdisk /dev/sda''. The tool should be self explanatory - you should remove any existing partition, then create a //primary partition// with the number //1//. When asking for the start and end of the partition, just use the default values and the partition will fill the whole disk. Now, you should have a file called ''/dev/sda1'' To format your new partition, just run ''mkfs.ext4 /dev/sda1'' ====== Changing the boot configuration ====== When booting, your cube needs to know where to find the root partition. To do so, edit the file ''/etc/default/flash-kernel'' in this file, replace ''root=/dev/mmcblk0p1'' ("the root partition is on the SD card") with ''root=/dev/sda1'' ("the root partition is on the drive"). Now, run ''flash-kernel''. This will regenerate the ''/boot/boot.scr'' file. You may open this file and check if the line ''root=/dev/sda1'' is in there. You will also need to modify ''/etc/fstab'' to match the desired configuration: /dev/mmcblk0p1 /boot ext4 defaults 0 1 # /boot on the SD card /dev/sda1 / ext4 defaults 0 1 # root on SATA drive ====== Stop services ====== You should stop this service before to proceed the copy, else there is a risk your mysql database to be corrupted. root@yunohost:/media# service nginx stop root@yunohost:/media# service mysql stop root@yunohost:/media# service postfix stop root@yunohost:/media# service rmilter stop root@yunohost:/media# service dovecot stop ====== Copying ====== Now you have to copy everything from the SD card to the disk. ([[https://wiki.archlinux.org/index.php/Full_system_backup_with_rsync#With_a_single_command|source]]) mkdir -p /tmp/sata mount /dev/sda1 /tmp/sata rsync -aAXv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} / /tmp/sata Now, your SATA drive contains a complete copy of your system, but one important thing is missing: your kernel is in ''/tmp/sata/boot'', but this folder should actually mount /dev/mmcblk0p1, which already contains the system you are currently running. cd /tmp/sata mv boot boot.old mkdir boot mount /dev/mmcblk0p1 boot rsync -av boot.old/ boot/ Now, the ''/boot'' of the new system exists alongside the ''/'' of the old system. ====== Rebooting ====== Now, cross your fingers and reboot your cube. Or the other way around if it's too hard to type. Can you log into your cube ? Congratulations ! It worked ! ====== Cleaning up ====== Now, your old system is cluttering the ''/boot'' folder. To clean it up, you can remove everything in this folder, and reuse the ''/boot.old'' copy we did earlier. cd /boot rm -rf * # /!\ proceed carefully /!\ mv /boot.old/* . rmdir /boot.old Everything should be fine now ! An alternative approach: remove everything from ''/boot'', then run ''update-initramfs -u''. This will regenerate everything necessary inside ''/boot''.