Welcome! Log In Create A New Profile

Advanced

A safer way to hack GoFlex Home

Posted by ElTopo 
A safer way to hack GoFlex Home
August 18, 2013 05:15PM
Recently (i.e., July, 2013) I tried to install debian wheezy on my Seagate GoFlex Home (3TB), following the instruction at
http://projects.doozan.com/debian/

at first install_uboot_mtd0.sh complained that it could not detect my uboot version, after I forced "Seagate GoFlex Home" the installation then continued... until later it printed out "FATAL: kenel too old" and failed.

Since I don't see Jeff has actively posted to the forum for awhile, I felt kind of helpless.

I also checked archlinux ARM forum, some people reported problems on GoFlex Home with archlinux ARM, unfortunately, it seems not much helps there either.

At this point, I was quite reluctant to modify GoFlex Home's nandflash with new uboot/kernel/initrd, and seriously re-thought if I should.

My goal: to be able to run some applications that seagate does not include in the original GoFlex Home linux, for example,
1. some basic utilities, like diff
2. full version of vim
3. other applications such as tmux, htop, svn, git, bvi, etc.
4. a normal sshd that does not require me to use the super long username

Neither of these need the latest kernel, or the real debian system.

So I decided that I won't modify GoFlex Home's nandflash (uboot/kernel/initrd), instead, I just create an ext3 filesystem image, install applications there, then mount the image to /opt.

This works pretty well, now I have my GoFlex Home box running all my favorite applications in seagate's original linux system.

Pros:
1. this does NOT void seagate's warranty (no changes applied to nandflash, only small changes made to rootfs, all other changes are limited in the filesystem image on your harddisk/usb drive (mounted to /opt)
2. this does not brick GoFlex Home box (unless you do something like dd/nandwrite to mtd0)
3. if GoFlex Home box acts weird, you can always umount the filesystem image from /opt, worst case, re-flash to seagate's factory default should work
4. all seagate's service, like access from web/internet, system update, etc., should still work

Cons:
1. you cannot upgrade to a newer kernel, you have to stay with seagate's
2. you cannot upgrade to a new linux (basic rootfs) system, you have to stay with seagate's

Here's how I did it:

I created a 1GB filesystem image file:
LXLLOCALFS="/home/lxl/personal/lxllocal/lxllocal.ext3fs"
and wrote a shell script to check/mount/umount the filesystem image to/from /opt:
LXLCHKUSRLOCAL="/home/lxl/personal/bin/lxl_chk_localopt.sh"
another shell script for root to mount /opt at booting time and start dropbear:
"/root/bin/root_startup.sh"
also saved a flag file to be checked if the filesystem image is mounted to /opt:
OPTMOUNTEDFF="/opt/lxllocal"

=======================================================
changes to seagate's rootfs
=======================================================

1. created /etc/profile.d/lxl.sh

# make PATH fixed, order: goflexhome oringinal --> /opt --> user's
# allow normal user to use admin cmds
export PATH=/sbin:/usr/sbin:/bin:/usr/bin:/opt/sbin:/opt/bin:~/bin:

export LC_ALL=en_US.UTF-8
export VIM=/opt/share/vim
export EDITOR=vim

alias xfs='/home/lxl/personal/bin/lxl_chk_localopt.sh'
alias vi='/opt/bin/vim -N'
# for ipkg list work on a read-only filesystem
alias ipkg='ipkg --tmp-dir=/tmp'


2. created /etc/ld.so.conf.d/opt.conf
/opt/lib/


3. logoff and re-login to load /etc/profile.d/lxl.sh

=======================================================
create filesystem image file
=======================================================

The reason I am using an ext3 filesystem image, not a softlink to a directory, is because NTFS fs does not handle softlink right.
1. go to the directory you want to keep the image file:
cd /home/lxl/personal/lxllocal

make sure create the image file on the harddisk or external usb drive, not in seagate's rootfs!
this is bad:
[ sghack ~ ] df .
Filesystem Size Used Avail Use% Mounted on
ubi0:rootfs 212M 162M 50M 77% /
this is good:
[ sghack ~/personal/lxllocal ] df .
Filesystem Size Used Avail Use% Mounted on
/dev/sda 2.8T 1.3T 1.5T 46% /home/lxl/GoFlex Home Personal

