I wrote some code (which was rather tricky to write!) that can find the kernel of a linear map over Z. This will give all solutions S to Ax = 0, if A is an integer matrix. This is useful since if you have any particular solution x to Ax=b, then all other solutions are of the form x + s for s in S.
sage: a = matrix(ZZ,2,2,[2,4, 4,8]); a
[2 4]
[4 8]
sage: a.kernel()
Free module of degree 2 and rank 1 over Integer Ring
Echelon basis matrix:
[ 2 -1]
sage: a.kernel().basis()
[
(2, -1)
]
Regarding finding a particular solution, just find a solution over QQ (easy using Sage's solve_right()) and clear denominators.
The above will make sense to somebody who knows linear algebra, but might not otherwise.
William