$M = \left(\begin{array}{cccc}0 & 1 & 0 & 0 \\-3 & 4 & 0 & 0 \\2 & -1 & 2 & 0 \\-1 & 1 & 1 & 2\end{array}\right)$.
I find the eigenvalues to be $\lambda = 2,2,3,1$.
Let $d_{i,\lambda}$ be the nullity of $(M - \lambda I)^i$.
I find that $d_{1,2} = 1, d_{2,2} = 2, d_{1,3} = 1, d_{2,3} = 1, d_{1,1} = 1, d_{2,1}=1$.
This can't be right. How is this supposed to be written in Jordan normal form?
After computing the characteristic polynomial, and having gone through all the kernels of the generalized eigenspaces you can use the following formula to get the JNF directly:
In your case, the computation is fairly easy, indeed you only have to use the fact that:
And since you only have one Eigenvalue having multiplicity greater than 1, you just need to check if its Eigenspace has dimension $1$ or $2$. In the second case your matrix will be simply diagonalizable, in the first, you will have a Jordanblock of size $2$ ($\begin{pmatrix}\lambda & 1 \\ 0 &\lambda \end{pmatrix}$)