c.1300, from Old English genog, a common Germanic formation (cf. Old Saxon ginog, Old Frisian enoch, Dutch genoeg, Old High German ginuog, German genug, Old Norse gnogr, Gothic ganohs).
This is a compound of ge- "with, together" (also a participial, collective, intensive, or perfective prefix) + root -nah, from PIE *nek- "reach, attain" (cf. Sanskrit asnoti "reaches," Hittite ninikzi "lifts, raises," Lithuanian nešti "to bear, carry," Latin nancisci "to obtain").
It is the most prominent among the surviving examples of Old English ge-, the equivalent of Latin com- and Modern German ge-, from PIE *kom- "beside, near, by, with" (see com-).
Meaning "moderately, fairly, tolerably" (good enough) was in Middle English. Understated sense of have had enough "have had too much" was in Old English (which relied heavily on double negatives and understatement). Colloquial 'nough said is attested from 1839.