├── .editorconfig ├── .github └── workflows │ ├── docker-publish.yml │ ├── pr-tests.yml │ └── scheduled-docker-publish.yml ├── .gitignore ├── Dockerfile.template ├── Makefile ├── Readme.md ├── blackarch-novnc ├── Dockerfile └── supervisord.conf ├── exclude ├── pacman-conf.d-blackarch.conf ├── pacman.conf └── rootfs └── etc ├── locale.conf ├── locale.gen ├── os-release ├── pacman.d ├── blackarch-mirrorlist └── mirrorlist └── skel ├── .bashrc └── .zshrc /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | [*] 3 | indent_style = space 4 | end_of_line = lf 5 | charset = utf-8 6 | [Makefile] 7 | indent_style = tab 8 | -------------------------------------------------------------------------------- /.github/workflows/docker-publish.yml: -------------------------------------------------------------------------------- 1 | name: Publish on Push 2 | 3 | on: 4 | push: 5 | # Publish `master` as Docker `latest` image. 6 | branches: 7 | - master 8 | 9 | env: 10 | NOVNC_IMG: novnc 11 | BASE_DEVEL_IMG: base-devel 12 | LATEST_IMG: latest 13 | BASE_IMG: base 14 | 15 | jobs: 16 | push: 17 | runs-on: ubuntu-latest 18 | container: 19 | image: docker.io/blackarchlinux/blackarch:base-devel 20 | if: github.event_name == 'push' 21 | 22 | steps: 23 | - uses: actions/checkout@v3 24 | 25 | - name: Install dependencies 26 | run: | 27 | sudo pacman-key --init && \ 28 | sudo pacman-key --populate archlinux blackarch && \ 29 | sudo pacman -Sy --noconfirm --needed archlinux-keyring blackarch-keyring && \ 30 | sudo pacman -Syu --noconfirm --needed make docker devtools fakeroot fakechroot 31 | 32 | - name: Build base 33 | run: | 34 | make blackarch-base 35 | docker tag blackarchlinux/blackarch:base docker.io/blackarchlinux/blackarch:$BASE_IMG 36 | docker tag blackarchlinux/blackarch:base docker.io/blackarchlinux/blackarch:$LATEST_IMG 37 | 38 | - name: Build base-devel 39 | run: | 40 | make blackarch-base-devel 41 | docker tag blackarchlinux/blackarch:base-devel docker.io/blackarchlinux/blackarch:$BASE_DEVEL_IMG 42 | 43 | - name: Build novnc 44 | run: | 45 | docker build ./blackarch-novnc --file ./blackarch-novnc/Dockerfile --tag docker.io/blackarchlinux/blackarch:$NOVNC_IMG 46 | 47 | - name: Log into registry 48 | uses: docker/login-action@v2 49 | with: 50 | username: ${{ secrets.DOCKER_USER }} 51 | password: ${{ secrets.DOCKER_HUB_TOKEN }} 52 | 53 | - name: Push image 54 | run: | 55 | docker push docker.io/blackarchlinux/blackarch:$NOVNC_IMG 56 | docker push docker.io/blackarchlinux/blackarch:$BASE_IMG 57 | docker push docker.io/blackarchlinux/blackarch:$BASE_DEVEL_IMG 58 | docker push docker.io/blackarchlinux/blackarch:$LATEST_IMG 59 | -------------------------------------------------------------------------------- /.github/workflows/pr-tests.yml: -------------------------------------------------------------------------------- 1 | name: Docker-PR 2 | 3 | on: 4 | # Run tests for any PRs. 5 | pull_request: 6 | 7 | jobs: 8 | test: 9 | runs-on: ubuntu-latest 10 | container: 11 | image: blackarchlinux/blackarch:base-devel 12 | 13 | steps: 14 | - uses: actions/checkout@v3 15 | 16 | - name: Run tests 17 | run: | 18 | sudo pacman -Sy --noconfirm --needed make docker devtools fakeroot fakechroot 19 | make blackarch-base 20 | make blackarch-base-devel 21 | docker build ./blackarch-novnc --file ./blackarch-novnc/Dockerfile 22 | 23 | -------------------------------------------------------------------------------- /.github/workflows/scheduled-docker-publish.yml: -------------------------------------------------------------------------------- 1 | name: Scheduled Publish 2 | 3 | on: 4 | schedule: 5 | - cron: '30 22 * * */7' 6 | workflow_dispatch: 7 | 8 | env: 9 | NOVNC_IMG: novnc 10 | BASE_DEVEL_IMG: base-devel 11 | LATEST_IMG: latest 12 | BASE_IMG: base 13 | 14 | jobs: 15 | # Push image to GitHub Packages. 16 | # See also https://docs.docker.com/docker-hub/builds/ 17 | publish: 18 | runs-on: ubuntu-latest 19 | container: 20 | image: docker.io/blackarchlinux/blackarch:base-devel 21 | 22 | steps: 23 | - uses: actions/checkout@v3 24 | 25 | - name: Install dependencies 26 | run: | 27 | sudo pacman-key --init && \ 28 | sudo pacman-key --populate archlinux blackarch && \ 29 | sudo pacman -Sy --noconfirm --needed archlinux-keyring blackarch-keyring && \ 30 | sudo pacman -Syu --noconfirm --needed make docker devtools fakeroot fakechroot 31 | 32 | - name: Build base 33 | run: | 34 | make blackarch-base 35 | docker tag blackarchlinux/blackarch:base docker.io/blackarchlinux/blackarch:$BASE_IMG 36 | docker tag blackarchlinux/blackarch:base docker.io/blackarchlinux/blackarch:$LATEST_IMG 37 | 38 | - name: Build base-devel 39 | run: | 40 | make blackarch-base-devel 41 | docker tag blackarchlinux/blackarch:base-devel docker.io/blackarchlinux/blackarch:$BASE_DEVEL_IMG 42 | 43 | - name: Build novnc 44 | run: | 45 | docker build ./blackarch-novnc --file ./blackarch-novnc/Dockerfile --tag docker.io/blackarchlinux/blackarch:$NOVNC_IMG 46 | 47 | - name: Log into registry 48 | uses: docker/login-action@v2 49 | with: 50 | username: ${{ secrets.DOCKER_USER }} 51 | password: ${{ secrets.DOCKER_HUB_TOKEN }} 52 | 53 | - name: Push image 54 | run: | 55 | docker push docker.io/blackarchlinux/blackarch:$NOVNC_IMG 56 | docker push docker.io/blackarchlinux/blackarch:$BASE_IMG 57 | docker push docker.io/blackarchlinux/blackarch:$BASE_DEVEL_IMG 58 | docker push docker.io/blackarchlinux/blackarch:$LATEST_IMG 59 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | build 2 | output 3 | -------------------------------------------------------------------------------- /Dockerfile.template: -------------------------------------------------------------------------------- 1 | FROM scratch 2 | ADD TEMPLATE_ROOTFS_FILE / 3 | ENV LANG=en_US.UTF-8 4 | # Ensure keys are up to date 5 | RUN pacman-key --init && \ 6 | pacman -Syu --noconfirm archlinux-keyring 7 | CMD ["/usr/bin/bash"] 8 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | BUILDDIR=$(shell pwd)/build 2 | OUTPUTDIR=$(shell pwd)/output 3 | 4 | define rootfs 5 | mkdir -vp $(BUILDDIR)/alpm-hooks/usr/share/libalpm/hooks 6 | find /usr/share/libalpm/hooks -exec ln -sf /dev/null $(BUILDDIR)/alpm-hooks{} \; 7 | 8 | mkdir -vp $(BUILDDIR)/var/lib/pacman/ $(OUTPUTDIR) 9 | install -Dm644 /usr/share/devtools/pacman.conf.d/extra.conf $(BUILDDIR)/etc/pacman.conf 10 | cat pacman-conf.d-blackarch.conf >> $(BUILDDIR)/etc/pacman.conf 11 | 12 | sed 's/Include = /&rootfs/g' < $(BUILDDIR)/etc/pacman.conf > pacman.conf 13 | cp --recursive --preserve=timestamps --backup --suffix=.pacnew rootfs/* $(BUILDDIR)/ 14 | 15 | fakechroot -- fakeroot -- pacman -Sy -r $(BUILDDIR) \ 16 | --noconfirm --dbpath $(BUILDDIR)/var/lib/pacman \ 17 | --config pacman.conf \ 18 | --noscriptlet \ 19 | --hookdir $(BUILDDIR)/alpm-hooks/usr/share/libalpm/hooks/ $(2) 20 | 21 | fakechroot -- fakeroot -- chroot $(BUILDDIR) update-ca-trust 22 | fakechroot -- fakeroot -- chroot $(BUILDDIR) locale-gen 23 | fakechroot -- fakeroot -- chroot $(BUILDDIR) sh -c 'pacman-key --init && pacman-key --populate && bash -c "rm -rf etc/pacman.d/gnupg/{openpgp-revocs.d/,private-keys-v1.d/,pubring.gpg~,gnupg.S.}*"' 24 | echo 'allow-weak-key-signatures' >> $(BUILDDIR)/etc/pacman.d/gnupg/gpg.conf 25 | 26 | # add system users 27 | fakechroot -- fakeroot -- chroot $(BUILDDIR) /usr/bin/systemd-sysusers --root "/" 28 | 29 | # remove passwordless login for root (see CVE-2019-5021 for reference) 30 | sed -i -e 's/^root::/root:!:/' "$(BUILDDIR)/etc/shadow" 31 | 32 | # Use BlackArch shell configs and os-release 33 | fakechroot -- fakeroot -- chroot $(BUILDDIR) cp /etc/skel/{.bashrc,.zshrc,.bash_profile} /root/ 34 | 35 | # fakeroot to map the gid/uid of the builder process to root 36 | fakeroot -- tar --numeric-owner --xattrs --acls --exclude-from=exclude -C $(BUILDDIR) -c . -f $(OUTPUTDIR)/$(1).tar 37 | 38 | cd $(OUTPUTDIR); zstd --long -T0 -8 $(1).tar; sha256sum $(1).tar.zst > $(1).tar.zst.SHA256 39 | endef 40 | 41 | define dockerfile 42 | sed -e "s|TEMPLATE_ROOTFS_FILE|$(1).tar.zst|" \ 43 | Dockerfile.template > $(OUTPUTDIR)/Dockerfile.$(1) 44 | endef 45 | 46 | .PHONY: clean 47 | clean: 48 | rm -rf $(BUILDDIR) $(OUTPUTDIR) 49 | 50 | $(OUTPUTDIR)/blackarch-base.tar.xz: 51 | $(call rootfs,blackarch-base,base blackarch-keyring) 52 | 53 | $(OUTPUTDIR)/blackarch-base-devel.tar.xz: 54 | $(call rootfs,blackarch-base-devel,base base-devel blackarch-keyring) 55 | 56 | $(OUTPUTDIR)/Dockerfile.base: $(OUTPUTDIR)/blackarch-base.tar.xz 57 | $(call dockerfile,blackarch-base) 58 | 59 | $(OUTPUTDIR)/Dockerfile.base-devel: $(OUTPUTDIR)/blackarch-base-devel.tar.xz 60 | $(call dockerfile,blackarch-base-devel) 61 | 62 | .PHONY: docker-blackarch-base 63 | blackarch-base: $(OUTPUTDIR)/Dockerfile.base 64 | docker build -f $(OUTPUTDIR)/Dockerfile.blackarch-base -t blackarchlinux/blackarch:base $(OUTPUTDIR) 65 | 66 | .PHONY: docker-blackarch-base-devel 67 | blackarch-base-devel: $(OUTPUTDIR)/Dockerfile.base-devel 68 | docker build -f $(OUTPUTDIR)/Dockerfile.blackarch-base-devel -t blackarchlinux/blackarch:base-devel $(OUTPUTDIR) 69 | -------------------------------------------------------------------------------- /Readme.md: -------------------------------------------------------------------------------- 1 | # BlackArch Official Docker Images 2 | 3 | ## Quick reference 4 | 5 | Official BlackArch Linux docker images. If you find a problem, please report it [here](https://github.com/BlackArch/blackarch-docker). 6 | 7 | * **Maintainers:** BlackArch Linux developer [Stefan Venz](https://github.com/ikstream). 8 | * **Support:** [Matrix](https://matrix.to/#/#BlackArch:matrix.org). 9 | 10 | ## What is BlackArch? 11 | 12 | BlackArch Linux is an Arch Linux-based penetration testing distribution for penetration testers and security researchers. The repository contains more than 2600 tools. You can install tools individually or in groups. BlackArch Linux is compatible with existing Arch installs. For more information, see the [BlackArch's website](https://www.blackarch.org/). 13 | 14 | ![BlackArch Logo](https://raw.githubusercontent.com/BlackArch/blackarch-artwork/master/logo/ba-font-transp.png) 15 | 16 | ## About the images 17 | 18 | The root filesystem tarballs for the images is auto-generated weekly at 22:30 UTC on Sunday in Github infrastructure using [Github actions](https://github.com/BlackArch/blackarch-docker/blob/master/.github/workflows/scheduled-docker-publish.yml). 19 | 20 | ### Special note about the novnc image 21 | 22 | You need to run the container with the `--security-opt seccomp=unconfined` options, otherwise, it will fail. See https://gitlab.xfce.org/apps/xfce4-terminal/-/issues/116 and https://github.com/mviereck/x11docker/issues/346 for details. 23 | 24 | ## Availability 25 | 26 | Root filesystem tarballs are provided by Github Actions and are **only** available for 1 week once the new build is triggered. 27 | 28 | ## Updating 29 | 30 | BlackArch Linux is a rolling release distribution, so a full update is recommended when installing new packages. In other words, we suggest either execute RUN `pacman -Syu` immediately after your FROM statement or as soon as you docker run into a container. 31 | 32 | ## Former Developer/Maintainer 33 | 34 | [Eduard Tolosa](https://github.com/Edu4rdSHL) 35 | -------------------------------------------------------------------------------- /blackarch-novnc/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM blackarchlinux/blackarch:latest 2 | 3 | # Temporary patch to build on Ubuntu 20.04/10 & GitHub CI 4 | # https://bugs.archlinux.org/index.php?do=details&task_id=69563 5 | # 6 | # Uncomment this run if you get a near immediate failure saying : 7 | # error: failed to initialize alpm library 8 | # (could not find or read directory: /var/lib/pacman/) 9 | # 10 | #RUN patched_glibc=glibc-linux4-2.33-4-x86_64.pkg.tar.zst && \ 11 | # curl -LO "https://repo.archlinuxcn.org/x86_64/$patched_glibc" && \ 12 | # bsdtar -C / -xvf "$patched_glibc" && \ 13 | 14 | # hostapd-wpe needs make, but it's not a dep because it's assumed to be installed despite not being a dep 15 | RUN pacman -Syu --noconfirm make && \ 16 | # Install packages 17 | pacman -Syu --noconfirm openssh git vim tmux screen supervisor iw man mlocate pciutils less bash-completion novnc \ 18 | xorg-server-xvfb x11vnc xfce4 xfce4-goodies xfce4-power-manager blackarch-config-xfce blackarch-menus blackarch-wallpaper \ 19 | blackarch-config-cursor blackarch-config-icons blackarch-config-zsh ttf-liberation && \ 20 | # Point wallpaper to the right files 21 | sed -i 's/backgrounds\/blackarch.png/blackarch\/wallpaper.png/g' /etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml && \ 22 | # Copy BlackArch configs 23 | cp -r /etc/skel/. /root/. && \ 24 | rm -f /usr/bin/websockify && \ 25 | echo 'root:blackarch' | chpasswd && \ 26 | echo 'PermitRootLogin yes' >> /etc/ssh/sshd_config 27 | 28 | # Expose needed ports 29 | EXPOSE 22/tcp 30 | EXPOSE 8080/tcp 31 | 32 | # Set operable environment 33 | ENV DISPLAY=:0 34 | 35 | COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf 36 | 37 | WORKDIR /root 38 | CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf", "--pidfile", "/run/supervisord.pid"] 39 | ENTRYPOINT [] 40 | -------------------------------------------------------------------------------- /blackarch-novnc/supervisord.conf: -------------------------------------------------------------------------------- 1 | [supervisord] 2 | nodaemon=true 3 | #loglevel=trace 4 | logfile=/var/log/supervisor/supervisord.log 5 | 6 | [inet_http_server] 7 | port=127.0.0.1:9001 8 | 9 | [program:sshkeys] 10 | command=/usr/bin/ssh-keygen -A 11 | autostart=true 12 | autorestart=false 13 | exitcodes=0 14 | startsecs=0 15 | priority=100 16 | 17 | [program:sshdir] 18 | command=mkdir -p /run/sshd 19 | autostart=true 20 | autorestart=false 21 | exitcodes=0 22 | startsecs=0 23 | priority=1 24 | 25 | [program:sshd] 26 | command=/sbin/sshd -D 27 | autostart=true 28 | autorestart=true 29 | restartpause=3 30 | 31 | [program:X11] 32 | command=/sbin/Xvfb :0 -screen 0 1280x800x24 33 | autorestart=true 34 | priority=300 35 | 36 | [program:x11vnc] 37 | command=/sbin/x11vnc -localhost -cursor arrow -nopw -display :0 -xkb -noxrecord -noxdamage -wait 5 -shared -forever 38 | autorestart=true 39 | 40 | [program:novnc] 41 | command=/sbin/novnc --vnc localhost:5900 --listen 8080 42 | priority=450 43 | autorestart=true 44 | 45 | [program:startxfce4] 46 | priority=460 47 | command=/sbin/dbus-launch startxfce4 48 | autorestart=true 49 | environment=DISPLAY=":0",HOME="/root",USER="root" 50 | -------------------------------------------------------------------------------- /exclude: -------------------------------------------------------------------------------- 1 | ./.dockerenv 2 | ./.dockerinit 3 | ./sys 4 | ./proc 5 | ./dev 6 | ./etc/hostname 7 | ./etc/machine-id 8 | ./etc/resolv.conf 9 | ./etc/pacman.d/gnupg/openpgp-revocs.d/* 10 | ./etc/pacman.d/gnupg/private-keys-v1.d/* 11 | ./etc/pacman.d/gnupg/pubring.gpg~ 12 | ./etc/pacman.d/gnupg/S.* 13 | ./tmp/* 14 | ./var/cache/pacman/pkg/* 15 | ./var/lib/pacman/sync/* 16 | ./var/tmp/* 17 | ./alpm-hooks 18 | -------------------------------------------------------------------------------- /pacman-conf.d-blackarch.conf: -------------------------------------------------------------------------------- 1 | [multilib] 2 | Include = /etc/pacman.d/mirrorlist 3 | 4 | [blackarch] 5 | Include = /etc/pacman.d/blackarch-mirrorlist 6 | 7 | [options] 8 | NoExtract = usr/lib/os-release 9 | NoExtract = usr/share/help/* !usr/share/help/en* 10 | NoExtract = usr/share/gtk-doc/html/* usr/share/doc/* 11 | NoExtract = usr/share/locale/* usr/share/X11/locale/* usr/share/i18n/* 12 | NoExtract = !*locale*/en*/* !usr/share/i18n/charmaps/UTF-8.gz !usr/share/*locale*/locale.* 13 | NoExtract = !usr/share/*locales/en_?? !usr/share/*locales/i18n* !usr/share/*locales/iso* 14 | NoExtract = !usr/share/*locales/trans* 15 | NoExtract = usr/share/man/* usr/share/info/* 16 | NoExtract = usr/share/vim/vim*/lang/* 17 | -------------------------------------------------------------------------------- /pacman.conf: -------------------------------------------------------------------------------- 1 | # 2 | # /etc/pacman.conf 3 | # 4 | # See the pacman.conf(5) manpage for option and repository directives 5 | 6 | # 7 | # GENERAL OPTIONS 8 | # 9 | [options] 10 | # The following paths are commented out with their default values listed. 11 | # If you wish to use different paths, uncomment and update the paths. 12 | #RootDir = / 13 | #DBPath = /var/lib/pacman/ 14 | #CacheDir = /var/cache/pacman/pkg/ 15 | #LogFile = /var/log/pacman.log 16 | #GPGDir = /etc/pacman.d/gnupg/ 17 | #HookDir = /etc/pacman.d/hooks/ 18 | HoldPkg = pacman glibc 19 | #XferCommand = /usr/bin/curl -L -C - -f -o %o %u 20 | #XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u 21 | #CleanMethod = KeepInstalled 22 | Architecture = auto 23 | 24 | # Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup 25 | #IgnorePkg = 26 | #IgnoreGroup = 27 | 28 | #NoUpgrade = 29 | #NoExtract = 30 | 31 | # Misc options 32 | #UseSyslog 33 | #Color 34 | NoProgressBar 35 | # We cannot check disk space from within a chroot environment 36 | #CheckSpace 37 | VerbosePkgLists 38 | #ParallelDownloads = 5 39 | DownloadUser = alpm 40 | #DisableSandbox 41 | 42 | # By default, pacman accepts packages signed by keys that its local keyring 43 | # trusts (see pacman-key and its man page), as well as unsigned packages. 44 | SigLevel = Required DatabaseOptional 45 | LocalFileSigLevel = Optional 46 | #RemoteFileSigLevel = Required 47 | 48 | # NOTE: You must run `pacman-key --init` before first using pacman; the local 49 | # keyring can then be populated with the keys of all official Arch Linux 50 | # packagers with `pacman-key --populate archlinux`. 51 | 52 | # 53 | # REPOSITORIES 54 | # - can be defined here or included from another file 55 | # - pacman will search repositories in the order defined here 56 | # - local/custom mirrors can be added here or in separate files 57 | # - repositories listed first will take precedence when packages 58 | # have identical names, regardless of version number 59 | # - URLs will have $repo replaced by the name of the current repo 60 | # - URLs will have $arch replaced by the name of the architecture 61 | # 62 | # Repository entries are of the format: 63 | # [repo-name] 64 | # Server = ServerName 65 | # Include = rootfsIncludePath 66 | # 67 | # The header [repo-name] is crucial - it must be present and 68 | # uncommented to enable the repo. 69 | # 70 | 71 | # The testing repositories are disabled by default. To enable, uncomment the 72 | # repo name header and Include lines. You can add preferred servers immediately 73 | # after the header, and they will be used before the default mirrors. 74 | 75 | #[core-testing] 76 | #Include = rootfs/etc/pacman.d/mirrorlist 77 | 78 | [core] 79 | Include = rootfs/etc/pacman.d/mirrorlist 80 | 81 | #[extra-testing] 82 | #Include = rootfs/etc/pacman.d/mirrorlist 83 | 84 | [extra] 85 | Include = rootfs/etc/pacman.d/mirrorlist 86 | 87 | # An example of a custom package repository. See the pacman manpage for 88 | # tips on creating your own repositories. 89 | #[custom] 90 | #SigLevel = Optional TrustAll 91 | #Server = file:///home/custompkgs 92 | [multilib] 93 | Include = rootfs/etc/pacman.d/mirrorlist 94 | 95 | [blackarch] 96 | Include = rootfs/etc/pacman.d/blackarch-mirrorlist 97 | 98 | [options] 99 | NoExtract = usr/lib/os-release 100 | NoExtract = usr/share/help/* !usr/share/help/en* 101 | NoExtract = usr/share/gtk-doc/html/* usr/share/doc/* 102 | NoExtract = usr/share/locale/* usr/share/X11/locale/* usr/share/i18n/* 103 | NoExtract = !*locale*/en*/* !usr/share/i18n/charmaps/UTF-8.gz !usr/share/*locale*/locale.* 104 | NoExtract = !usr/share/*locales/en_?? !usr/share/*locales/i18n* !usr/share/*locales/iso* 105 | NoExtract = !usr/share/*locales/trans* 106 | NoExtract = usr/share/man/* usr/share/info/* 107 | NoExtract = usr/share/vim/vim*/lang/* 108 | -------------------------------------------------------------------------------- /rootfs/etc/locale.conf: -------------------------------------------------------------------------------- 1 | LANG=en_US.UTF-8 2 | -------------------------------------------------------------------------------- /rootfs/etc/locale.gen: -------------------------------------------------------------------------------- 1 | en_US.UTF-8 UTF-8 2 | -------------------------------------------------------------------------------- /rootfs/etc/os-release: -------------------------------------------------------------------------------- 1 | NAME="BlackArch" 2 | ID=blackarch 3 | ID_LIKE=arch 4 | PRETTY_NAME="BlackArch Linux" 5 | ANSI_COLOR="38;2;23;147;209" 6 | HOME_URL="https://www.blackarch.org/" 7 | SUPPORT_URL="https://www.blackarch.org/" 8 | BUG_REPORT_URL="https://www.blackarch.org/" 9 | LOGO=blackarch 10 | -------------------------------------------------------------------------------- /rootfs/etc/pacman.d/blackarch-mirrorlist: -------------------------------------------------------------------------------- 1 | # Worldwide 2 | #Server = https://mirrors.fosshost.org/blackarch/$repo/os/$arch 3 | #Server = https://mirrors.fossho.st/blackarch/$repo/os/$arch 4 | 5 | # Australia 6 | #Server = http://blackarch.mirror.digitalpacific.com.au/$repo/os/$arch 7 | #Server = rsync://mirror.digitalpacific.com.au/$repo/os/$arch 8 | 9 | # Austria 10 | #Server = http://mirror.easyname.at/blackarch/$repo/os/$arch 11 | #Server = ftp://mirror.easyname.at/blackarch/$repo/os/$arch 12 | #Server = rsync://mirror.easyname.at/blackarch/$repo/os/$arch 13 | 14 | # China 15 | #Server = https://mirror.sjtu.edu.cn/blackarch/$repo/os/$arch 16 | #Server = https://mirrors.tuna.tsinghua.edu.cn/blackarch/$repo/os/$arch 17 | #Server = https://mirrors.ustc.edu.cn/blackarch/$repo/os/$arch 18 | 19 | # Denmark 20 | #Server = https://mirrors.dotsrc.org/blackarch/$repo/os/$arch 21 | #Server = http://mirrors.dotsrc.org/blackarch/$repo/os/$arch 22 | #Server = ftp://mirrors.dotsrc.org/blackarch/$repo/os/$arch 23 | 24 | # Ecuador 25 | #Server = http://mirror.uta.edu.ec/blackarch/$repo/os/$arch 26 | #Server = https://mirror.uta.edu.ec/blackarch/$repo/os/$arch 27 | #Server = ftp://mirror.uta.edu.ec/blackarch/$repo/os/$arch 28 | #Server = rsync://mirror.uta.edu.ec/blackarch/$repo/os/$arch 29 | #Server = http://mirror.cedia.org.ec/blackarch/$repo/os/$arch 30 | #Server = https://mirror.cedia.org.ec/blackarch/$repo/os/$arch 31 | 32 | # France 33 | #Server = http://blackarch.tamcore.eu/blackarch/$repo/os/$arch 34 | #Server = https://blackarch.tamcore.eu/blackarch/$repo/os/$arch 35 | #Server = rsync://blackarch.tamcore.eu/blackarch/$repo/os/$arch 36 | #Server = http://blackarch.leneveu.fr/blackarch/$repo/os/$arch 37 | #Server = http://blackarch.pi3rrot.net/blackarch/$repo/os/$arch 38 | #Server = http://mirror.cyberbits.eu/blackarch/$repo/os/$arch 39 | #Server = https://mirror.cyberbits.eu/blackarch/$repo/os/$arch 40 | 41 | # Germany 42 | Server = https://www.blackarch.org/blackarch/$repo/os/$arch 43 | #Server = rsync://blackarch.org/blackarch/$repo/os/$arch 44 | #Server = https://mirrors.dr460nf1r3.me/repos/blackarch/$repo/os/$arch 45 | #Server = http://ftp.halifax.rwth-aachen.de/blackarch/$repo/os/$arch 46 | #Server = https://ftp.halifax.rwth-aachen.de/blackarch/$repo/os/$arch 47 | #Server = ftp://ftp.halifax.rwth-aachen.de/blackarch/$repo/os/$arch 48 | #Server = rsync://ftp.halifax.rwth-aachen.de/blackarch/$repo/os/$arch 49 | #Server = http://blackarch.unixpeople.org/$repo/os/$arch 50 | Server = https://blackarch.unixpeople.org/$repo/os/$arch 51 | #Server = rsync://blackarch.unixpeople.org/$repo/os/$arch 52 | #Server = http://mirror.undisclose.de/blackarch/$repo/os/$arch 53 | #Server = https://mirror.undisclose.de/blackarch/$repo/os/$arch 54 | #Server = rsync://mirror.undisclose.de/blackarch/$repo/os/$arch 55 | 56 | # Greece 57 | #Server = http://ftp.cc.uoc.gr/mirrors/linux/blackarch/$repo/os/$arch 58 | #Server = ftp://ftp.cc.uoc.gr/mirrors/linux/blackarch/$repo/os/$arch 59 | #Server = rsync://blackarch@cc.uoc.gr/blackarch/$repo/os/$arch 60 | 61 | # Great Britain 62 | #Server = http://www.mirrorservice.org/sites/blackarch.org/blackarch/$repo/os/$arch 63 | #Server = https://www.mirrorservice.org/sites/blackarch.org/blackarch/$repo/os/$arch 64 | #Server = rsync://rsync.mirrorservice.org/blackarch.org/blackarch/$repo/os/$arch 65 | 66 | # Italy 67 | #Server = http://blackarch.mirror.garr.it/mirrors/blackarch/$repo/os/$arch 68 | #Server = rsync://blackarch.mirror.garr.it/mirrors/blackarch/$repo/os/$arch 69 | 70 | # Japan 71 | #Server = http://www.ftp.ne.jp/Linux/packages/blackarch/$repo/os/$arch 72 | #Server = https://www.ftp.ne.jp/Linux/packages/blackarch/$repo/os/$arch 73 | #Server = http://ftp.kddilabs.jp/Linux/packages/blackarch/$repo/os/$arch 74 | #Server = https://ftp.kddilabs.jp/Linux/packages/blackarch/$repo/os/$arch 75 | 76 | # Netherlands 77 | #Server = http://mirror.serverion.com/blackarch/$repo/os/$arch 78 | #Server = https://mirror.serverion.com/blackarch/$repo/os/$arch 79 | #Server = http://mirror.neostrada.nl/blackarch/$repo/os/$arch 80 | #Server = https://mirror.neostrada.nl/blackarch/$repo/os/$arch 81 | #Server = ftp://mirror.neostrada.nl/blackarch/$repo/os/$arch 82 | #Server = rsync://mirror.neostrada.nl/blackarch/$repo/os/$arch 83 | 84 | # New Zealand 85 | #Server = http://nz-mirror.intergrid.com.au/blackarch/$repo/os/$arch 86 | 87 | # Poland 88 | #Server = http://ftp.icm.edu.pl/pub/Linux/dist/blackarch/$repo/os/$arch 89 | #Server = https://ftp.icm.edu.pl/pub/Linux/dist/blackarch/$repo/os/$arch 90 | #Server = ftp://ftp.icm.edu.pl/pub/Linux/dist/blackarch/$repo/os/$arch 91 | #Server = rsync://ftp.icm.edu.pl/pub/Linux/dist/blackarch/$repo/os/$arch 92 | #Server = gopher://ftp.icm.edu.pl/1/pub/Linux/dist/blackarch/$repo/os/$arch 93 | 94 | # Russia 95 | #Server = http://mirror.surf/blackarch/$repo/os/$arch 96 | #Server = https://mirror.surf/blackarch/$repo/os/$arch 97 | #Server = http://mirror.truenetwork.ru/blackarch/$repo/os/$arch 98 | #Server = ftp://mirror.truenetwork.ru/blackarch/$repo/os/$arch 99 | #Server = rsync://mirror.truenetwork.ru/blackarch/$repo/os/$arch 100 | #Server = http://mirror.yandex.ru/mirrors/blackarch/$repo/os/$arch 101 | #Server = ftp://mirror.yandex.ru/mirrors/blackarch/$repo/os/$arch 102 | #Server = rsync://mirror.yandex.ru/mirrors/blackarch/$repo/os/$arch 103 | 104 | # Singapore 105 | #Server = http://download.nus.edu.sg/mirror/blackarch/$repo/os/$arch 106 | #Server = https://download.nus.edu.sg/mirror/blackarch/$repo/os/$arch 107 | 108 | # Sweden 109 | #Server = http://mirror.zetup.net/blackarch/$repo/os/$arch 110 | #Server = https://mirror.zetup.net/blackarch/$repo/os/$arch 111 | 112 | # Switzerland 113 | #Server = http://mirror.easyname.ch/blackarch/$repo/os/$arch 114 | #Server = ftp://mirror.easyname.ch/blackarch/$repo/os/$arch 115 | #Server = rsync://mirror.easyname.ch/blackarch/$repo/os/$arch 116 | #Server = https://mirror.tillo.ch/ftp/blackarch/$repo/os/$arch 117 | #Server = http://mirror.tillo.ch/ftp/blackarch/$repo/os/$arch 118 | #Server = ftpes://mirror.tillo.ch/blackarch/$repo/os/$arch 119 | #Server = ftp://mirror.tillo.ch/blackarch/$repo/os/$arch 120 | #Server = rsync://mirror.tillo.ch/blackarch/$repo/os/$arch 121 | 122 | # Turkey 123 | #Server = http://ftp.linux.org.tr/blackarch/$repo/os/$arch 124 | #Server = https://ftp.linux.org.tr/blackarch/$repo/os/$arch 125 | #Server = ftp://ftp.linux.org.tr/blackarch/$repo/os/$arch 126 | #Server = rsync://rsync.linux.org.tr/blackarch/$repo/os/$arch 127 | 128 | # Taiwan 129 | #Server = http://blackarch.cs.nctu.edu.tw/$repo/os/$arch 130 | #Server = rsync://blackarch.cs.nctu.edu.tw/$repo/os/$arch 131 | 132 | # USA 133 | #Server = http://blackarch.pr0s3c.nl/blackarch/$repo/os/$arch 134 | #Server = https://blackarch.pr0s3c.nl/blackarch/$repo/os/$arch 135 | #Server = http://mirror.math.princeton.edu/pub/blackarch/$repo/os/$arch 136 | #Server = rsync://mirror.math.princeton.edu/pub/blackarch/$repo/os/$arch 137 | #Server = http://distro.ibiblio.org/blackarch/$repo/os/$arch 138 | #Server = ftp://distro.ibiblio.org/blackarch/$repo/os/$arch 139 | #Server = https://deadbeef.ninja/blackarch/$repo/os/$arch 140 | #Server = http://mirror.team-cymru.com/blackarch/$repo/os/$arch 141 | #Server = ftp://mirror.team-cymru.com/blackarch/$repo/os/$arch 142 | #Server = rsync://mirror.team-cymru.com/blackarch/$repo/os/$arch 143 | 144 | -------------------------------------------------------------------------------- /rootfs/etc/pacman.d/mirrorlist: -------------------------------------------------------------------------------- 1 | Server = https://geo.mirror.pkgbuild.com/$repo/os/$arch 2 | Server = https://mirror.rackspace.com/archlinux/$repo/os/$arch 3 | Server = https://mirror.leaseweb.net/archlinux/$repo/os/$arch 4 | -------------------------------------------------------------------------------- /rootfs/etc/skel/.bashrc: -------------------------------------------------------------------------------- 1 | # colors 2 | darkgrey="$(tput bold ; tput setaf 0)" 3 | white="$(tput bold ; tput setaf 7)" 4 | blue="$(tput bold; tput setaf 4)" 5 | cyan="$(tput bold; tput setaf 6)" 6 | nc="$(tput sgr0)" 7 | 8 | # exports 9 | export PATH="${HOME}/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:" 10 | export PATH="${PATH}/usr/local/sbin:/opt/bin:/usr/bin/core_perl:/usr/games/bin:" 11 | 12 | if [[ $EUID -eq 0 ]]; then 13 | export PS1="\[$blue\][ \[$cyan\]\H \[$darkgrey\]\w\[$darkgrey\] \[$blue\]]\\[$darkgrey\]# \[$nc\]" 14 | else 15 | export PS1="\[$blue\][ \[$cyan\]\H \[$darkgrey\]\w\[$darkgrey\] \[$blue\]]\\[$cyan\]\$ \[$nc\]" 16 | fi 17 | 18 | export LD_PRELOAD="" 19 | export EDITOR="vim" 20 | 21 | # alias 22 | alias ls="ls --color" 23 | alias vi="vim" 24 | alias shred="shred -zf" 25 | #alias python="python2" 26 | alias wget="wget -U 'noleak'" 27 | alias curl="curl --user-agent 'noleak'" 28 | 29 | # source files 30 | [ -r /usr/share/bash-completion/completions ] && 31 | . /usr/share/bash-completion/completions/* 32 | -------------------------------------------------------------------------------- /rootfs/etc/skel/.zshrc: -------------------------------------------------------------------------------- 1 | # Load colours and then set prompt 2 | # Prompt preview: 3 | # [user@hostname]-[~] 4 | # >>> 5 | autoload -U colors && colors 6 | PS1="%{$fg[blue]%}%B[%b%{$fg[cyan]%}%n%{$fg[grey]%}%B@%b%{$fg[cyan]%}%m%{$fg[blue]%}%B]-%b%{$fg[blue]%}%B[%b%{$fg[white]%}%~%{$fg[blue]%}%B]%b 7 | %{$fg[cyan]%}%B>>>%b%{$reset_color%} " 8 | 9 | # ZSH history file 10 | HISTSIZE=100 11 | SAVEHIST=100 12 | HISTFILE=~/.zsh_history 13 | 14 | # Fancy auto-complete 15 | autoload -Uz compinit 16 | zstyle ':completion:*' menu select=0 17 | zmodload zsh/complist 18 | zstyle ':completion:*' format '>>> %d' 19 | compinit 20 | _comp_options+=(globdots) # hidden files are included 21 | 22 | # Keybindings section 23 | bindkey -e 24 | bindkey '^[[7~' beginning-of-line # Home key 25 | bindkey '^[[H' beginning-of-line # Home key 26 | if [[ "${terminfo[khome]}" != "" ]]; then 27 | bindkey "${terminfo[khome]}" beginning-of-line # [Home] - Go to beginning of line 28 | fi 29 | bindkey '^[[8~' end-of-line # End key 30 | bindkey '^[[F' end-of-line # End key 31 | if [[ "${terminfo[kend]}" != "" ]]; then 32 | bindkey "${terminfo[kend]}" end-of-line # [End] - Go to end of line 33 | fi 34 | bindkey '^[[2~' overwrite-mode # Insert key 35 | bindkey '^[[3~' delete-char # Delete key 36 | bindkey '^[[C' forward-char # Right key 37 | bindkey '^[[D' backward-char # Left key 38 | bindkey '^[[5~' history-beginning-search-backward # Page up key 39 | bindkey '^[[6~' history-beginning-search-forward # Page down key 40 | 41 | # Navigate words with ctrl+arrow keys 42 | bindkey '^[Oc' forward-word # 43 | bindkey '^[Od' backward-word # 44 | bindkey '^[[1;5D' backward-word # 45 | bindkey '^[[1;5C' forward-word # 46 | bindkey '^H' backward-kill-word # delete previous word with ctrl+backspace 47 | bindkey '^[[Z' undo # Shift+tab undo last action 48 | 49 | export LD_PRELOAD="" 50 | export EDITOR="vim" 51 | export PATH="$HOME/bin:/usr/lib/ccache/bin/:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/opt/bin:/usr/bin/core_perl:/usr/games/bin:$PATH" 52 | 53 | # alias 54 | alias c="clear" 55 | alias cd..="cd .." 56 | alias curl="curl --user-agent 'noleak'" 57 | alias l="ls -ahls --color=auto" 58 | alias r="reset" 59 | alias shred="shred -zf" 60 | alias sl="ls --color=auto" 61 | alias vi="vim" 62 | alias ls="ls --color=auto" 63 | alias dir="dir --color=auto" 64 | alias vdir="vdir --color=auto" 65 | alias grep="grep --color=auto" 66 | alias fgrep="fgrep --color=auto" 67 | alias egrep="egrep --color=auto" 68 | alias wget="wget -c --user-agent 'noleak'" 69 | alias dd="dd status=progress" 70 | alias cp="cp -i" # confirm before overwriting something 71 | alias rm="rm -i" 72 | alias mv="mv -i" 73 | alias df="df -h" # human-readable sizes 74 | alias free="free -h" 75 | alias du="du -h" 76 | --------------------------------------------------------------------------------