[Tutorial - Outdated] Odroid: - Move the filesystem to a USB Drive

Hi

Does anyone know how to move the filesystem to a USB Drive.
I’m working with ODroid-XU4 with Dietpi OS that is being display at http://odroid.com/dokuwiki/doku.php?id=en:odroid-xu4.
I saw couple of post here , one for raspberry pi, which does not work for Dietpi, I was not able to find /boot/cmdline.txt file. And another one that speed up USB device

I was able to do this on Raspberry Pi 2, but would like to try with Odroid-XU4 and USB SDD drive. I really want to speedup my read/write time.

Hope someone could help me with this task
Thanks
Jorge

Hi Jorge,

do not own a Odroid-XU4, but make a guide for all DietPi supported ODROID device.
You can give it a try and let us know, if it will work for you.

cu
k-plan
.

Hi,

edit by k-plan:

This Tutorial is outdated!
You can now use DietPi-Drive Manager.
It’s more simple and do all the steps for you with more options.

System:
DietPi V117 | ODROID-C1+ (e.g. in my case a fresh installation)
Micro SD-Card: - Verbatim 8GB Class 10 Micro SDHC
USB Device: - SanDisk Ultra Fit 64GB USB 3.0 drive
Boot up time: - ca. 25 sec

Note:

  • should work on Hardkernel ODROID devices like: C0, C1, C1+, C2 (tested) and XU4, XU3 (tested by user)
    Why to use this “extended version”?
    Because it’s possible to use more than only one drive attached to your device.



    # Preparation
  • Install some tools we’ll need later:
root@oDroid-C1-TEST:~# apt-get install rsync
  • Insert USB drive and check to see if usb is recognized:
rroot@oDroid-C1-TEST:~# lsusb
Bus 001 Device 003: ID 0781:5583 SanDisk Corp.
Bus 001 Device 002: ID 05e3:0610 Genesys Logic, Inc. 4-port hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
  • Locate the USB device name ( /dev/sdx ):
root@oDroid-C1-TEST:~# lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda           8:0    1  57.9G  0 disk
└─sda1        8:1    1  57.9G  0 part
mmcblk0     179:0    0   7.4G  0 disk
├─mmcblk0p1 179:1    0 128.5M  0 part /boot
└─mmcblk0p2 179:2    0   7.3G  0 part /

In this example, USB device is on sda. From this point on we use /dev/sda for the USB drive.

\

  • Formatting the USB drive:
root@oDroid-C1-TEST:~#  /DietPi/dietpi/dietpi-external_drive_setup



--------------------------------
 D I E T - P I
 External Drive Setup
 --------------------------------
 An Existing ext4 Drive has Been Found

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        57G  584M   54G   2% /mnt/usb_1

 Would you like to format this drive? [y/N] y



--------------------------------
 D I E T - P I
 External Drive Setup
 --------------------------------
 Drive ready to be formatted to EXT4

 WARNING: This will delete all data on the USB drive


 Do you wish to Format this drive? [y/N]   y

160505-0001.gif

  • Mounting USB device:
root@RPi-B-Plus:~# mount /dev/sda1 /mnt/usb_1/
  • Benchmark Filesystem and RAM IO performance
root@oDroid-C1-TEST:~# dietpi-config

10 Tools => Benchmarks Filesystem and RAM benchmarks => Flash Storage, USB Drive, RAM => Benchmark IO performance.
160505-0002.gif
# Preparing to change root device (system)

  • Now we need Partition unique UUID (UUID) of the USB device:
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 /

e.g. Partition unique UUID: abe28749-d59f-415b-9b60-75b1007eeee9

  • Backup your boot.ini file and edit it to include your new partition:
root@oDroid-C1-TEST:~# cp /DietPi/boot.ini /DietPi/boot.ini.sdcard
root@oDroid-C1-TEST:~# nano /DietPi/boot.ini
  • Edit the file and change your root=UUID=… to point to new filesystem partition with the find out Partition unique UUID (UUID)
# Boot Arguments
## Boot from SD-Card
## setenv bootargs "root=UUID=e139ce78-9841-40fe-8823-96a304a09859 rootwait ro ${condev} no_console_suspend vdaccfg=0xa000 logo=osd1,loaded,0x7900000,720p,full dmfc=3 cvbsmode=576cvbs hdmimode=${m} m_bpp=${m_bpp} vout=${vout_mode} ${disableuhs} ${hdmi_hpd} ${hdmi_cec} ${enabledac}"

## Boot from USB device
setenv bootargs "root=UUID=abe28749-d59f-415b-9b60-75b1007eeee9 rootwait rootdelay=10 ro ${condev} no_console_suspend vdaccfg=0xa000 logo=osd1,loaded,0x7900000,720p,full dmfc=3 cvbsmode=576cvbs hdmimode=${m} m_bpp=${m_bpp} vout=${vout_mode} ${disableuhs} ${hdmi_hpd} ${hdmi_cec} ${enabledac}"

Watch for "rootdelay=10 " and save the file!


  • Examples for other ODROID devices:

  • - - - C2 - - -

# Boot Arguments
## Boot from SD-Card
## setenv bootargs "root=UUID=e139ce78-9841-40fe-8823-96a304a09859 rootwait rw ${condev} no_console_suspend hdmimode=${m} m_bpp=${m_bpp} vout=${vout} fsck.repair=yes net.ifnames=0"

## Boot from USB device
setenv bootargs "root=UUID=abe28749-d59f-415b-9b60-75b1007eeee9 rootwait rootdelay=10 rw ${condev} no_console_suspend hdmimode=${m} m_bpp=${m_bpp} vout=${vout} fsck.repair=yes net.ifnames=0"
  • - - - XU4 / XU3 (tested by user) - - -
 #------------------------------------------------------------------------------------------------------