2. create a 1GB file, should be enough for many applcations... you can always recreate the image file with bigger size
dd if=/dev/zero of=lxllocal.ext3fs bs=1024 count=1048576
mkfs.ext3 -j -m 10 -L LXLLOCAL lxllocal.ext3fs
tune2fs -c -1 -i 0 lxllocal.ext3fs


3. test the filesystem image by mounting it:
mkdir 1g
sudo mount -t ext3 -o loop,rw lxllocal.ext3fs 1g
df 1g
mount | grep 1g


if all works, umount it from 1g
sudo umount 1g
rmdir 1g



=======================================================
install ipkg in filesystem image
=======================================================

1. mount the filesystem image to /opt
sudo mount -t ext3 -o loop,rw lxllocal.ext3fs /opt


2. create the flag file /opt/lxllocal
touch /opt/lxllocal


3. install ipkg:
go to http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable/
find ipkg-opt package file and download it
as the time of writing, the url is:
http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable/ipkg-opt_0.99.163-10_arm.ipk

cd /tmp
wget http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable/ipkg-opt_0.99.163-10_arm.ipk
mkdir ipkg-opt
cd ipkg-opt
tar -zxvf ../ipkg-opt_0.99.163-10_arm.ipk
mkdir data
cd data
tar -zxvf ../data.tar.gz


