Pat dry the pork roast and prepare a plastic container or freezer bag big enough to hold it plus some liquid.
Squeeze the juice from the orange, lime and lemon. Crush or finely chop the garlic and thinly slice the onion. Mix the juices with rest of ingredients (dry or fresh oregano, cumin, salt, garlic, onion and pepper) in the container/bag.
Add the pork into the marinade and turn or seal the bag and shake a little to cover all over. Leave the pork to marinade overnight in the fridge, ideally turning at least once.
When ready to cook, bring the pork out of the fridge ahead of time - around 30-60min - to allow it to come to room temperature. Preheat the oven to 325F/ 160C.
Place the pork in a roasting dish with the skin side up, sitting in a little of the citrus marinade juice. Save the rest of the marinade, including all of the onions. Baste the pork with the juice in the dish after 1-2hr and continue cooking. Roast for 3 hours, or a little more if needed, covering with foil if the top gets too brown. You should get an internal temp of at least 170F to be able to slice, or 190-200F to be able to shred when it's ready.
While the pork is cooking, bring the remaining marinade to a gentle simmer and cook for around 5 minutes to soften the onions. Serve this as a sauce over the pork when serving.