| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548 |
- VLMCSD-FLOPPY(7) KMS Activation Manual VLMCSD-FLOPPY(7)
- NAME
- floppy144.vfd - a bootable floppy disk with Linux and vlmcsd(8)
- DESCRIPTION
- floppy144.vfd is an image of a bootable floppy that contains a minimal
- version of Linux and vlmcsd(8). It requires only 16 MB of RAM. Its pri-
- mary purpose is to run vlmcsd(8) in a small virtual machine which makes
- it easy to use vlmcsd(8) to activate the virtual machine's host com-
- puter which is not possible in Windows 8.1 and up. The floppy image is
- a standard 3,5" floppy with 1.44 MB storage. It is formatted with a
- FAT12 filesystem. The floppy can be mounted to apply several customiza-
- tions.
- SUPPORTED HYPERVISORS
- The floppy image has been tested with the following hypervisors:
- VMWare, VirtualBox, Hyper-V and QEMU
- Others are likely to work.
- SETUP
- Create a new virtual machine. Assign 16 MB of RAM. Add a floppy drive
- and attach floppy144.vfd to this drive. Do not create a virtual hard
- disk. Setup the virtual machine to boot from a floppy drive (VirtualBox
- has floppy boot disabled by default). If possible, setup a virtual
- machine with plain old BIOS (not UEFI). If you created an UEFI virtual
- machine, enable the compatibility support mode (CSM) to allow a BIOS
- compatible boot. Set number of CPUs to 1. The Linux kernel is not capa-
- ble of SMP. Remove IDE, SATA, SCSI and USB support if possible. The
- Linux kernel can't handle this and ignores any devices connected to
- these buses.
- Setup an ethernet card. The following models are supported:
- Intel PRO/1000
- AMD PCNET III
- AMD PCNET32
- VMWare vmxnet3 (paravirtualized driver used by VMWare)
- virtio (paravirtualized driver used by VirtualBox, QEMU, KVM and
- lguest)
- Most hypervisors emulate an Intel PRO/1000 or AMD PCNET32 by default.
- Selecting a paravirtualized driver slightly improves performance. In
- VirtualBox you can simply select virtio in the network configuration
- dialog. VMWare requires that you add or change the VMX file. Use 'eth-
- ernet0.virtualDev = "vmxnet3"' in your VMWare config file.
- If you are using QEMU, you must also setup a TAP adapter. Port redi-
- rection does not work to activate your own computer.
- CONFIGURATION
- floppy144.vfd can be customized to fit your needs. This is done by
- editing the file syslinux.cfg on the floppy image. The floppy image
- must be mounted. Under Linux you can simply attach floppy144.vfd to a
- loop device which is mountable like any other block device. For Windows
- you must use some software that allows mounting a floppy image, e.g.
- OSFMount <http://www.osforensics.com/tools/mount-disk-images.html>
- OSFMount works under all Windows versions beginning with Windows XP up
- to Windows 10 (32- and 64-bit).
- The default syslinux.cfg file looks like this:
- prompt 0
- TIMEOUT 50
- default dhcp
- LABEL dhcp
- KERNEL bzImage
- APPEND vga=773 quiet initrd=initrd KBD=us LIS-
- TEN=[::]:1688,0.0.0.0:1688 TZ=UTC0 IPV4_CONFIG=DHCP
- NTP_SERVER=pool.ntp.org HOST_NAME=vlmcsd ROOT_PASSWORD=vlmcsd
- USER_NAME=user USER_PASSWORD=vlmcsd GUEST_PASSWORD=vlmcsd
- INETD=Y WINDOWS=06401-00206-271-395032-03-1033-9600.0000-1652016
- OFFICE2010=06401-00096-199-204970-03-1033-9600.0000-1652016
- OFFICE2013=06401-00206-234-921934-03-1033-9600.0000-1652016
- HWID=36:4F:46:3A:88:63:D3:5F
- LABEL static
- KERNEL bzImage
- APPEND vga=773 quiet initrd=initrd KBD=fr LIS-
- TEN=[::]:1688,0.0.0.0:1688 TZ=CET-1CEST,M3.5.0,M10.5.0/3
- IPV4_CONFIG=STATIC IPV4_ADDRESS=192.168.20.123/24 IPV4_GATE-
- WAY=192.168.20.2 IPV4_DNS1=192.168.20.2 IPV4_DNS2=NONE
- NTP_SERVER=pool.ntp.org HOST_NAME=vlmcsd ROOT_PASSWORD=vlmcsd
- USER_NAME=user USER_PASSWORD=vlmcsd GUEST_PASSWORD=vlmcsd
- INETD=Y
- There are two configurations in this files: dhcp (for configuring the
- IPv4 network via DHCP) and static (for a static IPv4 configuration).
- The kernel always boots the dhcp configuration without asking (lines
- 'prompt 0' and 'default dhcp'). You can simply change the default con-
- figuration to static and then customize the APPEND line in the static
- configuration. For more details how to customize the syslinux.cfg file
- see syslinux(1).
- Each APPPEND line contains one or more items seperated by spaces. All
- items are case-sensitive. The following parameters can be customized:
- vga=vesa-video-mode
- Sets the VESA display mode for the virtual machine. The parame-
- ter is not optional. If you ommit it, you will not see anything
- on the screen. 773 means 1024x768 with 256 colors. See Wikipedia
- <https://en.wikipedia.org/wiki/
- VESA_BIOS_Extensions#Linux_video_mode_numbers> for more video
- modes. Note that all 16 color (4-bit) modes will not work. Use
- 8-bit (256 colors), 16-bit (65536 colors), 24-bit and 32-bit (>
- 16 Million colors) only. All modes above 1280x1024 are non-VESA-
- standard and vary for all (virtual) graphic cards.
- quiet This causes the kernel not display the its log during boot. You
- may omit quiet but it doesn't make much sense. The boot log is
- actually very verbose and scrolls away from screen quickly. If
- any errors occur during boot, they will be displayed even if
- quiet is present in the APPEND line. You may evaluate the com-
- plete boot log later by using the dmesg command or the menu on
- /dev/tty8.
- initrd=initial-ram-disk-file
- This defines the initial ram disk that the kernel will read.
- There is only one initial ram disk on the floppy thus leave ini-
- trd=initrd as it is.
- KBD=keyboard-layout-name
- This allows you to select the keyboard layout. keyboard-layout-
- name is usually the ISO 3166-1 (top level domain) code for a
- country. A list of valid keyboard-layout-names can be accessed
- via the menu system on /dev/tty8 (press ALT-F8). Note, that this
- is a keyboard driver only. There is no Unicode font support in
- floppy144.vfd (due to the fact that the kernel uses a generic
- VESA framebuffer device only). Characters beyond ASCII work for
- Western European languages only but not Eastern European, Greek,
- Cyrillic, Arabic, Hebrew, CJK and other languages. There is no
- need in floppy144.vfd to enter any characters outside ASCII. The
- purpose of the keyboard maps are that you will find characters
- like dash, backslash, brackets, braces, etc. at the usual place
- on your keyboard.
- LISTEN=PRIVATE[:tcp-port] | ip-address[:tcp-port][,ip-address[:tcp-
- port]][,...]
- One or more combinations of IP addresses and optional TCP port
- seperated by commas that vlmcsd(8) should listen on or PRIVATE
- to listen on all private IP addresses only. The default port is
- 1688. If you use an explicit port number, append it to the IP
- address seperated by a colon. If you use a port number and the
- IP address contains colons, you must enclose the IP address in
- brackets. For example 192.168.0.2,[fd00::dead:beef]:5678 causes
- vlmcsd(8) to listen on 192.168.0.2 port 1688 and fd00::dead:beef
- port 5678.
- WINDOWS=epid
- Defines the ePID that is used for Windows activations. If you
- ommit this parameter, vlmcsd generates a random ePID when it is
- started.
- OFFICE2010=epid
- Defines the ePID that is used for Office 2010 activations. If
- you ommit this parameter, vlmcsd(8) generates a random ePID when
- it is started.
- OFFICE2013=epid
- Defines the ePID that is used for Office 2016 activations. If
- you ommit this parameter, vlmcsd(8) generates a random ePID when
- it is started.
- OFFICE2016=epid
- Defines the ePID that is used for Office 2016 activations. If
- you ommit this parameter, vlmcsd(8) generates a random ePID when
- it is started.
- WINCHINAGOV=epid
- Defines the ePID that is used for Windows China Government Edi-
- tion activations (Enterprise G/GN). If you ommit this parameter,
- vlmcsd(8) generates a random ePID when it is started.
- HWID=hwid
- Defines the HwId that is sent to clients. hwid must be specified
- as 16 hex digits that are interpreted as a series of 8 bytes
- (big endian). Any character that is not a hex digit will be
- ignored. This is for better readability.
- TZ=posix-time-zone-string
- Set the time zone to posix-time-zone-string. It must conform to
- the POSIX <http://pubs.opengroup.org/onlinepubs/009695399/
- basedefs/xbd_chap08.html> specification. Simplified time zone
- strings like "Europe/London" or "America/Detroit" are not
- allowed. This has the very simple reason that there is no space
- on the floppy to store the time zone database.
- The string CET-1CEST,M3.5.0,M10.5.0/3 (most countries in Europe)
- reads as follows:
- CET The standard (winter) time zone has the name CET.
- -1 The standard time zone is one hour east of UTC. Nega-
- tive numbers are east of UTC. Positive numbers are
- west of UTC.
- CEST The daylight saving (summer) time zone has the name
- CEST.
- M3.5.0 Daylight saving time starts in the 3rd month (March)
- on the 5th (=last) occurence of weekday 0 (Sunday) at
- 2 o'clock (2 o'clock is a default value).
- M10.5.0/3 Daylight saving time ends in the 10th month (October)
- on the 5th (=last) occurence of weekday 0 (Sunday) at
- 3 o'clock.
- If you don't have daylight saving time, things are easier. For
- Chinese Standard Time for example, just use CST-8 as the time
- zone string.
- On a Linux desktop system, you can use a command like
- strings /usr/share/zoneinfo/America/New_York | tail -n1. This
- should return EST5EDT,M3.2.0,M11.1.0. You can use the returned
- string for the TZ=posix-time-zone-string parameter.
- IPV4_CONFIG=DHCP | STATIC
- This determines how you want to configure IPv4 networking. If
- you use IPV4_CONFIG=STATIC, you must supply additional para-
- maters to the APPEND command line.
- IPV4_ADDRESS=ipv4-address/CIDR-mask
- Use ipv4-address with netmask CIDR-mask for static IPv4 configu-
- ration. The netmask must not be ommitted. For IPv4 address
- 192.168.12.17 with a netmask of 255.255.255.0 use
- 192.168.12.17/24. For IPv4 address 10.4.0.8 with a netmask of
- 255.255.0.0 use 10.4.0.8/16. This paramater is ignored, if you
- used IPV4_CONFIG=DHCP.
- IPV4_GATEWAY=ipv4-address | NONE
- Use ipv4-address as the default gateway. This is usually the
- IPv4 address of your router. You may specify NONE explicitly for
- no gateway. In this case your virtual machine is only visible on
- its local LAN. This paramater is ignored, if you used IPV4_CON-
- FIG=DHCP.
- IPV4_DNS1=ipv4-address | NONE
- Use ipv4-address as the primary name server. In home networks
- this is often the IPv4 address of your router. You may specify
- NONE explicitly. If you specified NONE for both IPV4_DNS1= and
- IPV4_DNS2=, your virtual machine cannot resolve host names to IP
- addresses. While vlmcsd(8) works perfectly without DNS servers,
- you must use IP addresses when referring to a host, e.g. for
- specifying an NTP server. This paramater is ignored, if you used
- IPV4_CONFIG=DHCP.
- IPV4_DNS2=ipv4-address | NONE
- Use ipv4-address as the secondary name server. It serves as a
- backup if the primary name server is not available. Home net-
- works often don't have a secondary name server. In this case set
- this to NONE. This paramater is ignored, if you used IPV4_CON-
- FIG=DHCP.
- NTP_SERVER=host-name | ipv4-address | NONE
- This sets the name of a time server using the NTP protocol. If
- your virtualization environment reliably provides time, you can
- set this to NONE. Don't use a public time service like
- pool.ntp.org or time.nist.gov if you have a (at least somewhat
- reliable) NTP server in your LAN.
- HOST_NAME=host-name
- Sets the local host name for your virtual machine. It can be a
- single name or a fully-qualified domain name FQDN. If you used
- IPV4_CONFIG=DHCP and your DHCP server returns a domain name, the
- domain part of an FQDN will be replaced by that name. This host
- name or host part of an FQDN will not replaced by a host name
- returned via DHCP. The host name is not important for the opera-
- tion of floppy144.vfd.
- ROOT_PASSWORD=password
- Sets the password of the root user.
- USER_NAME=username
- Sets the name of for a general user with no special privileges.
- This user can login but can't do much.
- USER_PASSWORD=password
- Sets the password for the user defined by USER_NAME=username.
- GUEST_PASSWORD=password
- Sets the password for the pre-defined guest user. This user has
- the same priviliges (none) as the user defined by
- USER_NAME=username.
- INETD=Y | N
- INETD=Y specifies that inetd(8) should automatically be started.
- That means you can telnet and ftp to your virtual machine.
- VLMCSD_EXTRA_ARGS=comma-seperated-argument-list
- Allows you to specify additional command line options that will
- be passed to vlmcsd(8). Instead of spaces you use commas between
- arguments. Example: VLMCSD_EXTRA_ARGS=-c1,-K3,-M1
- OPERATION
- Diskless System
- The floppy144.vfd virtual machine is a diskless system that works
- entirely from RAM. The file system is actually a RAM disk that is cre-
- ated from the initrd(4) file on the floppy image.
- Anything you'll do from inside the virtual machine, for instance edit-
- ing a config file, will be lost when you reboot the machine. So, if you
- ever asked yourself if rm -fr / (root privileges required) really
- deletes all files from all mounted partitions, the floppy144.vfd VM is
- the right place to test it (Yes, it does).
- The VM uses a RAM disk, because the Linux kernel had to be stripped
- down to essential features to fit on a 1.44 MB floppy. It has no floppy
- driver, no disk file system drivers and no block layer (cannot use
- disks of any type).
- System startup
- The kernel boots up very quickly and the init script (/sbin/init) waits
- 5 seconds. In these 5 seconds you can:
- Press 'm' to manually enter the time zone and the IPv4 parame-
- ters. These will be queried interactively.
- Press 't' to manually enter the time zone only.
- Press 's' to escape to a shell.
- If you don't want to 5 seconds for continuing the init process, you can
- press any other key to speed things up. At the end of the init script
- you should see thatvlmcsd(8) has started. You should also see the IP
- addresses and all user names and passwords.
- Logging into the system
- There are 5 local logins provided on /dev/tty2 to /dev/tty6. To switch
- to these logins, simply press ALT-F2 to ALT-F6. To return to the con-
- sole on /dev/tty1, press ALT-F1. If inetd(8) is running you can also
- use telnet(1). This allows you use a terminal program (e.g. putty) that
- can utilize your keyboard layout, can be resized and has full UTF-8
- support. The local terminals support US keyboard layout only. Please be
- aware that telnet(1) is unencrypted and everything including passwords
- is transmitted in clear text. There is not enough space for an ssh
- server like sshd(8) or dropbear(8).
- The floppy image only provides basic Unix commands. Type busybox or ll
- /bin to get a list. The only editor available is vi(1). If you don't
- like vi, you may transfer config files via ftp(1) edit them with the
- editor of your choice and transfer them back to the floppy144.vfd VM.
- The menu system
- You'll find a menu system on /dev/tty8 (press ALT-F8 to see it). It
- allows you performing some administrative tasks and to view various
- system information. It is mainly for users that do not have much expe-
- rience with Unix commands.
- 1) (Re)start vlmcsd
- Starts or restarts vlmcsd(8). This is useful if you changed
- /etc/vlmcsd.ini(5).
- 2) Stop vlmcsd
- Stops vlmcsd(8).
- 3) (Re)start inetd
- Starts or restarts inetd(8). If inetd(8) is restarted, current
- clients connected via telnet(1) or ftp(1) will not be dropped.
- They can continue their sessions. This is useful if you changed
- /etc/inetd.conf(5).
- 4) Stop inet
- Stops inetd(8). All clients connected via telnet(1) or ftp(1)
- will be dropped immediately.
- 5) Change the time zone
- Just in case you missed pressing 't' during system startup. This
- also restarts vlmcsd(8) if it was running to notify it that the
- time zone has changed. Restarting vlmcsd(8) allows currently
- connected clients to finish their activation.
- k) Change keyboard layout
- This allows you to select a different keyboard layout.
- 6) Show all kernel boot parameters
- Shows all parameters passed to the kernel via syslinux.cfg. If
- you experience any unexpected behavior, you can use this to
- check if your APPEND line in syslinux.cfg is correct. The output
- is piped through less(1). So press 'q' to return to the menu.
- 7) Show boot log (dmesg)
- Shows the boot log of the kernel. The output is piped through
- less(1). So press 'q' to return to the menu.
- 8) Show TCP/IP configuration
- Shows the TCP/IP configuration, listening sockets and current
- TCP and UDP connections. Useful, if you problems with net con-
- nectivity. The output is piped through less(1). So press 'q' to
- return to the menu.
- 9) Show running processes
- Shows all processes including memory and CPU usage. Display will
- updated every second. Press 'q' or CTRL-C to return to the menu.
- s) Shutdown
- Shuts down the floppy144.vfd virtual machine. Proper shutdown is
- not required. It is ok to use a hard power off in your virtual-
- ization program.
- r) Reboot
- Reboots the floppy144.vfd virtual machine. Proper reboot is not
- required. It is ok to use a hard reset in your virtualization
- program.
- PERMANENT CHANGES OF INITRD
- If you want to change any file or script of the file system (e.g. the
- init script /sbin/init or /etc/vlmcsd.ini), you'll need to mount the
- floppy image, unpack the initrd(4) file, make any modfications you
- like, create a new initrd(4) file and copy it to the mounted floppy.
- To unpack the initrd(4) file you'll need xz(1) (or lzma(1) on older
- unix-like OSses) and cpio(1). These can be installed using your package
- manager on all major distros. It is ok to use the BSD version of
- cpio(1). No need to get the GNU version for BSD users. Provided the
- floppy is mounted in /mnt/floppy do the following:
- Create an empty directory
- mkdir ~/vlmcsd-floppy-initrd
- cd into that directory
- cd ~/vlmcsd-floppy-initrd
- Unpack initrd
- cat /mnt/floppy/initrd | unlzma | cpio -i
- After applying your changes build a new initrd(4) file:
- cd into your directory
- cd ~/vlmcsd-floppy-initrd
- Create the packed file
- find . | cpio -o -H newc | lzma > /mnt/floppy/initrd
- Do not try to use 'lzma -9' to achive better compression. The kernel
- can't read the resulting file. While customizing the initrd(4) file
- works on almost any unix-like OS, it does not work on Windows even not
- with Cygwin. The reason is that the NTFS file system can't handle uids
- and gids. These cannot be preserved when unpacking the cpio(1) archive
- to NTFS. If you use the WSL subsystem of Windows 10 Redstone (Anniver-
- sary Update) and later, you must make sure to unpack the initrd(4) file
- to a directory on VolFs (normally everything that is not mounted under
- /mnt). The initrd(4) file can be on a VolFs or DriveFs.
- FAQ
- On what distro is the floppy image based?
- None. Besides the boot loader ldlinux.sys, there are only three bina-
- ries: The Linux kernel bzImage, busybox(1) and vlmcsdmulti-x86-musl-
- static. bzImage and busybox(1) have been compiled with carefully
- selected configuration parameters not found in any distro. This was
- neccesary to fit everything on a 1.44 MB floppy.
- Why is a rather old Linux kernel (3.12) used?
- Linux 3.12 is the last kernel that can be booted with 16 MB of RAM.
- Beginning with Linux 3.13 it requires much more memory (about 80 MB) to
- boot. The floppy image is regularly tested with newer kernels. Every-
- thing works except that you need to assign much more main memory to the
- virtual machine.
- Can the floppy be booted on bare metal?
- Basically yes. However, only Intel Pro/1000 and AMD PCNET32 ethernet
- cards are supported by the kernel. In addition there is no USB support
- compiled into the kernel. That means you can only use an IBM AT or IBM
- PS/2 keyboard which are not available on newer hardware.
- FILES
- syslinux.cfg, vlmcsd.ini(5)
- BUGS
- IPv6 cannot be configured with static or manual parameters.
- DHCPv6 is not supported.
- 'ip route add ...' does not work. Use 'route add ...' instead.
- AUTHOR
- floppy144.vfd has been created by Hotbird64
- CREDITS
- Linus Torvalds et al. for the Linux kernel
- Erik Andersen et al. for the original uClibc
- Waldemar Brodkorb et al. for uClibc-ng
- Denys Vlasenko et al. for BusyBox
- H. Peter Anvin et al. for SYSLINUX
- SEE ALSO
- vlmcsd(8), vlmcsd.ini(5), initrd(4), busybox(1), syslinux(1)
- Hotbird64 May 2017 VLMCSD-FLOPPY(7)
|