Adding fiber optic ethernet to a circuit
The 2km limit is imposed by the speed of light.  Ethernet works by listening for "quiet ether" and then sending its signal out.  It reads back what signal is on the Ethernet.  If someone else also decided to send, their transmission will garble your transmission.  And your transmission garbles theirs.  So they stop, back off, and wait a certain amount of time, and try again.  To avoid repeating conflicts, each sender backs off a random amount based on a negative-exponential distribution.

There is a minimum size of an Ethernet packet.  If the transmitter and receiver are too far apart, the sender will see a perfect transmission and not bother to retry, because the short packet will have been fully transmitted before the other packet arrives to interfere with it.  You can avoid this by using half-duplex trasnsmission, and using a different protocol with timeouts, but then it wouldn't be Ethernet, it would be something else.  You are free to implement a "something else" protocol on your fiber network, but you will have to write your own protocol stack.  Or ignore the Ethernet entirely and just implement the "something else" protocol directly.  Half-duplex will significantly degrade your bandwidth, and you need a way to hand-off transmittership; a two-node "token ring" might work.  But if you want Ethernet, it is not going to work, because the low-level protocols critically depend upon the speed of light.