WDMC-Ex2-Ultra
WDMC-Ex2-Ultra copied to clipboard
Enhanced Ram Disk and Linux Kernel for WD My Cloud Ex2 Ultra
Up-to-date firmware for WD My Cloud Ex2 Ultra
The sequence is:
- Update u-boot. It is needed to adjust load addresess for new Kernel and Ramdisk. See UBoot folder for details.
- Update kernel with compiled uImage file. See Kernel folder for details.
- Update ramdisk with compiled uInitrd file. See Ramdisk folder for detials.
- Set rootfs - the actuall Debian system. See Rootfs folder for detials.
This custom firmware supports full disk encryption on WD MyCloud Ex2 Ultra NAS
Support
- USB or SATA drive
- ext2,3,4, btrfs
- raid 0,1 and LVM
- LUKS-encrypted drive
- ssh-rescue shell
Make any changes of Ram Disk in initrd folder and recompile it with compile_ramdisk.sh to get new uInitrd (Ram Disk file)
Usage
Update Kernel if you have access to shell
wget https://raw.githubusercontent.com/vzhilov/WDMC-Ex2-Ultra/master/uImage (--no-check-certificate in case of error?) dd if=/dev/zero of=/dev/mtdblock1 dd if=uImage of=/dev/mtdblock1
Update ramdisk if you have access to shell
wget https://raw.githubusercontent.com/vzhilov/WDMC-Ex2-Ultra/master/uInitrd dd if=/dev/zero of=/dev/mtdblock2 dd if=uInitrd of=/dev/mtdblock2
If you don't have access to shell use USB UART connector (press "1" to stop autoboot):
Connect FT232RL USB UART Converter
NAS UART
o - Tx Rx
o - GND GND
o - 3.3v -
- - -
o - Rx Tx
Use Putty for connection via COM port
(take port number in Device Manager after installing UART driver, possibly from https://fox-exe.ru/Files/USB-UART/)
Serial line to connect: COM5
SPEED: 115200
Data bits: 8
Stop bits: 1
Parity: None
Flow control: XON/XOFF
usb start fatload usb 0:1 0xa00000 uImage fatload usb 0:1 0xf00000 uInitrd bootm 0xa00000 0xf00000
Reboot
reboot -f
Part your new HDDs
fdisk /dev/sda
(d) for delete any existing partitions
(n) for creating new partititions
We need to delete all partitions
Create Raid1
mdadm --create /dev/md0 --level=1 --raid-devices=2 --run /dev/sda /dev/sdb
Alternative, if second HDD will be added later
mdadm --create /dev/md0 --level=1 --raid-devices=2 --run /dev/sda missing mdadm --manage /dev/md0 --add /dev/sdb
Encrypt your new partition and open it
sudo cryptsetup -v -y -c aes-cbc-essiv:sha256 --iter-time 2000 --use-random luksFormat /dev/md0
cryptsetup luksOpen /dev/md0 cryptlvm
nohup dd if=/dev/urandom of=/dev/mapper/cryplvm &
#That's going to be few days.
#Check progress with 'ps ax | grep dd' to find out $pid and then kill -USR1 $pid.
#Then cat nohup.out
will show you the progress.
Create LVM logical volumes on encrypted partition
lvm pvcreate /dev/mapper/cryptlvm lvm vgcreate MyVolGroup /dev/mapper/cryptlvm lvm lvcreate -L 1024MB MyVolGroup -n swap -Zn lvm lvcreate -L 4096MB MyVolGroup -n root -Zn lvm lvcreate -l +100%FREE MyVolGroup -n data -Zn
#Scan for created volumes lvm vgscan --mknodes
Format and label your partitions
mkswap /dev/MyVolGroup/swap swapon /dev/MyVolGroup/swap mkfs.ext4 /dev/MyVolGroup/root mkfs.ext4 /dev/MyVolGroup/data
Then we install Debian Stretch kindly provided by Fox-exe.ru repository
mkdir /mnt/root mount /dev/MyVolGroup/root /mnt/root cd /mnt/root wget https://raw.githubusercontent.com/vzhilov/WDMC-Ex2-Ultra/master/debian-stretch-rootfs.tar.xz tar xvf debian-stretch-rootfs.tar.xz rm debian-stretch-rootfs.tar.xz
Update libs for new kernel
wget https://raw.githubusercontent.com/vzhilov/WDMC-Ex2-Ultra/master/libs-4.15.0-rc6.tar.gz tar xvf libs-4.15.0-rc6.tar.gz rm libs-4.15.0-rc6.tar.gz
Then we reboot
cd / umount /mnt/root sync reboot -f
When system boots after encryption
login: root password: mycloud
The system will boot only if a keyfile "key.luks" is presend on connected USB device with partition label "key". If no keyfile present then connect to the system by ssh on port 2222 with a user root, password root and open partition with the command: "cryptsetup -T 5 luksOpen $device cryptroot".
Run apt upgrade to upgrade to newest Debian
In the root file system put swapon /dev/mapper/MyVolGroup-swap mount /dev/mapper/MyVolGroup-data /mnt/data in rc.local, not in /etc/fstab
Couldn't make reset button to power off, so used cron with eth0 down instead: 0-59 * * * * /bin/ip a | /bin/grep -Eq ': eth0:.*state UP' || /sbin/poweroff