After further investigation, it turns out that it is more than network access that is lost, but complete interactive access. The instance is indeed restarted, but it blocks in the early boot phases, while running the initscripts Here is how to better reproduce the problem : 1) Start an instance normally and ssh to it 2) Modifiy the /etc/default/grub file like this : GRUB_CMDLINE_LINUX_DEFAULT="console=ttyS0 earlyprintk=ttyS0,keep debug=vc" 3) Reboot the instance $ sudo reboot 4) ssh to the instance and run 'sudo reboot' closely followed by 'euca-reboot-instances ${instanceid}' Depending on how the instance fails, the last bits of boot data might be reported by euca-get-console-output ${instanceid}' or by looking in /var/lib/nova/instances/${instanceid}/console.ring. Here are a few examples : test 1: + [ -f /scripts/init-top/ORDER ]^M + . /scripts/init-top/ORDER^M + /scripts/init-top/all_generic_ide^M + [ -e /conf/param.conf ]^M + /scripts/init-top/blacklist^M + [ -e /conf/param.conf ]^M + /scripts/init-top/udev^M + [ -e /conf/param.conf ]^M + maybe_break modules^M + egrep -q (,|^)modules(,|$)^M + echo ^M [ 0.976683] udevd[80]: starting version 175^M [ 0.976683] udevd[80]: starting version 175^M + [ n != y ]^M + log_begin_msg Loading essential drivers^M + _log_msg Begin: Loading essential drivers ... ^M + [ n = y ]^M + printf Begin: Loading essential drivers ... ^M Begin: Loading essential drivers ... + load_modules^M + [ -e /conf/modules ]^M + [ n != y ]^M + log_end_msg^M + _log_msg done.\n^M + [ n = y ]^M + printf done.\n^M done.^M + [ -n ]^M + maybe_break premount^M + echo ^M + egrep -q (,|^)premount(,|$)^M + [ n != y ]^M + log_begin_msg Running /scripts/init-premount^M + _log_msg Beg Test 2: + egrep -q (,|^)mount(,|$)^M + echo ^M + log_begin_msg Mounting root file system^M + _log_msg Begin: Mounting root file system ... ^M + [ n = y ]^M + printf Begin: Mounting root file system ... ^M Begin: Mounting root file system ... + . /scripts/local^M + parse_numeric /dev/disk/by-uuid/d26039a8-0240-4301-b38d-fd1aceedac9f^M + return^M + maybe_break mountroot^M + echo ^M + egrep -q (,|^)mountroot(,|$)^M + mountroot^M + pre_mountroot^M + [ n != y ]^M + log_begin_msg Running /scripts/local-top^M + _log_msg Begin: Running /scripts/local-top ... ^M + [ n = y ]^M + printf Begin: Running /scripts/local-top ... ^M Begin: Running /scripts/local-top ... + run_scripts /scripts/local-top^M + initdir=/scripts/local-top^M + [ ! -d /scripts/local-top ]^M + return^M + [ n != y ]^M + log_end_msg^M + _log_msg done.\n^M + [ n = y ]^M + printf done.\n^M done.^M + [ /disk/by-uuid/d26039a8-0240-4301-b38d-fd1aceedac9f = /dev/disk/by-uuid/d26039a8-0240-4301-b38d-fd1aceedac9f ]^M + [ -z ]^M + wait-for-root /dev/disk/by-uuid/d26039a8-0240-4301-b38d-fd1aceedac9f 30^M Test 3 + egrep -q (,|^)mountroot(,|$)^M + mountroot^M + pre_mountroot^M + [ n != y ]^M + log_begin_msg Running /scripts/local-top^M + _log_msg Begin: Running /scripts/local-top ... ^M + [ n = y ]^M + printf Begin: Running /scripts/local-top ... ^M Begin: Running /scripts/local-top ... + run_scripts /scripts/local-top^M + initdir=/scripts/local-top^M + [ ! -d /scripts/local-top ]^M + return^M + [ n != y ]^M + log_end_msg^M + _log_msg done.\n^M + [ n = y ]^M + printf done.\n^M done.^M + [ /disk/by-uuid/7b3d7423-8b7e-4354-bd7b-df633a510c7c = /dev/disk/by-uuid/7b3d7423-8b7e-4354-bd7b-df633a510c7c ]^M + [ -z ]^M + wait-for-root /dev/disk/by-uuid/7b3d7423-8b7e-4354-bd7b-df633a510c7c 30^M + FSTYPE=ext4^M + [ -n ]^M + [ -z ext4 ]^M + [ -z ext4 ]^M + [ -z ext4 -a ! -e /dev/disk/by-uuid/7b3d7423-8b7e-4354-bd7b-df633a510c7c ]^M + [ -z ]^M + [ -n ext4 ]^M + ROOTFSTYPE=ext4^M + [ n != y ]^M + log_begin_msg Running /scripts/local