Nonlinear waves in a forced channel flow of two contiguous homogeneous fluids of different densities are considered. Each fluid layer is of finite depth. The forcing is due to an obstruction lying on the bottom. The study is restricted to steady flows. First a weakly nonlinear analysis is performed. At leading order the problem reduces to a forced Korteweg–de Vries equation, except near a critical value of the ratio of layer depths which leads to the vanishing of the nonlinear term. The weakly nonlinear results obtained by integrating the forced Korteweg–de Vries equation are validated by comparison with numerical results obtained by solving the full governing equations. The numerical method is based on boundary integral equation techniques. Although the problem of two–layer flows over an obstacle is a classical problem, several branches of solutions which have never been computed before are obtained.