Project to provide scripts that allow a transition of any major linux distribution family and its relatives from systemd to an alternative init system. The d stands for cancer
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
overflyer 8770faf3ef Updated README.md 8 hours ago
arch_family Several fixes 8 hours ago
misc Update 'misc/openrc.sh' 11 months ago
.gitignore Several Fixes 3 days ago
README.md Updated README.md 8 hours ago
dcure-fe.sh Removed support for anything other than openRC 12 hours ago
distro-identifier.sh Using code from neofetch now to detect distro. 1 week ago

README.md

dcure

The d stands for cancer

Project to provide scripts that allow a transition of any major linux distribution family and its relatives from systemd to an alternative init system.

  • For now only Arch based distros are covered!
    • **Only tested with Manjaro **
    • Only openRC works flawlessly
    • Sysvinit fails with error in console service script at bootup
    • Runit boots, but I don’t know how to get the most essential service scripts like udev, kmod etc
    • s6 is in testing

Usage:

  • Arch based distros:

    cd arch_family && sudo python3 openrc.py -c /etc -p /usr -s /sbin -l /usr/lib -b /usr/bin |& tee install.log
    

I involutarily seem to have discovered a very easy way to migrate to Artix Linux I guess (standard Arch distro with openRC/runit):

    After

    cd arch_family && sudo python3 openrc.py -c /etc -p /usr -s /sbin -l /usr/lib -b /usr/bin |& tee install.log do this: 


    cp -v /etc/pacman.conf /etc/pacman_dot_conf_backup


    cat > /etc/pacman.conf << "EOF"    

    #
    # /etc/pacman.conf
    #
    # See the pacman.conf(5) manpage for option and repository directives

    #
    # GENERAL OPTIONS
    #
    [options]
    # The following paths are commented out with their default values listed.
    # If you wish to use different paths, uncomment and update the paths.
    #RootDir     = /
    #DBPath      = /var/lib/pacman/
    #CacheDir    = /var/cache/pacman/pkg/
    #LogFile     = /var/log/pacman.log
    #GPGDir      = /etc/pacman.d/gnupg/
    #HookDir     = /etc/pacman.d/hooks/
    HoldPkg     = pacman glibc
    #XferCommand = /usr/bin/curl -L -C - -f -o %o %u
    #XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
    #CleanMethod = KeepInstalled
    #UseDelta    = 0.7
    Architecture = auto

    # Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
    #IgnorePkg   =
    #IgnoreGroup =

    #NoUpgrade   =
    #NoExtract   =

    # Misc options
    #UseSyslog
    #Color
    #TotalDownload
    CheckSpace
    #VerbosePkgLists

    # By default, pacman accepts packages signed by keys that its local keyring
    # trusts (see pacman-key and its man page), as well as unsigned packages.
    SigLevel    = Required DatabaseOptional
    LocalFileSigLevel = Optional
    #RemoteFileSigLevel = Required

    # NOTE: You must run `pacman-key --init` before first using pacman; the local
    # keyring can then be populated with the keys of all official Artix Linux
    # packagers with `pacman-key --populate artix`.

    #
    # REPOSITORIES
    #   - can be defined here or included from another file
    #   - pacman will search repositories in the order defined here
    #   - local/custom mirrors can be added here or in separate files
    #   - repositories listed first will take precedence when packages
    #     have identical names, regardless of version number
    #   - URLs will have $repo replaced by the name of the current repo
    #   - URLs will have $arch replaced by the name of the architecture
    #
    # Repository entries are of the format:
    #       [repo-name]
    #       Server = ServerName
    #       Include = IncludePath
    #
    # The header [repo-name] is crucial - it must be present and
    # uncommented to enable the repo.
    #

    # The gremlins repositories are disabled by default. To enable, uncomment the
    # repo name header and Include lines. You can add preferred servers immediately
    # after the header, and they will be used before the default mirrors.


    [gremlins]
    Include = /etc/pacman.d/mirrorlist

    [system]
    Include = /etc/pacman.d/mirrorlist

    [world]
    Include = /etc/pacman.d/mirrorlist

    [galaxy-gremlins]
    Include = /etc/pacman.d/mirrorlist

    [galaxy]
    Include = /etc/pacman.d/mirrorlist

    # If you want to run 32 bit applications on your x86_64 system,
    # enable the lib32 repositories as required here.

    [lib32-gremlins]
    Include = /etc/pacman.d/mirrorlist  

    [lib32]
    Include = /etc/pacman.d/mirrorlist

    # An example of a custom package repository.  See the pacman manpage for
    # tips on creating your own repositories.
    #[custom]
    #SigLevel = Optional TrustAll
    #Server = file:///home/custompkgs

    #
    # ARCHLINUX
    #

    [testing]
    Include = /etc/pacman.d/mirrorlist-arch

    [extra]
    Include = /etc/pacman.d/mirrorlist-arch

    [community-testing]
    Include = /etc/pacman.d/mirrorlist-arch

    [community]
    Include = /etc/pacman.d/mirrorlist-arch

    [multilib-testing]
    Include = /etc/pacman.d/mirrorlist-arch

    [multilib]
    Include = /etc/pacman.d/mirrorlist-arch

    [archlinuxfr]
    SigLevel = Never
    Server = https://repo.archlinux.fr/x86_64

    EOF


    cat > /etc/pacman.d/mirrorlist << "EOF"
    ##
    ## Artix Linux repository mirrorlist
    ## Generated on 2019-03-14
    ##

    # Artix mirrors

    Server = https://mirrors.dotsrc.org/artix-linux/repos/$repo/os/$arch
    Server = http://ftp.ntua.gr/pub/linux/artix-linux/$repo/os/$arch
    Server = https://quantum-mirror.hu/mirrors/pub/artix-linux/$repo/os/$arch
    Server = https://artix.wheaton.edu/repos/$repo/os/$arch
    Server = https://mirror.clarkson.edu/artix-linux/repos/$repo/os/$arch
    Server = https://ftp.cc.uoc.gr/mirrors/linux/artixlinux/$repo/os/$arch
    Server = https://artix.unixpeople.org/repos/$repo/os/$arch
    Server = https://artix.rw-net.de/repos/$repo/os/$arch
    Server = https://mirrors.tuna.tsinghua.edu.cn/artixlinux/$repo/os/$arch
    Server = http://www.nylxs.com/mirror/repos/$repo/os/$arch
    Server = https://ftp.sh.cvut.cz/artix-linux/$repo/os/$arch
    Server = https://mirrors.nettek.us/artix-linux/$repo/os/$arch
    Server = http://mirror1.artixlinux.org/repos/$repo/os/$arch

    EOF

    sed -i 's/#SigLevel = Optional TrustAll/SigLevel = Never/' /etc/pacman.conf

    pacman-key --populate artix
    pacman-key --lsign-key 95AEC5D0C1E294FC9F82B253573A673A53C01BC2

    sed -i 's/SigLevel = Never/#SigLevel = Optional TrustAll/' /etc/pacman.conf

TODOs:

  • Test on other arch based distros
  • Start writing scripts for s6, sysvinit and runit (I don’t know if upstart is still relevant)
  • Start writing scripts for Red Hat and Debian family