An easy way to fix problems like this is often to boot from a live system, mount the root partition on
/mnt and then rename the file.
If you don't have a live system or a means of making one, or you don't have physical access to the system but you can reboot and get the GRUB menu, you can use the GRUB editor to get a root shell and rename the file.
Reboot or power off, switch on and, if you don't normally see the GRUB menu on boot, press Shift or Esc to get to the GRUB menu.
Move the cursor down to Advanced Options for Ubuntu and press enter, then press e to edit the boot options (one time only - changes here will not be permanent, so we don't have to clean up afterwards).
You will see a screen that looks something like this1:
Move the cursor down to the line that starts with
linux and then move the cursor to the end of that line, or anywhere among the kernel boot parameters there. Be sure you are on the correct line and type carefully here, as the system may fail to boot without
/etc in place.
Add the text
init=/bin/bash and press F10 to boot.
This will start the system with a Bash shell as init. You will get a root shell and the filesystem will be mounted read only.2 To make the filesystem writable, enter the command
mount -o remount,rw /
Now you can rename
/etc (you may want to
mv /apache2 /etc
Now you can reboot, or complete the boot normally from here by having the root shell replace itself with the normal init system3:
I tested this procedure on Ubuntu MATE 18.04.
1 Many thanks to Kulfy for obtaining a good quality screenshot of the GRUB editor from VirtualBox!
2 Although PATH cannot be set from the config files in
/etc in this scenario, Bash will automatically set one.
exec systemd doesn't work for you,
exec /sbin/init should do the trick. If not,
readlink -e /sbin/init should give the path to whatever init program should be running, which you can then
exec with its full path. If you can't proceed this way, simply enter