Slackware 14.2 on VirtualBox 6 on Windows 10 host: how an ignoramus does it eventually

Note

The main issue here was guest additions, which allow shared folders and suchlike. They worked with the installed system, but not once I had updated to the 4.4.172 kernel. There seems to be an issue with that. It will be resolved I’m sure but has not been resolved yet. See step 116 below!

I found Slackware to be far less daunting than some comments on the web would suggest. As long as the user is OK with using a text-based disk partitioner (cfdisk), it’s quite straightforward. And with tools like slackpkg and sbotools, maintenance (install, remove and upgrade packages) is not a problem either, and the range of packages is good, although split between the Slackware repository and the stuff curated at slackbuilds.

Indeed, I think you could make a good case that the split has significant benefits — for example, an application built via slackbuilds is compiled natively on and for your system, which can/may/might give performance benefits. (https://www.linuxquestions.org/questions/slackware-14/how-to-set-slackbuild-cflags-cxxflags-qmake-c-cxx-flags-globally-4175621306/) See also the documents for sbotools for globally setting the -j option to speed compiling.

I tried to put in all the steps, but I might have missed out a detail. If so — sorry!

Introduction

I need to test some eLearning I’ve written on a variety of browsers and environments. I’ve tried the big 3 (Firefox, Chrome, Edge) on the Windows 10 machine on my desk. I want to try Linux. So I’m going to set up VirtualBox and install a distro. I’m sure there will be nothing of interest here, but if I am going to do the task I might as well record the steps.

I make a lot of dumb mistakes as I go, and I should probably read the docs more carefully, but this below is the truth of it!

The many steps

      1. Install VirtualBox on my Windows host machine: Went to https://www.virtualbox.org/wiki/Downloads and hit the big download button.
      2. Clicked on ‘Windows hosts’ and wait for the download. Ran the download.
      3. Clicked ‘Next >’
      4. Clicked ‘Next >’
      5. Unchecked creation of desktop shortcut and Quick Launch Bar icon — I don’t want that clutter.
      6. ‘Next >’
      7. Yes
      8. Clicked through the installer. Watch it go!
      9. Choose a Linux distribution: What distro shall we use? Try Slackware.
      10. In a Cygwin window: $ wget https://ftp.yzu.edu.tw/Linux/Slackware/slackware-iso/slackware-14.2-iso/slackware-14.2-install-dvd.iso
      11. check md5sum ($ md5sum slackware-14.2-install-dvd.iso) — looks good.
      12. Create the virtual machine: So began by starting VirtualBox and creating a new machine. (New; Name: Slack, Type: Linux 32-bit; Other 32-bit.
      13. 1GB RAM
      14. Defaults until set virtual hard disk size; chose 12GB.
      15. System → Processor → enable PAE/NX
      16. Boot the VM: Storage → Empty → Optical Driver → Choose virtual optical disk file
      17. Double-clicked to boot
      18. Hit Enter at ‘boot’ prompt
      19. Enter to select default keyboard map
      20. Log in as root
      21. Partition the disk: cfdisk
      22. Select dos partition
      23. New
      24. Set to 11G (later repeated this with 40GB)
      25. Set Type to Linux filesystem
      26. Highlight ‘Free space’
      27. New, remaining space (1023M)
      28. Set Type to Linux swap
      29. Write to disk — yes!
      30. Quit
      31. Set up Slackware: Ran setup
      32. Add swap (/dev/sda2) and accept defaults
      33. Select root partition (/dev/sda1)
      34. Quick format
      35. ext4 file system
      36. Source media selection — use Slackware CD or DVD
      37. auto
      38. Choose what to install — I left defaults
      39. full install
      40. watch it go
      41. Skip making USB boot stick
      42. simple (Try to install LILO automatically)
      43. standard console
      44. no kernel parameters
      45. no for UTF-8 console
      46. Install LILO to MBR
      47. Select USB mouse (not sure about this)
      48. Add gpm (I use it)
      49. Hostname
      50. Domain
      51. Choose Autoconfigure using NetworkManager
      52. Boot time services … accept defaults
      53. Not interested in custom screen fonts
      54. Hardware clock
      55. Time zone
      56. Choose window manager (KDE will do for now)
      57. Root password
      58. It’s not taking keyboard input! I cannot set root password!
      59. Use the VB menu to send Ctrl+Alt+Del to the virtual machine
      60. It captured my mouse and does not respond to the keyboard! I can’t do anything!
      61. Unplugged and replugged keyboard and got it back!
      62. Repeated the install
      63. Turn off/exit install
      64. The first boot from the virtual hard drive: Remove the virtual DVD and reboot
      65. Enter to boot
      66. Log in as root
      67. Add a user: Ran adduser
      68. Enter through most options, but add them to most groups (up arrow at the ‘Or press the UP arrow’ prompt)
      69. VirtualBox guest additions: Still as root, click on Devices menu and Insert Guest Additions
      70. Could not find it user /mnt or /media (turns out it is under ‘/run‘ or something)
      71. Ran # startx
      72. Launch the file manager and there it is ‘VBox_GAs_6.0.4’
      73. Run VBoxLinuxAdditions.run
      74. Seems good.
      75. Shut down the VM
      76. In the VB manager, chose Shared Folders
      77. Clicked the ‘Add folder’ icon — little folder with a green plus on it
      78. Click on Folder Path and Other and browse to the desired folder on the host
      79. I set it as Read-only since I am testing some files and do not want to change them
      80. Clicked Auto-mount ‘on’
      81. Put ‘tests’ in the ‘Mount point’ box — this is a change to the interface, and I think I misunderstood it — should have read the docs!
      82. OK
      83. Rebooted the guest and logged in again
      84. As regular user, got output of id -u (1000) and id -g (100)
      85. As superuser, in the guest:
      86. # mount -t vboxsf -o uid=1000,gid=100 tests /home/username/shareslack
      87. ‘Protocol error’ — uh oh
      88. Reinstalled guest additions
      89. as root, # usermod -a -G vboxsf username
      90. # mount -t vboxsf -o uid=1000,gid=100 tests /home/username/shareslack
      91. Turn off automount and make permanent and Read only and reboot the guest
      92. Turn on automount and read only and reboot
      93. Nope. This is proving a real problem
      94. Simplify the path to the host folder I want to share —  a simple directory off C:
      95. Nope.
      96. I got myself tied in knots here. Start again.
      97. Shared folders — give it a name but no mount point and turn on Auto-mount
      98. Well, at some point the shared folder turned up under /media/sf_username. Not quite sure how, to be honest, but there it is
      99. Opened command prompt and switched to superuser (su command). Now update the system
      100. # vim /etc/slackpkg/mirrors and uncomment the one I want
      101. # slackpkg update
      102. # slackpkg install-new
      103. # slackpkg upgrade-all
      104. Boy, that was easy.
      105. Well, it seems pretty much set up now. Though the screen is not scalable. Check the log from compiling the additions
      106. Log says kernel config is invalid! Odd.
      107. 4.4.172 kernel does not play nicely with guest additions. https://slackblogs.blogspot.com/2019/02/kernel-44172-breaking-some-application.html
      108. Slackbuilds: Oh well. Use links to download the slackbuild files for sbotools, and install that to automate slackbuilds.
      109. Go to https://slackbuilds.org and search for sbotools. Download the build script and the source code and follow the instructions …
      110. See https://slackbuilds.org/howto/
      111. # sbosnap fetch
      112. # sboinstall --reinstall dkms
      113. groupadd -g 215 vboxusers
      114. # usermod -a -G vboxusers username (for root and my user)
      115. logout and back in again
      116. To get the guest additions to compile on the 4.4.172 kernel
      117. edit /etc/fstab and uncomment the cdrom line (so I can do this without gui); then Devices menu and insert guest additions CD
      118. # mount /dev/cdrom
      119. #cd /mnt/cdrom
      120. Try the install: #sh VBoxLinux ...etc...run
      121. Nope, something went wrong  — it just won’t work
      122. It looks like this is not my fault! https://slackblogs.blogspot.com/2019/02/kernel-44172-breaking-some-application.html. It gives a fix
      123. Mount the GA CD and try to run it
      124.  find / -name memobj-r0drv-linux.c
      125. Go there and make the changes shown at the link
      126. but vboxconfig is not in sbin! It is nowhere!
      127. Lower down the same post, though, it says:
      128. PetslackSaturday, 06 April, 2019
        
        The same path here for me (slack64-14.2 + virtualbox-6.0.4) and the patch worked.
        
        Here the steps:
        # apply the patch
        sed -i "s/4, 9, 0/4, 4, 168/" /opt/VBoxGuestAdditions-6.0.4/src/vboxguest-6.0.4/vboxguest/r0drv/linux/memobj-r0drv-linux.c
        
        # build the modules
        /sbin/rcvboxadd setup
        
        #test it without rebooting
        /usr/bin/VBoxClient-all
      129. And rcvboxadd is present, so try that
      130. Seems to have worked! Try a reboot
      131. Login as user and startx
      132. Autoresize guest display is not greyed out. How about shared folders? Yep. Clipboard — yep. That’s most of what I need.

        Screen shot; folder path is c drive backslash users backslash user name, folder name is Darren and auto mount and make permanent are checked
        Shared folder settings; some magic occurs
      133. Shared folders found under /media/sf_darren, which will do!
      134. OK, so at last we are done, or done enough, at least.

Last thing I did was make a Windows batch file and put it in my path:

C:\>type c:\Users\username\bin\slack.bat
"c:\Program Files\Oracle\VirtualBox\VBoxManage.exe" startvm  Slack

And got a little icon and put a shortcut to the batch file on my desktop. So no need to run the VirtualBox GUI manager.

So I can’t pretend I did it all with complete mastery, but it works, more or less.

There you go.