Compare commits

...

31 Commits

Author SHA1 Message Date
Fierelier 6710904301 Do not install dhcp client 2024-02-10 05:42:31 +01:00
Fierelier ab19ae7b3b Disable connman's unnecessary DNS proxy 2024-02-10 05:20:40 +01:00
Fierelier d10264d4c2 Update note regarding 32-bit support, and Debian's stance on the architecture 2024-01-19 22:10:12 +01:00
Fierelier 1bcd03dda0 Put connman in tray on startup 2024-01-19 21:40:35 +01:00
Fierelier 420945c6c7 Replace network-manager with connman 2023-12-27 22:23:15 +01:00
Fierelier 26a1fd4844 Remove luks auto-key jazz since I can't make it work 2023-12-27 22:23:07 +01:00
Fierelier b2ef4a1e66 Fix whiskermenu lock command 2023-11-21 03:44:39 +01:00
Fierelier e6d0670714 Fix autokey generation 2023-11-18 12:07:10 +01:00
Fierelier 39345d9b99 Skip the second entry of the password by writing a key file 2023-10-31 00:15:18 +01:00
Fierelier 56bd4083bf Update download link 2023-09-28 05:59:59 +02:00
Fierelier e462c80afd Update download links 2023-09-28 05:59:02 +02:00
Fierelier 1a2e7a08d6 Update task manager hotkey 2023-08-26 22:58:35 +02:00
Fierelier 9d16ed4fe0 Add ram-boot to ISO boot menu 2023-08-26 14:19:57 +02:00
Fierelier d6a7a245fb Add mod: firmware-proprietary-licenses 2023-08-23 11:33:07 +02:00
Fierelier 23b66737a2 Add mod: packages-proprietary-licenses (Part 1) 2023-08-23 11:21:25 +02:00
Fierelier 8ded32e7eb Update .gitignore 2023-08-23 11:19:52 +02:00
Fierelier 482b5d2c4b Add back noninteractive Debian frontend 2023-08-23 11:19:40 +02:00
Fierelier 485b901342 Use xss-lock instead of xautolock 2023-08-23 11:19:10 +02:00
Fierelier 7033086b0e Add mod: setnet 2023-08-23 11:18:57 +02:00
Fierelier f02d0d048d Make hostname modscript fail on error 2023-08-22 16:43:09 +02:00
Fierelier 202f6963fe Add xxd to prerequisites 2023-08-22 16:43:02 +02:00
Fierelier 85691daad7 Remove nvidia-driver (no installation candidate) 2023-08-22 16:42:53 +02:00
Fierelier f71df24cd3 Fix setup crash, if partition table entries are not in disk order 2023-08-22 15:15:00 +02:00
Fierelier 8afb5390c8 Fix EFI install options for GRUB 2023-08-22 15:12:51 +02:00
Fierelier b7d70892bf Configure GRUB in dpkg 2023-08-22 15:12:13 +02:00
Fierelier b9bc3a6382 Fix 64-bit EFI setup 2023-08-01 17:34:45 +02:00
Fierelier 71cfded140 Add nvidia-driver to proprietary firmware packages 2023-08-01 16:07:08 +02:00
Fierelier 5689e53032 Do not ask for EFI GRUB installation when installing onto MBR disk 2023-08-01 16:05:23 +02:00
Fierelier b4023f5460 Update ISOs 2023-07-21 10:16:48 +02:00
Fierelier a94e8c868f Add back shrink-singlelanguage 2023-07-21 10:08:22 +02:00
Fierelier 1b61abaa77 Allow diverging version names for sources 2023-07-21 08:51:07 +02:00
25 changed files with 120 additions and 53 deletions

9
.gitignore vendored
View File

@ -1,5 +1,4 @@
*.iso
*.img
*.qcow*
windvn-*/
output/
/*.iso
/*.img
/windvn-*/
/output/

View File

