Constraint matrix for 2 atoms on general position and 1 atom on a (u,u,u) special position

ZeroMatrix[m_,n_]:=ConstantArray[0,{m,n}]
Z=ArrayFlatten[{{IdentityMatrix[3],ZeroMatrix[3,3]   , ZeroMatrix[3,1]},
                                {ZeroMatrix[3,3]   , IdentityMatrix[3],ZeroMatrix[3,1]},
                                {ZeroMatrix[3,3]  ,  ZeroMatrix[3,3]   ,  ConstantArray[1,{3,1}]}}];
Z//MatrixForm

Floating origin direction

v=ConstantArray[1,9];
v//MatrixForm

Compute a basis of orthonormal vectors s.t. the first one is v (displayed by columns)

vec=IdentityMatrix[9];
vec[[All,1]]=v;
vec//MatrixForm
base=Orthogonalize[vec\[Transpose]]\[Transpose];
base//MatrixForm

Construct a would-be normal matrix AA s.t. v is a singular vector

AA=Sum[i KroneckerProduct[base[[All,i]],base[[All,i]]],{i,2,9}];
{L,V}=Eigensystem[AA];
L
V\[Transpose]//MatrixForm

Constrained normal matrix which has a singularity too

ZAAZ=N[Z\[Transpose].AA.Z];
{L,V}=Eigensystem[ZAAZ];
L
V[[-1]]

Blunt floating origin restraint: apply it to AA ignoring special positions and then apply constraints

ZAApZ=N[Z\[Transpose].(AA+100KroneckerProduct[v,v]).Z];
{L1,V1}=Eigensystem[ZAApZ];
L1
V1[[1]]

Alternative: apply constraints first and then apply floating origin restraints

w=ConstantArray[1,7]
ZAAZp=N[Z\[Transpose].AA.Z+100KroneckerProduct[w,w]];
{L2,V2}=Eigensystem[ZAAZp];
L2
V2[[1]]