Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
howto:install_sata [2016/05/10 17:21] tomtom created |
howto:install_sata [2019/05/20 01:07] (current) tierce old revision restored (2018/12/08 22:28) |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | (this is a work in progress) | + | //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: | ||
+ | |||
+ | <code> | ||
+ | /dev/mmcblk0p1 /boot ext4 defaults 0 1 # /boot on the SD card | ||
+ | /dev/sda1 / ext4 defaults 0 1 # root on SATA drive | ||
+ | </code> | ||
+ | |||
+ | ====== Stop services ====== | ||
+ | You should stop this service before to proceed the copy, else there is a risk your mysql database to be corrupted. | ||
+ | <code> | ||
+ | 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 | ||
+ | </code> | ||
+ | |||
+ | ====== 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]]) | ||
+ | |||
+ | <code> | ||
+ | mkdir -p /tmp/sata | ||
+ | mount /dev/sda1 /tmp/sata | ||
+ | rsync -aAXv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} / /tmp/sata | ||
+ | </code> | ||
+ | |||
+ | |||
+ | 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. | ||
+ | |||
+ | <code> | ||
+ | cd /tmp/sata | ||
+ | mv boot boot.old | ||
+ | mkdir boot | ||
+ | mount /dev/mmcblk0p1 boot | ||
+ | rsync -av boot.old/ boot/ | ||
+ | </code> | ||
+ | |||
+ | 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. | ||
+ | |||
+ | <code> | ||
+ | cd /boot | ||
+ | rm -rf * # /!\ proceed carefully /!\ | ||
+ | mv /boot.old/* . | ||
+ | rmdir /boot.old | ||
+ | </code> | ||
+ | |||
+ | Everything should be fine now ! | ||
+ | |||
+ | An alternative approach: remove everything from ''/boot'', then run ''update-initramfs -u''. This will regenerate everything necessary inside ''/boot''. |