@ -3,25 +3,20 @@
Devuan Linux for Windows users
<a href="//git.lumen.sh/Fierelier/windvn/raw/branch/master/assets/screenshot.png" target="_blank"><img src="assets/screenshot.png" width="360" title="Screenshot"></a>
# Download (2023.03.28-22.26.39)
- [amd64 (DVD): fat ISO, proprietary](https://fier.me/temp/windvn-amd64_chimaera_2023.03.28-22.26.39_proprietary.iso)
- [i386 (256MB+ RAM, DVD): fat ISO, proprietary](https://fier.me/temp/windvn-i386_chimaera_2023.03.28-22.26.39_proprietary.iso)
- [i386 Legacy (128MB+ RAM, CD): me.fier.de, nodocs, english only](https://fier.me/temp/windvn-i386_chimaera_2023.03.28-22.26.39_legacy_en.iso)
# [Download](https://fier.me/software/windvn/iso/chimaera)
Fat ISOs have a full live environment. The desktop environment can be started by going into bash, and typing `startx`.
Regular ISOs have a full live environment. The desktop environment can be started by going into bash, and typing `startx`. Legacy ISOs only have a text live environment.
If you want to know what commandlines are used for the ISOs, read path/wdvn-makeall.
**NOTE:** i386 refers to the i686 class of processors, here. That is Pentium Pro and up. **However**, [due to the lack of care from the Rust team](https://github.com/rust-lang/rust/issues/82435), and to a lesser extent, [a mistake on LLVM's part](https://github.com/llvm/llvm-project/issues/61347), as well as an overall lack of interest of both parties, you will find some packages, especially graphical ones, not working unless you're using a Pentium M, Pentium 4 or newer processor.
**NOTE 1:** [Debian is looking to *basically* end support for 32-bit x86 architectures in their next major release](https://dev1galaxy.org/viewtopic.php?id=6266) ([Alternate source](https://release.debian.org/trixie/arch_qualify.html)). [This, by extension, also extends to Devuan](https://dev1galaxy.org/viewtopic.php?pid=47335#p47335), and as such also windvn. Because of this, Devuan 5 (Daedalus) is the last major release I will support with windvn. *Once mainstream support ends for Daedalus, windvn will be discontinued.*
This issue is currently on Debian (and other distros) to fix (although it *really* shouldn't be), [they care about this issue](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=973414). As of Bullseye (Chimaera), it still persists however.
If you use old hardware, you might want to try [archlinux32](https://archlinux32.org/) for now. They're crazy and fix this stuff with force, from what I saw. I haven't tested it myself yet.
**NOTE 2:** i386 refers to the i686 class of processors, here. That is Pentium Pro and up. **However**, [due to the lack of care from the Rust team](https://github.com/rust-lang/rust/issues/82435), and to a lesser extent, [a mistake on LLVM's part](https://github.com/llvm/llvm-project/issues/61347), as well as an overall lack of interest of both parties, you will find some packages, especially graphical ones, not working unless you're using a Pentium M, Pentium 4 or newer processor.
# How to "build"
## Prerequisites
- You need to use Devuan or windvn
- `apt install git debootstrap grub-common grub-pc-bin grub-efi-ia32-bin grub-efi-amd64-bin mtools squashfs-tools xorriso`
- `apt install git debootstrap grub-common grub-pc-bin grub-efi-ia32-bin grub-efi-amd64-bin mtools squashfs-tools xorriso xxd`
---
1. **Clone Git repository:**

View File

@ -1,2 +1,3 @@
sources-proprietary
firmware-proprietary-licenses
firmware-proprietary

View File

@ -0,0 +1,8 @@
#!/usr/bin/env bash
cat << EOF | debconf-set-selections
firmware-ipw2x00 firmware-ipw2x00/license/accepted boolean true
EOF
cat << EOF | debconf-set-selections
firmware-ivtv firmware-ivtv/license/accepted boolean true
EOF

View File

@ -10,4 +10,4 @@ function sfp {
done <<<$(apt-cache search "$1")
echo "$packages"
}
echo "WDVN_PACKAGES=\"\$WDVN_PACKAGES firmware-linux firmware-misc-nonfree amd64-microcode intel-microcode $(sfp wireless) $(sfp wifi) $(sfp net) $(sfp nic)\"" >"/chroot-out"
echo "WDVN_PACKAGES=\"\$WDVN_PACKAGES firmware-linux firmware-misc-nonfree amd64-microcode intel-microcode $(sfp wireless) $(sfp wifi) $(sfp net) $(sfp nic)\"" >"/chroot-out"

View File

@ -1,3 +1,3 @@
#!/bin/bash
export WDVN_PACKAGES_DL="$WDVN_PACKAGES_DL xinit unifont feh autorandr openbox mlterm lxpanel lxrandr pcmanfm mate-polkit"
export WDVN_PACKAGES_DL="$WDVN_PACKAGES_DL xinit unifont connman-gtk feh autorandr openbox mlterm lxpanel lxrandr pcmanfm"
export WDVN_PACKAGES_REMOVE="$WDVN_PACKAGES_REMOVE xscreensaver"

View File

@ -2,11 +2,11 @@
Encoding=UTF-8
Version=0.9.4
Type=Application
Name=Lock screen on standby
Name=connman
Comment=
Exec=wdvn-lock
Exec=connman-gtk --tray
OnlyShowIn=XFCE;
RunHook=4
RunHook=0
StartupNotify=false
Terminal=false
Hidden=false

View File

@ -4,7 +4,7 @@ Version=0.9.4
Type=Application
Name=lockscreen
Comment=
Exec=xautolock -time 15 -corners 0-00 -locker wdvn-lock
Exec=bash -c 'xset s 900 5; XSECURELOCK_BLANK_DPMS_STATE="off" XSECURELOCK_SHOW_DATETIME=1 XSECURELOCK_DATETIME_FORMAT="%%A - %%d.%%m.%%Y, %%H:%%M:%%S" XSECURELOCK_DISCARD_FIRST_KEYPRESS=0 XSECURELOCK_BLANK_TIMEOUT=5 XSECURELOCK_AUTH_TIMEOUT=20 xss-lock -n /usr/lib/xsecurelock/dimmer -l -- xsecurelock'
OnlyShowIn=XFCE;
RunHook=0
StartupNotify=false

View File

@ -27,7 +27,7 @@ menu-height=500
menu-opacity=100
command-settings=xfce4-settings-manager
show-command-settings=true
command-lockscreen=xflock4
command-lockscreen=xset s activate
show-command-lockscreen=true
command-switchuser=dm-tool switch-to-greeter
show-command-switchuser=false

View File

@ -45,12 +45,12 @@
<property name="Print" type="string" value="wdvn-screenshot"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;t" type="string" value="exo-open --launch TerminalEmulator"/>
<property name="&lt;Super&gt;p" type="string" value="xfce4-display-settings --minimal"/>
<property name="&lt;Primary&gt;&lt;Shift&gt;Escape" type="string" value="xfce4-taskmanager"/>
<property name="&lt;Primary&gt;&lt;Shift&gt;Escape" type="string" value="x-terminal-emulator -T htop -e htop"/>
<property name="&lt;Super&gt;e" type="string" value="thunar"/>
<property name="HomePage" type="string" value="exo-open --launch WebBrowser"/>
<property name="XF86Display" type="string" value="xfce4-display-settings --minimal"/>
<property name="override" type="bool" value="true"/>
<property name="&lt;Super&gt;l" type="string" value="wdvn-lock"/>
<property name="&lt;Super&gt;l" type="string" value="xset s activate"/>
<property name="&lt;Super&gt;x" type="string" value="exo-open --launch TerminalEmulator"/>
<property name="&lt;Alt&gt;F1" type="string" value="xfce4-popup-whiskermenu"/>
</property>

View File

@ -3,7 +3,7 @@
<channel name="xfce4-session" version="1.0">
<property name="general" type="empty">
<property name="FailsafeSessionName" type="empty"/>
<property name="LockCommand" type="string" value="wdvn-lock"/>
<property name="LockCommand" type="string" value="xset s activate"/>
<property name="SessionName" type="string" value="Default"/>
<property name="SaveOnExit" type="bool" value="false"/>
</property>

View File

@ -1,2 +0,0 @@
#!/usr/bin/env bash
XSECURELOCK_BLANK_DPMS_STATE="off" XSECURELOCK_SHOW_DATETIME=1 XSECURELOCK_DATETIME_FORMAT="%A - %d.%m.%Y, %H:%M:%S" XSECURELOCK_DISCARD_FIRST_KEYPRESS=0 XSECURELOCK_BLANK_TIMEOUT=5 XSECURELOCK_AUTH_TIMEOUT=20 xsecurelock

View File

@ -1,2 +1,2 @@
#!/bin/bash
export WDVN_PACKAGES_DL="$WDVN_PACKAGES_DL xinit xorg xfce4 xfce4-*-plugin xfce4-power-manager gvfs gvfs-backends gvfs-fuse unifont scrot xclip netsurf-gtk xautolock xsecurelock qt5-style-plugins alsa-utils network-manager-gnome xfce4-terminal mousepad synaptic catfish galculator celluloid gpicview xpdf unrar-free engrampa blueman xscreensaver- lightdm-"
export WDVN_PACKAGES_DL="$WDVN_PACKAGES_DL xinit xorg xfce4 xfce4-*-plugin xfce4-power-manager gvfs gvfs-backends gvfs-fuse unifont scrot xclip netsurf-gtk x11-xserver-utils xss-lock xsecurelock qt5-style-plugins alsa-utils connman-gtk xfce4-terminal mousepad synaptic catfish galculator celluloid gpicview xpdf unrar-free engrampa blueman xscreensaver- lightdm-"

View File

@ -1 +0,0 @@
GRUB_DISABLE_OS_PROBER=false

View File

@ -1,2 +1,3 @@
#!/bin/bash
set -e
echo "$(head -c4 </dev/urandom|xxd -p -u)" >"$1/etc/hostname"

View File

@ -83,6 +83,14 @@ def callList(*args,**kwargs):
def getDisks():
return callList(["lsblk","-ndo","PATH"])
def getDiskId(diskPath):
for root,dirs,files in os.walk("/dev/disk/by-id"):
for file in files:
if os.path.realpath("/dev/disk/by-id/" +file) == diskPath:
return "/dev/disk/by-id/" +file
break
return diskPath
def getPartitions():
disks = getDisks()
partitions = callList(["lsblk","-no","PATH"])
@ -113,16 +121,22 @@ def getDiskTable(disk):
length = len(results)
index = length - 1
while index >= 0:
if results[index] == "": break
if results[index] != "" and results[index][0] != "/": break
index -= 1
if index < 0: return {}
results = results[index + 2:]
results = results[index + 1:]
length = len(results)
index = 0
while index < length:
while results[index].replace(" "," ") != results[index]:
results[index] = results[index].replace(" "," ")
if results[index] == "" or results[index][0] != "/":
del results[index]
length -= 1
continue
results[index] = results[index].split(" ")
index += 1
@ -187,15 +201,26 @@ def chroot(path,cmd,*args,**kwargs):
pass
raise e
def randhex(length):
chars = "0123456789ABCDEF"
def randomString(length,chars):
charsLength = len(chars)
output = ""
cLength = 0
while cLength < length:
output = output + chars[random.randrange(0,15)]
cLength += 1
index = 0
while index < length:
output = output + chars[random.randrange(0,charsLength)]
index += 1
return output
def randomHex(length):
return randomString(length,"0123456789ABCDEF")
def debconfSetSelections(root,options):
proc = subprocess.Popen(["chroot",root,"debconf-set-selections"],stdin=subprocess.PIPE)
proc.stdin.write((options + "\n").encode("utf-8"))
proc.stdin.flush()
proc.stdin.close()
rtn = proc.wait()
if rtn != 0: raise Exception("Process returned error: " +str(rtn))
def main():
while choiceYn("Partition disk?"):
try:
@ -269,10 +294,10 @@ def main():
formatEsp = False
if gptInfo["espFormatted"] == False:
formatEsp = choiceYn("The disk's ESP partition (" +gptInfo["espPart"]+ ") does not seem to be formatted correctly. Format it?")
defaultChoice = "i386"
if callString(["uname","-m"]) == "x86_64": defaultChoice = "x86_64"
grubVersion = choice("Which version of EFI GRUB should be installed? Note that 'both' is not always compatible.",["i386","x86_64","both"],defaultChoice)
defaultChoice = "i386"
if callString(["uname","-m"]) == "x86_64": defaultChoice = "x86_64"
grubVersion = choice("Which version of EFI GRUB should be installed? Note that 'both' is not always compatible.",["i386","x86_64","both"],defaultChoice)
print("")
print("The rest of this setup will continue without your input ...")
@ -347,7 +372,7 @@ def main():
call(["unsquashfs","-f","-d",ipth(),"/lib/live/mount/medium/live/filesystem.squashfs"])
print("Setting hostname ...")
hostname = randhex(8)
hostname = randomHex(8)
fh = open(ipth("etc/hostname"),"w")
fh.write(hostname + "\n")
fh.close()
@ -388,6 +413,11 @@ def main():
if installGRUB:
print("> Installing GRUB")
debconfSetSelections(ipth(),"grub-pc grub-pc/install_devices multiselect " +getDiskId(grubDisk))
debconfSetSelections(ipth(),"grub-pc grub2/enable_os_prober boolean true")
os.environ["DEBIAN_FRONTEND"] = "noninteractive"
chroot(ipth(),["dpkg-reconfigure","grub-pc"])
del os.environ["DEBIAN_FRONTEND"]
if gptInfo["isGPT"]:
if gptInfo["espPart"] != None:
@ -401,10 +431,11 @@ def main():
call(["mount",gptInfo["espPart"],ipth("boot/efi")])
print("Installing GRUB (EFI) ...")
if grubVersion in ["i386","both"]:
chroot(ipth(),["grub-install","--target=i386-efi","--uefi-secure-boot","--efi-directory=/boot/efi","--boot-directory=/boot",grubDisk])
if grubVersion in ["x86_64","both"]:
chroot(ipth(),["grub-install","--target=x86_64-efi","--uefi-secure-boot","--efi-directory=/boot/efi","--boot-directory=/boot",grubDisk])
grubTargets = []
if grubVersion in ["i386","both"]: grubTargets.append("i386-efi")
if grubVersion in ["x86_64","both"]: grubTargets.append("x86_64-efi")
for target in grubTargets:
chroot(ipth(),["grub-install","--target=" +target,"--bootloader-id=GRUB","--efi-directory=/boot/efi","--boot-directory=/boot","--force-extra-removable",grubDisk])
print("Unmounting ESP ...")
call(["umount","-l",ipth("boot/efi")])

View File

@ -1,8 +1,5 @@
#!/bin/bash
set -e
cat << EOF | debconf-set-selections
firmware-ipw2x00 firmware-ipw2x00/license/accepted boolean true
EOF
apt-get --error-on=any -y update
apt-get -y upgrade
apt-get -y install $WDVN_PACKAGES_INTERACTIVE

View File

@ -0,0 +1 @@
DAEMON_OPTS="--nodnsproxy"

View File

@ -1,2 +1,2 @@
#!/bin/bash
export WDVN_PACKAGES="$WDVN_PACKAGES sudo kbd console-setup keyboard-configuration htop network-manager"
export WDVN_PACKAGES="$WDVN_PACKAGES sudo kbd console-setup keyboard-configuration htop connman isc-dhcp-client-"

16
mods/setnet/data/chroot Executable file
View File

@ -0,0 +1,16 @@
#!/usr/bin/env bash
command -v wget >/dev/null
WGET_INSTALL="$?"
set -e
if [ "$WGET_INSTALL" = "1" ]; then
apt-get -y install wget
fi
wget "https://pkgmaster.devuan.org/devuan/pool/main/s/setnet/setnet_0.4.0-1_all.deb"
apt-get -y install "./setnet_0.4.0-1_all.deb"
rm "./setnet_0.4.0-1_all.deb"
if [ "$WGET_INSTALL" = "1" ]; then
apt-get -y remove --purge --auto-remove wget
fi

View File

@ -0,0 +1,11 @@
[Desktop Entry]
Version=1.0
Type=Application
Name=setnet.sh
Comment=Configure Networking (LAN/WiFi)
Exec=x-terminal-emulator -e "sudo setnet.sh"
Icon=preferences-system-network
Path=
Terminal=false
StartupNotify=false
Categories=Settings;HardwareSettings;

View File

@ -1,3 +1,3 @@
#!/bin/bash
set -e
debootstrap --arch="$WDVN_ARCH" "$WDVN_VER" "$1" "$WDVN_URL"
debootstrap --arch="$WDVN_ARCH" "$WDVN_VER_DEBSTRAP" "$1" "$WDVN_URL"

View File

@ -69,6 +69,14 @@ menuentry '$WDVN_NAME $WDVN_ARCH $WDVN_VER $WDVN_DATE live' --class gnu-linux --
echo "Loading initrd ..."
initrd /live/initrd.img
}
menuentry '$WDVN_NAME $WDVN_ARCH $WDVN_VER $WDVN_DATE live (RAM-boot)' --class gnu-linux --id linux {
insmod all_video
echo "Loading Linux ..."
linux /live/vmlinuz boot=live noautologin quiet toram
echo "Loading initrd ..."
initrd /live/initrd.img
}
" > "$IMAGE/boot/grub/grub.cfg"
grub-mkrescue -o "$2" "$IMAGE" --volid "$DISC_NAME"

View File

@ -7,7 +7,7 @@ fi
# i386 legacy (single language)
source wdvn-env-i386
WDVN_FAT=0 wdvn-make "output" shrink-nodocs base hardware graphical-me.fier.de live finish legacy
WDVN_FAT=0 wdvn-make "output" shrink-nodocs shrink-singlelanguage base hardware graphical-me.fier.de live finish legacy
wdvn-image-iso "output" "$(wdvn-name)_legacy_en.iso"
rm -rf "output"

4
shell
View File

@ -1,11 +1,13 @@
#!/bin/bash
export WDVN_NAME="windvn"
export WDVN_URL="http://deb.devuan.org/merged"
export WDVN_VER="chimaera"
export WDVN_VER_DEBSTRAP="chimaera" # This is the suite/version name passed to debootstrap. This is useful if you want to pull, for example, daedalus, but that name is not understood yet in debootstrap. So you can use "testing" instead, which is always understood, and then put "daedalus" (or whatever currently corresponds to testing) into WDVN_VER, so the resulting distro stays within the daedalus specification, instead of updating to the next testing version.
export WDVN_VER="$WDVN_VER_DEBSTRAP"
export WDVN_DATE="$(date --utc "+%Y.%m.%d-%H.%M.%S")"
export WDVN_PID="$BASHPID"
export PATH="$(dirname "$(realpath -s "$BASH_SOURCE")")/path:$PATH"
source "wdvn-env-i386"
export WDVN_FULLNAME=
export DEBIAN_FRONTEND="noninteractive"
export PS1="\[\033[0;35m\]\$(wdvn-name)\[\033[0m\]:\[\033[0;37m\]\$(basename -- \$PWD)\[\033[0m\]> "