DVD drive opening automatically

Does Ubuntu 18.04 have the setcd package available? If it is, install it and then run:

sudo setcd -s /dev/sr0

It should output something like this:

/dev/sr0:
  Auto close tray:     cleared
  Auto open tray:      cleared
  Use O_NONBLOCK flag: set
  Lock tray:           set
  Check CD type:       cleared

If "Auto open tray" says "set" instead, running sudo setcd -o0 /dev/sr0 should fix your problem until the next reboot.

The root cause might be a tool in your desktop environment that can be used to mount removable disks. It polls the DVD drive every now and then. If the "Auto open tray" is set, the tray will open when the poll is done and the tool stops accessing the drive.

If disabling the "auto open" feature helps you, you might want to disable the "auto close" feature too, as it might try and close the drive just when you're about to place a disc on the tray. I had this problem with my system back in Debian 7 or so with KDE.

Ubuntu 18.04 has systemd, so probably the best way to make these settings persistent is to create a service file to run the necessary setcd command at boot time.

So, create a file in /etc/systemd/system with a descriptive name and a .service suffix. For example, let's call it /etc/systemd/system/dvd-stop-open.service. The contents of the file should be:

[Unit]
Description=Disable DVD auto-open
Documentation=man:setcd(1)

[Service]
Type=oneshot
ExecStart=/usr/bin/setcd -o0 /dev/sr0
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

Once the service file is created, enable the service:

sudo systemctl enable dvd-stop-open.service

Test by starting the service and verifying that the Active: field in service status says active (exited):

sudo systemctl start dvd-stop-open.service
systemctl status dvd-stop-open.service

Or alternatively, you can avoid changing systemd by simply inserting a '0' into /proc/sys/dev/cdrom/autoeject

Pick one:

Using rc.local:

echo 0 > /proc/sys/dev/cdrom/autoeject

Using /etc/crontab:

@reboot root    echo 0 > /proc/sys/dev/cdrom/autoeject

Or as a one-time, non-persistant across boots, command line use sudo:

echo 0 | sudo tee /proc/sys/dev/cdrom/autoeject

This will take effect immediately. No sysctl or service file restart needed...