FAQ
> What is GStickOS?
> How do I install GStickOS?
> Is GStickOS compatible with my hardware?
> Will GStickOS makes permanent changes to my stick?
> How can I update GStickOS?
> Is there a guide on how to use it?
> What about games? Are there any included?
> How can I play games?
> Is there WiFi connection?
> Why this page is so ugly?
> I want to SSH into GStickOS
> I want to copy some files to the SD
> The extended partition is not large enough!
The extended partition (mounted under /mnt/extended/
) is as big as the image you downloaded. If you put it on large SD (e.g. > 2GB) you can resize the partition to take the full available space. It involves entering some commands on the terminal, there's no easy way yet:
- ssh into the stick from a terminal (yes, in this weird world even windows powershell can do ssh): "ssh root@STICK_IP", replacing with the IP of the stick on your network. The password is
gstickos
- enter the command
ps | grep retroarch
and note the first column of the first two rows (two numbers, usually something in the 1000 range). Let's say you got 1262 and 1272 - type
kill -9 1262 1272
with the numbers from the step above. This will kill retroarch (it's ok) - type
umount /mnt/extended
- type
resize2f /mnt/mmcblk0p5
- wait, it might take long to finish: you can tell it did finish when a message starting with "The filesystem size is now" is shown
- type
reboot
, the stick will reboot and you should have your whole SD available
> I want to hack GStickOS
Fair enough, as long as you share your improvements with us :) Here are a few hints to get started:
- Use Linux. A virtual machine with it it's ok too. Don't use Windows, you'll regret it
- GStickOS is Busybox based. This, among other things, means you have to be comfortable using the CLI
- The SD is not mounted without your intervention: without being too technical, this is due to how they build the hardware of the stick and cannote be changed easily (you should flash a custom bootloader on an internal unlabelled chip, if you're into it let me know)
- The SD contains two partitions: a root fs and and extended partition. To mount them you have to specify an offset to the
mount
command. The offsets you need are 10MB and 138MB. Say you want to mount the extended partition, the command issudo mount -oloop,offset=$((138 * 1024 * 1024)) /dev/sdX /media/sd
. Be sure to specify the correct path of the sd (i.e. replace/dev/sdX
) and mount point (i.e./media/sd
) - Everything is built from scratch with a custom toolchain, from the base OS (Busybox) to Retroarch and its cores. I made a docker image of the toolchain (here) with wich you should be able to recompile everything, kernel included. A word of warning: using toolchains is the first step down the rabbit hole. My only clue here is that after you load the docker image you should source the
env.sh
file. - Most cores build without modification: this mean that if you have your docker container running (and
env.sh
sourced) you should be able to justmake
them all. Some of them require small to big changes though, from updating some configurations to recompiling libraries and frameworks. - It's easy to be stuck with the toolchain, especially because it's based on an older GCC (4.9.2) and the equivalent glibc. Reach the Discord channel if you want to ask questions, I'm not always there but I can try answer your questions.