mikrotik_snippets/linux/debian-textonly-qemu.txt

189 lines
5.7 KiB
Plaintext

### Install text only Debian GNU/Linux as qemu guest
* Create the hdd disk image.
qemu-img create -f qcow2 debian.qcow2 16G
* Basic networking: NAT
As root:
tunctl -t tap0 -u username
ifconfig tap0 192.168.45.1 netmask 255.255.255.0 up
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
* Run qemu to install the guest operating system.
qemu-system-x86_64 \
-name DEBIAN1 \
-m 512 \
-k en-us \
-smp cpus=1 \
-enable-kvm \
-hda debian.qcow2 \
-cdrom /path/to/debian-x.x.x-amd64-DVD-1.iso \
-serial telnet::2000,server,nowait \
-monitor tcp:127.0.0.1:4000,server,nowait \
-curses \
-boot d \
-net none \
-net nic,model=e1000,vlan=1,macaddr=00:01:00:ff:01:01 \
-net tap,vlan=1,ifname=tap0,script=no,downscript=no
* The text "640 x 480 Graphic mode" appears in the center of screen.
Press ESC to see the prompt "boot:".
Enter "help" to see the menu.
Press F3 to see the available boot methods.
Press F8 to see how to disable framebuffer.
To install in text mode, use:
"install vga=normal fb=false" or
"expert vga=normal fb=false"
* Make a normal installation.
Select keyboard: EN US
* When the installation is done, the guest machine reboot and
goes back to the CD installer.
Enter to monitor mode with ESC+2 or "telnet 127.0.0.1 4000"
from another terminal and execute "quit", or kill the qemu
process to poweroff the guest machine.
* Disable framebuffer in the guest operating system.
* Mount the guest hdd file.
modprobe nbd max_part=63
qemu-nbd -c /dev/nbd0 debian.qcow2
mount /dev/nbd0p1 /mnt/
* Disable framebuffer and enable serial console in grub.
Edit /mnt/etc/default/grub.
GRUB_TERMINAL="console serial"
GRUB_TERMINAL_OUTPUT="console serial"
GRUB_CMDLINE_LINUX="vga=normal nomodeset console=tty1 console=ttyS0,115200"
GRUB_CMDLINE_LINUX_DEFAULT="quiet nomodeset console=tty1 console=ttyS0,115200"
GRUB_GFXPAYLOAD_LINUX="text"
GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"
* Update grub.
mount --bind /dev /mnt/dev
mount --bind /dev/pts /mnt/dev/pts
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
chroot /mnt
grub-install /dev/nbd0
grub-install --recheck /dev/nbd0
update-grub
exit
umount /mnt/sys
umount /mnt/proc
umount /mnt/dev/pts
umount /mnt/dev
* Umount the guest hdd file.
umount /mnt/
qemu-nbd -d /dev/nbd0
rmmod nbd
* Boot the virtual machine.
qemu-system-x86_64 \
-name DEBIAN1 \
-m 512 \
-k en-us \
-smp cpus=1 \
-enable-kvm \
-hda debian.qcow2 \
-serial telnet::2000,server,nowait \
-monitor tcp:127.0.0.1:4000,server,nowait \
-curses \
-boot c \
-net none \
-net nic,model=e1000,vlan=1,macaddr=00:01:00:ff:01:01 \
-net tap,vlan=1,ifname=tap0,script=no,downscript=no
* In the grub menu, edit the first entry.
* Change root=/dev/nbd0p1 to root=/dev/sda1
* CTRL-x to boot
* Login as root.
* Update grub.
grub-mkconfig -o /boot/grub/grub.cfg
update-grub
* To change the keyboard layout:
dpkg-reconfigure keyboard-configuration
It is convenient to leave it in English.
* Reboot.
reboot
* Change /etc/apt/sources.list to a mirror near you.
Disable the "deb cdrom" entry.
* Update & upgrade.
apt-get update
apt-get dist-upgrade
* Install packages.
apt-get install aria2 bridge-utils bmon bzip2 ccrypt \
dnsutils elinks ethtool file flip fping ftp git \
hdparm hping3 ifstat iperf3 iperf iptraf \
joe less locate lsb-release lshw lsof lynx \
mc mtr netdiag net-tools nload nmap nmon \
p7zip psutils rar rename rsync screen socat \
ssh tcpdump tcptraceroute telnet time traceroute \
tshark uml-utilities unzip vlan wput wipe \
zip man dstat ifstat nicstat sysstat
* Clean.
apt-get clean
apt-get autoremove
* Disable daemons.
systemctl disable cron.service
systemctl disable rsync.service
systemctl disable rsyslog.service
systemctl disable sysstat.service
systemctl disable uml-utilities.service
systemctl disable systemd-timesyncd.service
* If necessary, edit /etc/network/interfaces to
configure a fixed IP address.
* Reboot.
reboot
* Remove unnecessary files.
* Zero out the disk.
dd if=/dev/zero of=/tmp/zero
sync
rm -f /tmp/zero
sync
poweroff
* Shrink the disk file.
mv debian.qcow2 debian.backup
qemu-img convert -O qcow2 debian.backup debian.qcow2
* The debian.qcow2 file contain a clean Debian GNU/Linux.
You can make a backup for future use.
* To start in daemon mode:
qemu-system-x86_64 \
-name DEBIAN1 \
-m 512 \
-k en-us \
-smp cpus=1 \
-enable-kvm \
-hda debian.qcow2 \
-serial telnet::2000,server,nowait \
-monitor tcp:127.0.0.1:4000,server,nowait \
-display none \
-daemonize \
-boot c \
-net none \
-net nic,model=e1000,vlan=1,macaddr=00:01:00:ff:01:01 -net tap,vlan=1,ifname=tap0,script=no,downscript=no \
-net nic,model=e1000,vlan=2,macaddr=00:01:00:ff:01:02 -net socket,vlan=2,udp=127.0.0.1:9012,localaddr=:9002 \
-net nic,model=e1000,vlan=3,macaddr=00:01:00:ff:01:03 -net socket,vlan=3,udp=127.0.0.1:9013,localaddr=:9003 \
-net nic,model=e1000,vlan=4,macaddr=00:01:00:ff:01:04 -net socket,vlan=4,udp=127.0.0.1:9014,localaddr=:9004
* Done!