as root (sudo):
sudo cp -a opt/* /opt
sudo /opt/bin/ipkg -force-reinstall install /tmp/ipkg-opt_0.99.163-10_arm.ipk


sudo vi /opt/etc/ipkg.conf

search for dest root /
insert a line before it:
src cs08q1armel http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable

update /opt
sudo ipkg update
sudo ipkg upgrade


=======================================================
install applications in filesystem image
=======================================================

as root, you can install packages you like, for example,
sudo ipkg install lsof
sudo ipkg install vim
sudo ipkg install htop
sudo ipkg install tmux

make sure /opt is mounted rw when you install packages.

=======================================================
use /opt
=======================================================

1. when use /opt normally, mount the filesystem image read-only

mount
sudo mount -t ext3 -o loop,ro lxllocal.ext3fs /opt

or re-mount
sudo mount -o remount,ro /opt


2. only mount it read/write when you need to change /opt (install/uninstall
packages, modify conf, etc.)

3. if seagate has an package installed, you probably don't want to install it
in /opt, for a list of seagate's installed packages:
rpm -qa


4. you can backup the filesystem image file when it's mounted read-only, simple copy/backup the file.

5. if you cannot umount /opt, use lsof to find out which process(es) is/are locking /opt:
[ sghack ~/personal/bin ] sudo /opt/sbin/lsof /opt
Password:
audit_log_user_command(): Connection refused
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
dropbear 10209 root txt REG 7,1 182872 82715 /opt/sbin/dropbearmulti
lsof 15439 root txt REG 7,1 125544 82088 /opt/sbin/lsof
lsof 15455 root txt REG 7,1 125544 82088 /opt/sbin/lsof
dropbear 32378 root txt REG 7,1 182872 82715 /opt/sbin/dropbearmulti

=======================================================
use xfs (lxl_chk_localopt.sh) / root_startup.sh
=======================================================

to manually mount/umount /opt

xfs (lxl_chk_localopt.sh) can be used by normal user, if it needs root privilege it uses sudo and asks for password.

optionally, use root_startup.sh with crontab to automatically mount /opt and run service at system booting time, the script waits for harddisk is mounted and filesystem image is accessible, then mounts the image at /opt (read-only), then starts dropbear.

I actually installed dropbear (port 2222) along with seagate's original openssh server (port 22), so I can login with my normal user name (dropbear) or the long user name (port 22), I made the following changes in /opt
1. enable sftp-server from dropbear connections:
cd /opt/libexec
sudo ln -sf /usr/libexec/openssh/sftp-server .

2. disable root:
sudo vi /opt/etc/init.d/S51dropbear

add -w for dropbear


=======================================================
install software from source code
=======================================================

bvi is not available from optware release, so I installed it from source code

install develop tools, as root, with /opt mounted rw:
sudo ipkg install gcc
sudo ipkg install make
sudo ipkg install libc-dev
sudo ipkg install ncurses
sudo ipkg install ncurses-dev

then download bvi source code, compile and install
wget http://prdownloads.sourceforge.net/bvi/bvi-1.3.2.src.tar.gz
tar -zxvf bvi-1.3.2.src.tar.gz
cd bvi-1.3.2
./configure --prefix=/opt
make
sudo make install


That's pretty much of it. Here's a list of running processes in my GoFlex Home 3TB now (logged in from dropbear server, started tmux and htop)

[ sghack ~ ] pstree
init─┬─access-patrol───2*[{access-patrol}]
     ├─afpd
     ├─agetty
     ├─avahi-daemon───avahi-daemon
     ├─btsync───6*[{btsync}]
     ├─cnid_metad
     ├─crond
     ├─cupsd
     ├─dbus-daemon
     ├─dropbear───dropbear───bash───tmux
     ├─httpd───2*[httpd]
     ├─klogd
     ├─lld2d
     ├─locator-server
     ├─minidlna───{minidlna}
     ├─mt-daapd───{mt-daapd}
     ├─mynetworkd───{mynetworkd}
     ├─nmbd
     ├─ntpd───ntpd
     ├─oe-appserver
     ├─oe-spd
     ├─seagate-lifecyc───{seagate-lifecyc}
     ├─smbd───smbd
     ├─spindownd
     ├─sshd
     ├─syslogd
     ├─tmux─┬─bash───pstree
     │      └─bash───htop
     ├─udevd
     ├─usbreaderd
     └─vsftpd
Attachments:
open | download - lxl_chk_localopt.sh (3 KB)
open | download - root_startup.sh (992 bytes)
Re: A safer way to hack GoFlex Home
May 04, 2014 10:36PM
Hello,

I have the GoFlex Home, It was working fine in private network (Static IP Addr 192.254.x.x but no gateway to Internet), till I try to update firmware. Firmware update process fails few times. Manually reboot Device, Device does not accessible via IP address. Pressing Reset with paper clip, somehow, it been reset and the Static IP Addr lost, and got IP address from DHCP server, Only pingable - (GoFlex echo/reply the ping request) , abd not able to be accessed via web browser.

I have managed to remove the Hard drive out from the case without damaging any part (learned via youtube). I connected to Hard drive to SATA <--> USB3.0 and connected to Windows 8.1. The PC WIndows 8.1 recongized the drive, but Popups, Hard drive needs to Format in order for it read (seems like when connect USB flash drive with Linux format into Windows). So I cancel; and connected the hard drive to Ubuntu, But Ubuntu does not recognize the USB hard drive either. Do you know the hard drive for GoFlex with which filesystem / format?

I don't worry about the GoFlex, Just like to retrieve data from the hard drive.

Any help would be appreciated. Thanks
Re: A safer way to hack GoFlex Home
May 05, 2014 02:16AM
Looks like the stock GoFlex Home uses Paragon ufsd driver for NTFS. It's non-free and closed source software. If the data is important, you could try to purchase or get a trial version on to your PC if you can't read it as regular NTFS volume.

-bodhi
===========================
Forum Wiki
bodhi's corner (buy bodhi a beer)
Re: A safer way to hack GoFlex Home
May 05, 2014 11:38AM
Thanks for your input.

I found http://www.paragon-software.com/home/ntfs-linux-per/download.html

WIll I download this software and install it on my Windows 8.1 PC, then connecting the Hard Drive (from GoFlex Home) to SATA-USB then to Win 8.1 PC? Just want to make sure that Paragon software will not screw up and messup my Windows 8.1 PC. Or you would suggest different and correct one.
Re: A safer way to hack GoFlex Home
May 05, 2014 02:43PM
Hi dragon,

I have not used Paragon software so can't advise.

-bodhi
===========================
Forum Wiki
bodhi's corner (buy bodhi a beer)
Re: A safer way to hack GoFlex Home
May 26, 2014 01:57PM
This is strange.

Try using this, it might teel you what FS is used:
http://www.partitionwizard.com/free-partition-manager.html


What result do you get connecting hdd into usb 2.0 ?
Author:

Your Email:


Subject:


Spam prevention:
Please, enter the code that you see below in the input field. This is for blocking bots that try to post this form automatically. If the code is hard to read, then just try to guess it right. If you enter the wrong code, a new image is created and you get another chance to enter it right.
Message: