The officially official Devuan Forum!

You are not logged in.

#1 Re: Installation » Automated install: How to config preseed to prevent desktop install? » 2018-04-15 02:29:20

As I am pressed for time, I wasn't able to finish troubleshooting the issue. However, I do believe the issue may be caused by tasksel packaging specific for Devuan. Most of the Debian d-i documentation still applies and you can find below the preseed file I'm using to setup Devuan Jessie via netinstaller on a 32GB SSD for a kiosk/vending machine. Here are the workarounds that I have implemented:

1. In preseed.cfg: run my post-installation script that contains the workarounds and my customizations (other packages I want to install, setting up users and keys)

# Post install
d-i preseed/late_command string                                         \
    cd /target;                                                         \
    mkdir ./var/blackhills;                                             \
    cp -R /cdrom/blackhills/* ./var/blackhills;                         \
    chmod +x ./var/blackhills/post_install.sh;                          \
    chroot ./ ./var/blackhills/post_install.sh;                         \
    reboot

2. In post_install.sh: remove the desktop environment and print-server that Devuan installs but not controllable via d-i

# purge unecessary install pending fix on tasksel
tasksel remove print-server xfce-desktop xfce-desktop

3. post_install.sh: manually ensure that standard packages are installed

# install standard packages
yes | aptitude install ~pstandard ~pimportant ~prequired
# ensure ssh server installed
tasksel install ssh-server
# ensure sudo installed
apt-get install -y sudo

Here is my preseed file:

#_preseed_V1

# 1. Choose language
# ==================

d-i debian-installer/language string en
d-i debian-installer/country string US
d-i localechooser/supported-locales multiselect en_US.UTF-8, en_DK.UTF-8
d-i debian-installer/locale select en_US.UTF-8

# 2. Configure the keyboard
# =========================

d-i keyboard-configuration/xkb-keymap select us

# 3. Detect and mount CD-ROM
# ==========================

d-i cdrom-detect/load_media boolean true

# 4. Load installer components from CD

# 5. Detect network hardware

#
d-i hw-detect/load_media boolean false
d-i hw-detect/load_firmware boolean true

# 6. Configure the network
# ========================

# Auto-configure networking?
d-i netcfg/use_autoconfig boolean true

# Waiting time (in seconds) for link detection:
d-i netcfg/link_wait_timeout string 10

d-i netcfg/dhcp_timeout string 60
d-i netcfg/dhcpv6_timeout string 60
d-i netcfg/choose_interface select auto

# Hostname:
d-i netcfg/get_hostname string blackhills-null
d-i netcfg/hostname blackhills-null

# Domain name:
d-i netcfg/get_domain string local

#
d-i netcfg/wireless_wep string

# 7. Setup users and passwords
# ============================

# Enable shadow passwords?
d-i passwd/shadow boolean true

# Allow login as root?
d-i passwd/root-login boolean true

# Root password:
d-i passwd/root-password-crypted password $6$rounds=1000000$mJQfdK23$73slO0O7Jk3tpAIly63ou/.RVwDYRntzCvX/M.GEtqHpIBMFFMwQhE2858UM0kPq5CTE8Pig2JiAyt1qPU37P/

# Create a normal account now?
d-i passwd/make-user boolean false

# 8. Configure the clock
# ======================

# Set the clock using NTP?
d-i clock-setup/ntp boolean true

# NTP server to use:
d-i clock-setup/ntp-server string us.pool.ntp.org

# Select your timezone:
d-i time/zone string Etc/UTC

# 9. Detect disks

# 10. Partition disks
# ===================

# purge existing LVM volumes
d-i partman/early_command string vgs --separator=: --noheadings | cut -f1 -d: | while read vg ; do vgchange -an $vg ; done ; pvs --separator=: --noheadings | cut -f1 -d: | while read pv ; do pvremove -ff -y $pv ; done
d-i partman-auto/disk string /dev/sda
d-i partman/alignment string optimal
d-i partman-md/device_remove_md boolean true
d-i partman-md/confirm boolean true
d-i partman-lvm/device_remove_lvm boolean true
d-i partman-lvm/confirm boolean true
d-i partman/choose_partition select Finish
d-i partman/confirm_write_new_label boolean true
d-i partman-auto/method string lvm
d-i partman-basicfilesystems/choose_label string gpt
d-i partman-basicfilesystems/default_label string gpt
d-i partman-partitioning/choose_label string gpt
d-i partman-partitioning/default_label string gpt
d-i partman/choose_label string gpt
d-i partman/default_label string gpt
d-i partman-auto/choose_recipe select gkhdd
d-i partman-auto/expert_recipe string                                   \
    gkhdd ::                                                            \
    1 1 1 free                                                          \
        device{ /dev/sda }                                              \
        $gptonly{ }                                                     \
        $primary{ }                                                     \
        $bios_boot{ }                                                   \
        method{ biosgrub }                                              \
    .                                                                   \
    512 512 1280 ext3                                                   \
        device{ /dev/sda }                                              \
        $gptonly{ }                                                     \
        $primary{ }                                                     \
        $bootable{ }                                                    \
        method{ format }                                                \
        format{ }                                                       \
        use_filesystem{ }                                               \
        filesystem{ ext3 }                                              \
        mountpoint{ /boot }                                             \
    .                                                                   \
    30720 1000000000 -1 ext4                                            \
        device{ /dev/sda }                                              \
        $defaultignore{ }                                               \
        $gptonly{ }                                                     \
        $primary{ }                                                     \
        method{ lvm }                                                   \
        vg_name{ lvgruppe }                                             \
    .                                                                   \
    512 512 100% linux-swap                                             \
        $lvmok{ }                                                       \
        method{ swap }                                                  \
        format{ }                                                       \
        in_vg{ lvgruppe }                                               \
        lv_name{ swap }                                                 \
    .                                                                   \
    8192 8192 16384 ext4                                                \
        $lvmok{ }                                                       \
        method{ format }                                                \
        format{ }                                                       \
        use_filesystem{ }                                               \
        filesystem{ ext4 }                                              \
        mountpoint{ /var }                                              \
        options/relatime{ relatime }                                    \
        in_vg{ lvgruppe }                                               \
        lv_name{ var }                                                  \
    .                                                                   \
    8192 8192 8192 ext4                                                 \
        $lvmok{ }                                                       \
        method{ format }                                                \
        format{ }                                                       \
        use_filesystem{ }                                               \
        filesystem{ ext4 }                                              \
        mountpoint{ /tmp }                                              \
        options/relatime{ relatime }                                    \
        in_vg{ lvgruppe }                                               \
        lv_name{ tmp }                                                  \
    .                                                                   \
    10240 1000000000 -1 ext4                                            \
        $lvmok{ }                                                       \
        method{ format }                                                \
        format{ }                                                       \
        use_filesystem{ }                                               \
        filesystem{ ext4 }                                              \
        mountpoint{ / }                                                 \
        options/noatime{ noatime }                                      \
        in_vg{ lvgruppe }                                               \
        lv_name{ root }                                                 \
    .
d-i partman/choose_partition select Finish partitioning and write changes to disk
d-i partman-md/confirm_nooverwrite boolean true
d-i partman-md/confirm boolean true
d-i partman-lvm/confirm_nooverwrite boolean true
d-i partman-lvm/confirm boolean true
d-i partman-partitioning/confirm_write_new_label boolean true
d-i partman/choose_partition select Finish
d-i partman/confirm_nooverwrite boolean true
d-i partman/confirm boolean true
d-i partman/mount_style select uuid

# 11. Install the base system
# ===========================

# Kernel to install:
d-i base-installer/kernel/image string linux-image-amd64

# Drivers to include in the initrd:

#
d-i base-installer/install-recommends boolean false

# 12. Configure the package manager
# =================================

# Use a network mirror?
d-i apt-setup/use_mirror boolean true

# Protocol for file downloads:
d-i mirror/protocol string http

# Devuan archive mirror country:
d-i mirror/country string manual

# Devuan archive mirror:
d-i mirror/http/hostname string us.mirror.devuan.org

# HTTP proxy information (blank for none):
d-i mirror/http/proxy string

#
d-i mirror/http/directory string /merged/
d-i mirror/suite string jessie

# Use non-free software?
d-i apt-setup/non-free boolean true

# Enable source repositories in APT?
d-i apt-setup/enable-source-repositories boolean false

# Services to use:
d-i apt-setup/services-select multiselect security updates, release updates, backported software

#
d-i apt-setup/contrib boolean false
d-i apt-setup/disable-cdrom-entries boolean true

# 13. Select and install software
# ===============================

# Participate in the package usage survey?
popularity-contest popularity-contest/participate boolean false

# Choose software to install:
tasksel tasksel/first multiselect standard, ssh-server

#
d-i pkgsel/include string openssh-server build-essential sudo screen
d-i pkgsel/upgrade select none

# 14. Install the GRUB boot loader on a hard disk
# ===============================================

# Install the GRUB boot loader to the master boot record?
d-i grub-installer/with_other_os boolean true

#
d-i grub-installer/only_debian boolean true
d-i grub-installer/grub2_instead_of_grub_legacy boolean true

# Device for boot loader installation:
d-i grub-installer/bootdev string /dev/sda
d-i grub-installer/choose_bootdev select /dev/sda

# Force GRUB installation to the EFI removable media path?
grub-installer grub-installer/force-efi-extra-removable boolean false

# 15. Finish the installation
# ===========================

# Is the system clock set to UTC?
d-i clock-setup/utc boolean true

# Post install
d-i preseed/late_command string                                         \
    cd /target;                                                         \
    mkdir ./var/blackhills;                                             \
    cp -R /cdrom/blackhills/* ./var/blackhills;                         \
    chmod +x ./var/blackhills/post_install.sh;                          \
    chroot ./ ./var/blackhills/post_install.sh;                         \
    reboot

#
d-i finish-install/reboot_in_progress note
d-i cdrom-detect/eject boolean true

#2 Installation » Automated install: How to config preseed to prevent desktop install? » 2018-01-28 05:38:39

shimo
Replies: 3

I was using a preseed.cfg file to automate Devuan Jessie installation. Base image is amd64 DVD, and I used UNetbootin to create the USB installer. I specified this answer on the preseed file based on what I'm seeing from debconf-get-selections (I only wanted to pre-install standard components and SSH server, I don't want a desktop environment or other utilities):

d-i tasksel/first multiselect SSH server, standard system utilities

However, the installation did include the XFCE desktop with lightdm. Am I doing this wrong? Does anyone have experience doing preseeding for Devuan?

I'll try perhaps following Debian Jessie's preseed and check if these settings would work:

tasksel tasksel/first multiselect standard
d-i pkgsel/include string openssh-server

#3 Re: Installation » How to install the latest python? » 2017-11-26 14:13:26

It's recommended to altinstall built-from-source Python so you will not be messing up with system Python that comes with the package manager (apt). Here are the steps to follow on the command line to build Python. I have tested building Python 3.6.3 on Devuan Jessie 1.0 without issues.

First, ensure that packages needed for source builds are installed/updated. You can install all the packages in one go but I listed them in separate install lines so it's easier to read/follow.

sudo apt-get update && sudo apt-get upgrade -y
sudo apt-get install -y wget curl make build-essential llvm
sudo apt-get install -y libssl-dev zlib1g-dev xz-utils
sudo apt-get install -y libbz2-dev libreadline-dev libsqlite3-dev
sudo apt-get install -y libncurses5-dev libncursesw5-dev tk-dev

Download the source of the Python version you need, extract it, and cd in to the directory.

wget https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tgz
tar xvf Python-3.6.3.tgz
cd Python-3.6.3

Build from source. Note that the number in "-j2" option can be increased up to the number of CPU cores you have to speed up compilation. If you're building from a slow CPU like embedded microprocessors (Raspberry Pi, etc.) use "-j1" and be prepared (have a movie/time waster handy) as compilation can take a while (some people said it can take a day). Also, you need at least 2GB of RAM to compile without issues.

./configure --enable-optimizations
make -j2
sudo make altinstall

After all this, Python 3.6.3 is now available at /usr/local/bin/python3.6 (update your shebang line if needed) or can be called from the command line as "python3.6". To install "global" packages to that specific version of Python use the matching pip:

sudo pip3.6 install package1 package2

However, Python development is best done using virtual environments for installing packages: see virtualenvwrapper.

At some point, you would want to upgrade or remove your built Python. You cannot just simply build again using the steps above to update Python having the same minor versions (for example, upgrading from 3.6.3 to 3.6.4 --- 3 is major version, 3.6 is the minor version, .3 or .4 is the point version): you need to first remove the older alt installation. Carefully run these commands to remove the files installed:

sudo rm -f /usr/local/bin/python3.6
sudo rm -f /usr/local/bin/pip3.6
sudo rm -f /usr/local/bin/pydoc3.6
sudo rm -rf /usr/local/bin/include/python3.6
sudo rm -f /usr/local/lib/libpython3.6m.a
sudo rm -rf /usr/local/lib/python3.6

# also run these to remove man entries, etc.
sudo rm -f /usr/local/share/man/python3.6.3
sudo rm -rf /usr/local/lib/pkgconfig

# CAREFUL with the command below, run an ls to check there are no other matching files
# except Python files, this is intended to remove other files left behind after the commands above
# ls /usr/local/bin/*3.6*
sudo rm -f /usr/local/bin/*3.6*

#4 Installation » Anyone tried installing in Linode as custom distribution? » 2017-08-08 15:55:34

shimo
Replies: 1

Just wondering if anyone had tried installing in Linode.com with success: I was following their tutorial but I'm stuck after setting the locale and keyboard on "Expert Install". The installer can't find the CD-ROM: "No common CD-ROM drive was detected." Mounts in /proc is only showing the bare disk (this must be Linode specific setup):

~ # cat /proc/mounts
rootfs / rootfs rw,size=2058549k,nr_inodes=256241 0 0
none /run tmpfs rw,nosuid,relatime,size=205856k,mode=755 0 0
none /proc proc rw,relatime 0 0
none /sys sysfs rw,relatime 0 0
devtmpfs /dev devtmpfs rw,relatime,size=1024972k,nr_inodes=256243,mode=755 0 0
devpts /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0

I'm still trying to figure this out (and waiting for Linode's response on a support ticket) but would appreciate if anyone has a clue on what's happening. On the other hand, I was able to get Devuan installed successfully in Digital Ocean by upgrading from a Debian base.

Board footer

Forum Software