# Basic Ubuntu Setup. Don't touch unless you know what you are doing.
# --------------------------------
## Boot from SD-Card
## setenv bootrootfs "console=tty1 root=UUID=e139ce78-9841-40fe-8823-96a304a09859 rootwait ro fsck.repair=yes"

## Boot from USB device
setenv bootrootfs "console=tty1 root=UUID=abe28749-d59f-415b-9b60-75b1007eeee9 rootwait rootdelay=10 ro fsck.repair=yes"

As well watch for “ root=UUID= … ” and " rootdelay=10 " !


  • Stop the services:
root@oDroid-C1-TEST:~# /DietPi/dietpi/dietpi-services stop

 DietPi-Services
 Mode: stop
 Please wait...
 Completed
  • Copy the filesystem over to your new partition:
root@oDroid-C1-TEST:~# rsync -axv / /mnt/usb_1/
...
sent 485,999,479 bytes  received 431,075 bytes  7,314,745.17 bytes/sec
total size is 484,388,706  speedup is 1.00

Be patient - this will take some time!

  • Get your partition UUID for fstab:
root@oDroid-C1-TEST:~# lsblk -f
NAME        FSTYPE LABEL  UUID                                 MOUNTPOINT
sda
└─sda1      ext4          abe28749-d59f-415b-9b60-75b1007eeee9 /mnt/usb_1
...

e.g. UUID=abe28749-d59f-415b-9b60-75b1007eeee9

  • Backup and edit the fstab file on your new filesystem:
root@oDroid-C1-TEST:~# cp /mnt/usb_1/etc/fstab /mnt/usb_1/etc/fstab.sdcard
root@oDroid-C1-TEST:~# nano /mnt/usb_1/etc/fstab
  • Comment out the old filesystem at /dev/mmcblk0p2 and add the new line pointing to your new filesystem and add your UUID as indicated.
#Internal Drives---------------------------------------------------
proc            /proc           proc    defaults                                                                        0 0
/dev/mmcblk0p1  /boot           vfat    defaults,noatime,discard                                                        0 2
## rootfs on SD-Card
### /dev/mmcblk0p2  /               ext4    defaults,noatime,discard                                                    0 1
## rootfs on USB device
/dev/disk/by-uuid/abe28749-d59f-415b-9b60-75b1007eeee9    /        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
  • Comment out External Drives at /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

and save the file!

  • Unmount your USB device:
root@oDroid-C1-TEST:~# umount /dev/sda1
  • Cross the fingers and reboot your ODROID:
root@oDroid-C1-TEST:~# reboot

If your USB device have a activity LED, you can check here R/W activity.
Boot up time is now: ca. 20 sec

  • After your device has booted up, check the filesystem information:
root@oDroid-C1-TEST:~# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        57G  581M   54G   2% /
udev             10M     0   10M   0% /dev
tmpfs           190M  5.4M  185M   3% /run
tmpfs           475M     0  475M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           475M     0  475M   0% /sys/fs/cgroup
tmpfs            10M  1.1M  9.0M  11% /DietPi
tmpfs            20M   12K   20M   1% /var/log
tmpfs           475M     0  475M   0% /tmp
/dev/mmcblk0p1  129M   25M  104M  20% /boot
  • Create a new swap file (e.g. 101 MB):
root@oDroid-C1-TEST:~# dietpi-config

dietpi-config => 4 Advanced Options => 1 Swapfile Size
160505-0003.gif

  • Now benchmark filesystem and RAM IO performance again:
    160505-0004.gif
    … and reboot.


    Note:
  • To boot your device, you must have insert SD-Card any time. Without it will not boot.
  • If somethings goes wrong or your device doesn’t boot, power off your device, put SD-Card into your PC and restore "boot.ini.sdcard " to "boot.ini " on the DOS (FAT) partition named "boot "
    Put edited SD-Card back into your device and power on. It will boot and run the system (DietPi) now from SD-Card like before your modifications.

Hey k-plan,

thx a lot for this great tutorial! :smiley:

Worked like a charm!

This one should get a sticky in the board.

Thx again for your time, support and sharing your knowledge. :mrgreen:

mike175de

Hi Mike,

very nice to hear, it’s working for you.

Thanks for your response.

cu
k-plan

Hi k-plan

I was able to do what I needed. Great tutorial and pictures. Easy to follow. I couldn’t have ask for more. Thanks a lot. You can say that UX4 has been tested successfully.

Thanks once again

Jorge

Hi dyteso,

Done! :smiley:

Thanks for your response.

cu
k-plan

Great guide thanks - just got this going on an XU4.

I had moved my root to usb SSD before months on Odroid XU4. Today my SD died so it did not boot. How can I keep the installation on SSD and perform a new installation on a new SD? :thinking: :thinking: :thinking:
Any idea? Please HELP!

First are you sure the SD card has died? Have you tried to read/copy it on a Windows machine?

I would backup the SSD just in case, flash a new SD card with dietpi and use the instructions earlier in this thread to rebuild your system as it was.

Refer specifically to the sections on UUID and editing the boot.ini file.

Could this be updated now that the external drive scripts aren’t there anymore? I tried to do it manually (XU4) and everything was fine until the first reboot. It would be great if we could get drive-manager to find used or blank USB sticks & SDD’s to be setup and used for RootFS.

Thanks

Can i use this for the HC1/2? I only want to use the Hardrive for my userdata (Nextcloud/Ampache…) or is there an other way? During a fresh install i cant choose the hardrive (topic: https://dietpi.com/forum/t/odroid-hc2-cant-use-mount-hard-disk-edited/2341/1)

It doesn’t seem to be showing up, yet. Are you going to add this to the Wiki, too?