Warning: this is an htmlized version!
The original is here, and
the conversion rules are here.
#######
#
# E-scripts on debootstrap.
#
# Note 1: use the eev command (defined in eev.el) and the
# ee alias (in my .zshrc) to execute parts of this file.
# Executing this file as a whole makes no sense.
# An introduction to eev can be found here:
#
#   (find-eev-quick-intro)
#   http://angg.twu.net/eev-intros/find-eev-quick-intro.html
#
# Note 2: be VERY careful and make sure you understand what
# you're doing.
#
# Note 3: If you use a shell other than zsh things like |&
# and the for loops may not work.
#
# Note 4: I always run as root.
#
# Note 5: some parts are too old and don't work anymore. Some
# never worked.
#
# Note 6: the definitions for the find-xxxfile commands are on my
# .emacs.
#
# Note 7: if you see a strange command check my .zshrc -- it may
# be defined there as a function or an alias.
#
# Note 8: the sections without dates are always older than the
# sections with dates.
#
# This file is at <http://angg.twu.net/e/debootstrap.e>
#           or at <http://angg.twu.net/e/debootstrap.e.html>.
#        See also <http://angg.twu.net/emacs.html>,
#                 <http://angg.twu.net/.emacs[.html]>,
#                 <http://angg.twu.net/.zshrc[.html]>,
#                 <http://angg.twu.net/escripts.html>,
#             and <http://angg.twu.net/>.
#
#######





# «.apt-cacher-ng»		(to "apt-cacher-ng")
# «.machinectl»			(to "machinectl")
# «.systemd-container»		(to "systemd-container")
# «.debootstrap»		(to "debootstrap")
# «.debootstrap-tar»		(to "debootstrap-tar")
#   «.nspawn.conf»		(to "nspawn.conf")
#   «.delete-all»		(to "delete-all")
#   «.run-debootstrap»		(to "run-debootstrap")
#   «.create-debian0.tar»	(to "create-debian0.tar")
#   «.unpack-debian0.tar»	(to "unpack-debian0.tar")
# «.debian-basic-setup»		(to "debian-basic-setup")
# «.2024may28-a»		(to "2024may28-a")
# «.ssh-X»			(to "ssh-X")
# «.authorized_keys»		(to "authorized_keys")
# «.install-other-distro»	(to "install-other-distro")






#####
#
# apt-cacher-ng
# 2024may23
#
#####

# «apt-cacher-ng»  (to ".apt-cacher-ng")
# (find-status   "apt-cacher-ng")
# (find-vldifile "apt-cacher-ng.list")
# (find-udfile   "apt-cacher-ng/")
# (find-man "8 acngfs")
# (find-man "8 apt-cacher-ng")
# (find-fline "~/LOGS/2024may23.emacs" "install apt-cacher-ng")
# (find-fline "~/LOGS/2024may23.emacs" "apt-cacher-ng gets upset if you download too much")
# (find-fline "/etc/apt-cacher-ng/")
# (find-fline "/etc/apt-cacher-ng/acng.conf" "CacheDir: /var/cache/apt-cacher-ng")
# (find-fline "/etc/apt-cacher-ng/acng.conf" "Port:3142")

# (code-c-d "aptngcache" "/var/cache/apt-cacher-ng/")
# (find-aptngcachefile "")
# (find-aptngcachesh "find * | sort")
# (find-aptngcachesh "du -ch")

<twb> edrx: if you do this >>1 time, I strongly recommend "apt
      install apt-cacher-ng" on the host, then
      --aptopt='Acquire::http::Proxy "http://localhost:3142"'

<edrx> twb: in <https://0x0.st/XZXZ.txt>, what do the errors like "502
       Connection closed [IP: ::1 3142]" mean? 1) apt-cacher-ng not
       running and so not listening on the port 3142, or 2)
       apt-cacher-ng worked in some cases and gave errors in the other
       cases, or 3) something else?



#####
#
# systemd-container (contains machinectl)
# 2024may26
#
#####

# «systemd-container»  (to ".systemd-container")
# (find-status   "systemd-container")
# (find-vldifile "systemd-container.list")
# (find-udfile   "systemd-container/")
# (find-man "1 machinectl")
# (find-man "1 portablectl")
# (find-man "1 systemd-dissect")
# (find-man "1 systemd-nspawn")
# (find-man "5 systemd.nspawn")
# (find-man "8 systemd-machined")
# (find-man "8 systemd-machined.service")
# (find-man "8 systemd-portabled")
# (find-man "8 systemd-portabled.service")
# (find-fline "~/LOGS/2024may23.emacs" "systemd-nspawn / machinectl")
# (find-fline "$ASROOT/var/lib/" "machines")
# (find-fline "$ASROOT/var/lib/machines/")




#####
#
# machinectl
# 2024may26
#
#####

# «machinectl»  (to ".machinectl")
# (find-status   "systemd-container")
# (find-vldifile "systemd-container.list")
# (find-vldifile "systemd-container.list" "/bin/machinectl")
# (find-udfile   "systemd-container/")
# (find-sh "machinectl --help")
# (find-man "1 machinectl")
# (find-man "1 machinectl" "   list")
# (find-man "1 machinectl" "   list-images")
# (find-man "1 machinectl" "   image-status [NAME...]")
# (find-man "1 machinectl" "   show-image [NAME...]")
# (find-man "1 machinectl" "   poweroff NAME...")
# (find-man "1 machinectl" "   poweroff NAME..." "Use stop as" "alias")
# (find-man "1 machinectl" "   shell [[NAME@]NAME [PATH [ARGUMENTS...]]]")
# (find-fline "$ASROOT/var/lib/" "machines")
# (find-fline "$ASROOT/var/lib/machines/")

* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
     machinectl list
     machinectl list --all
     machinectl list-images
     machinectl list-images --all
sudo machinectl start        debian
     machinectl image-status debian
     machinectl show-image   debian
sudo machinectl shell   edrx@debian
  ls -lAF /home/edrx/
  exit
sudo machinectl stop         debian
sudo machinectl stop         debian
     machinectl list



* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
sudo machinectl export-tar debian /tmp/debian0.tar
laf -h /tmp/debian.tar





#####
#
# debootstrap
# 2024may23
#
#####

# «debootstrap»  (to ".debootstrap")
# (find-status   "debootstrap")
# (find-vldifile "debootstrap.list")
# (find-udfile   "debootstrap/")
# (find-status   "systemd-container")
# (find-vldifile "systemd-container.list")
# (find-vldifile "systemd-container.list" "systemd-nspawn")
# (find-udfile   "systemd-container/")
# https://wiki.debian.org/nspawn
# https://wiki.debian.org/nspawn#Host_Preparation
# https://wiki.debian.org/nspawn#Host_Preparation            echo ... >/etc/sysctl.d/nspawn.conf
# https://wiki.debian.org/nspawn#Creating_a_Debian_Container
# https://wiki.debian.org/nspawn#Creating_a_Debian_Container debootstrap
# https://wiki.debian.org/nspawn#Creating_a_Debian_Container systemd-nspawn -D
# https://wiki.debian.org/nspawn#Creating_a_Debian_Container set root password
# https://wiki.debian.org/nspawn#Booting_a_Container         
# https://wiki.debian.org/nspawn#Booting_a_Container         systemd-nspawn --boot -U -D
# https://wiki.debian.org/nspawn#Checking_the_status_of_containers
# https://wiki.debian.org/nspawn#Logging_into_a_Container
# https://wiki.debian.org/nspawn#Stopping_a_Container

# (find-fline "~/LOGS/2024may23.emacs" "systemd-nspawn / machinectl")

It is recommended that host has unprivileged user namespaces enabled -
this is the debian default but some consider it a security risk. It is
needed to support the -U option

# (find-fline        "/var/lib/" "machines")
# (find-fline "$ASROOT/var/lib/machines/")
# (find-fline "$ASROOT/var/lib/machines/debian/")




#####
#
# Create a container with debootstrap, then export-tar it and import-tar it
# 2024may26
#
#####

# «debootstrap-tar»  (to ".debootstrap-tar")
# (find-man "8 debootstrap")
# (find-man "1 machinectl")

** «nspawn.conf»  (to ".nspawn.conf")
** See: https://wiki.debian.org/nspawn#Host_Preparation
**
* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
sudo bash
  echo 'kernel.unprivileged_userns_clone=1' > /etc/sysctl.d/nspawn.conf
  systemctl restart systemd-sysctl.service
exit

** «delete-all»  (to ".delete-all")
** debootstrap -> /var/lib/machines/debian/
**            <-> /var/lib/machines/debian0.tar
**
* (eepitch-shell3)
* (eepitch-kill)
* (eepitch-shell3)
sudo ls -lAF /var/lib/machines/
sudo du -ch  /var/lib/machines/
sudo rm -Rf  /var/lib/machines/


** «run-debootstrap»  (to ".run-debootstrap")
** Create a /var/lib/machines/debian/ with debootstrap.
** This takes several minutes.
**
sudo debootstrap \
  --include=systemd,dbus,sudo,openssh-server,psmisc,xauth,xterm \
  stable /var/lib/machines/debian


** «create-debian0.tar»  (to ".create-debian0.tar")
** Save /var/lib/machines/debian/ into debian0.tar.
** This is very quick.
sudo ls -lAFh /var/lib/machines/
sudo du -ch   /var/lib/machines/
sudo machinectl export-tar debian /var/lib/machines/debian0.tar
sudo ls -lAFh /var/lib/machines/


** «unpack-debian0.tar»  (to ".unpack-debian0.tar")
** Restore /var/lib/machines/debian/ from debian0.tar.
** This is very quick.
sudo rm -Rf                /var/lib/machines/debian/
sudo ls -lAFh              /var/lib/machines/
sudo machinectl import-tar /var/lib/machines/debian0.tar debian
sudo ls -lAFh              /var/lib/machines/
sudo du -ch                /var/lib/machines/debian/




#####
#
# Basic setups on /var/lib/machines/debian/
# 2024may26
#
#####

# «debian-basic-setup»  (to ".debian-basic-setup")
# (find-angg ".emacs.templates" "find-machinectl-tar-links")
# (find-machinectl-tar-links "debian" "0")

* (eepitch-shell3)
* (eepitch-kill)
* (eepitch-shell3)
sudo systemd-nspawn -D /var/lib/machines/debian -U --machine debian
  # apt-get install -y lua5.1
  # apt-get install -y xterm
  # apt-get install -y openssh-client openssh-server
  # apt-get install -y sudo
  apt-get install -y psmisc
  apt-get install -y xauth

  echo "edrx/edrx/Eduardo Ochs/////Y/" | tr / '\n' | adduser edrx

  ls -lAF /etc/sudoers
  echo '
    # Edrx:
    # (find-es "sudo")
    User_Alias FULLTIMERS = edrx, aleph, beth
    FULLTIMERS ALL = NOPASSWD: ALL
  ' | tee -a /etc/sudoers
  ls -lAF    /etc/sudoers

  mkdir -p  /home/edrx/.ssh/
  mkdir -p       /root/.ssh/
**
* (kill-new (find-sh0 "cat ~/.ssh/id_rsa.pub"))
** Insert below, run, then undo
**
  echo '' > /home/edrx/.ssh/authorized_keys
  echo '' >      /root/.ssh/authorized_keys
  chmod 600 /home/edrx/.ssh/authorized_keys
  chmod 700 /home/edrx/.ssh/
  chmod 600      /root/.ssh/authorized_keys
  chmod 700      /root/.ssh/
  chown -Rv edrx:edrx /home/edrx/.ssh/

  cat /etc/hosts
  echo '127.0.1.1   scylla' | tee -a /etc/hosts
  echo '127.0.1.1   debian' | tee -a /etc/hosts
  cat /etc/hosts

  cd /etc/ssh/
  sudo ssh-keygen -A

  touch                /root/.Xauthority
  touch           /home/edrx/.Xauthority
  chown edrx:edrx /home/edrx/.Xauthority

  mkdir -p /run/sshd     ; ps ax | grep ssh
  /usr/sbin/sshd -p 4444 ; ps ax | grep ssh
  /usr/sbin/sshd -p 4444 ; ps ax | grep ssh
  # (find-fline "/scp:root@localhost#4444:/etc/ssh/sshd_config")
  killall sshd           ; ps ax | grep ssh

exit

# (find-fline "~/.ssh/known_hosts")
ssh-keygen -f "/home/edrx/.ssh/known_hosts" -R "[localhost]:4444"

# (find-machinectl-tar-links "debian" "1")
# (find-machinectl-tar-links "debian" "2")





#####
#
# 2024may28-a
# 2024may28
#
#####

# «2024may28-a»  (to ".2024may28-a")
# (find-efunction 'find-debootstrap1-links)

* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
# (find-es "debootstrap" "unpack-debian0.tar")
# (find-es "debootstrap" "run-debootstrap")
# (find-asrootfile "/var/lib/machines/")
sudo rm -Rf                /var/lib/machines/debian/
sudo ls -lAFh              /var/lib/machines/
sudo machinectl import-tar /var/lib/machines/debian0.tar debian
sudo ls -lAFh              /var/lib/machines/
sudo du -ch                /var/lib/machines/debian/

# (find-es "debootstrap" "debian-basic-setup")
# (find-debootstrap1-links)
sudo systemd-nspawn -D /var/lib/machines/debian -U --machine debian

  apt-get install -y systemd dbus sudo openssh-server psmisc xauth xterm
* (eepitch-password-prompt 'yes)
* (eepitch-password-prompt 'no)
* (find-debootstrap1-links)

  exit

sudo ls -lAFh /var/lib/machines/
sudo du -ch   /var/lib/machines/
sudo machinectl export-tar debian /var/lib/machines/debian1.tar
sudo ls -lAFh /var/lib/machines/


* (find-3EE '(eepitch-shell) '(eepitch-shell2))
* (find-3ee '(eepitch-shell) '(eepitch-shell2))
* (eepitch-shell)
* (eepitch-shell2)
sudo systemd-nspawn -D /var/lib/machines/debian -U --machine debian
  mkdir /run/sshd
  /usr/sbin/sshd -p 4444 -d
*
* (eepitch-shell)

# (find-fline "/scp:root@localhost#4444:/etc/ssh/sshd_config")
# (find-fline "/scp:root@localhost#4444:")
# (find-fline "/scp:edrx@localhost#4444:")









#####
#
# ssh-X
# 2024may26
#
#####

# «ssh-X»  (to ".ssh-X")

* (find-3EE '(eepitch-shell2) '(eepitch-subdebian-sshd))
* (find-3ee '(eepitch-shell2) '(eepitch-subdebian-sshd))
* (eepitch-shell2)
* (eepitch-subdebian-sshd)

* (eepitch-subdebian-sshd)
* (eepitch-kill)
* (eepitch-subdebian-sshd)
     machinectl list
sudo machinectl stop  debian
sudo machinectl stop  debian
     machinectl list
sudo systemd-nspawn -D /var/lib/machines/debian -U --machine debian
  mkdir -p /run/sshd     ; ps ax | grep ssh
  /usr/sbin/sshd -p 4444 ; ps ax | grep ssh
  /usr/sbin/sshd -p 4444 ; ps ax | grep ssh



    killall sshd         ; ps ax | grep ssh
exit
sudo machinectl stop  debian
sudo machinectl stop  debian
sudo machinectl terminate debian
     machinectl list


* (find-3ee '(eepitch-shell2) '(eepitch-subdebian-sshd))
* (eepitch-shell2)
* (eepitch-kill)
* (eepitch-shell2)
ssh -X -p 4444 edrx@localhost
xterm &
exit

* (eepitch-subdebian)
* (eepitch-kill)
* (eepitch-subdebian)
xterm &
exit


# (find-fline "/scp:edrx@localhost#4444:")
# (find-fline "/scp:root@localhost#4444:")
# (find-fline "/scp:root@localhost#4444:/root/")
# (find-fline "/scp:root@localhost#4444:/home/edrx/")
# (find-subdebianfile  "")
# (find-subdebianrfile "")





#####
#
# Ssh without password
# 2024may26
#
#####

# «authorized_keys»  (to ".authorized_keys")
# (find-es "linode" "rsyncs" "authorized_keys")

# (find-fline "/scp:root@linode:/root/" ".ssh")
# (find-fline "/scp:root@linode:/root/.ssh/")
# (find-fline "/scp:root@linode:/root/.ssh/authorized_keys")
# (find-fline "/scp:root@linode:/home/edrx/" ".ssh")
# (find-fline "/scp:root@linode:/home/edrx/.ssh/")
# (find-fline "/scp:root@linode:/home/edrx/.ssh/authorized_keys")

* (eepitch-subdebian)
* (eepitch-kill)
* (eepitch-subdebian)


* (eepitch-shell2)
* (eepitch-kill)
* (eepitch-shell2)

* (eepitch-shell2)
* (eepitch-kill)
* (eepitch-shell2)
ssh -p 4444 edrx@localhost

# (find-file "/ssh:root@localhost#4444:")
# (find-file "/scp:root@localhost#4444:")
# (find-file "/ssh:edrx@localhost#4444:")
# (find-file "/scp:edrx@localhost#4444:")



# https://www.garron.me/en/linux/sshd-no-hostkeys-available-exiting.html

cd /etc/ssh/
sudo ssh-keygen -A
sudo /etc/init.d/ssh start



* (find-3ee '(eepitch-shell2) '(eepitch-shell3))
* (eepitch-password-prompt 'yes)
* (eepitch-password-prompt 'no)
* (eepitch-shell2)
ssh-keygen -f "/home/edrx/.ssh/known_hosts" -R "[localhost]:4444"
ssh -X -p 4444 edrx@localhost
yes
edrx
  xterm &
  exit

* (eepitch-shell3)
  /usr/sbin/sshd -p 4444 ; ps ax | grep ssh
    killall sshd         ; ps ax | grep ssh
  exit

* (eepitch-shell3)
* (eepitch-kill)
* (eepitch-shell3)
     machinectl list
sudo machinectl start debian
     machinectl list
sudo machinectl login debian
ls -lAF /home/edrx/
sudo machinectl top debian

  mkdir -p /run/sshd     ; ps ax | grep ssh
  /usr/sbin/sshd -p 4444 ; ps ax | grep ssh
  /usr/sbin/sshd -p 4444 ; ps ax | grep ssh
  # (find-fline "/scp:edrx@localhost#4444:")
  # (find-fline "/scp:edrx@localhost:")
  killall sshd           ; ps ax | grep ssh


* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
sudo machinectl stop  debian
     machinectl list

                      ps ax | grep ssh
sudo /usr/sbin/sshd ; ps ax | grep ssh

* (eepitch-shell2)
* (eepitch-kill)
* (eepitch-shell2)
ssh -X -p 4444 edrx@localhost
ssh 



  /usr/sbin/sshd -p 4444 ; ps ax | grep ssh





sudo machinectl start debian

sudo systemctl stop systemd-nspawn@debian

(find-fline "/scp:edrx@localhost#4444:")
(find-fline "/scp:root@localhost#4444:")
(code-c-d "subdebianr" "/scp:root@localhost#4444:")












# (find-esgrep "grep --color -nH -e debootstrap *.e")
# (find-es "debrepository" "debootstrap")
# (find-es "debrepository" "debootstrap-2018")

# (find-status   "debootstrap")
# (find-vldifile "debootstrap.list")
# (find-udfile   "debootstrap/")
# (find-man "8 debootstrap")
# (find-man "8 debootstrap" "--no-check-gpg")
# (find-udfile "debootstrap/README.Debian")
# (find-fline "/usr/lib/debootstrap/")




#####
#
# Using debootstrap to install another distro
# 2019apr21
#
#####

# «install-other-distro» (to ".install-other-distro")
# Hints from klys from #grub...

<edrx> hi all. I am using a ThinkPad T400 with LibreBoot, and with
       a single partition with Trisquel that got some bugs with
       time (long story). I am trying to shrink that partition and
       create a Debian partition in the rest of the HD, but I'm
       stumbling on several difficulties - please advise =(
<edrx> First: I've been able to read the contents of the flash
       memory to inspect its grub config, but flashrom says that it
       may be dangerous to try to overwrite the flash memory. My
       script to read the flash and the relevant part of the
       (verbose) output are here:
<edrx> http://angg.twu.net/e/libreboot.e.html#libreboot-util
<edrx> Second: I downloaded an ISO of an Debian install CD and
       dd'ed it to a pen drive, following this:
       https://www.debian.org/CD/faq/#write-usb
<edrx> but when I insert that pen drive and boot into libreboot
       then SOME things break...
<klys> trisquel has a kernel, no?
<klys> I am accustomed to using debian with custom kernel
<edrx> I can run the option 'Search ISOLINUX menu (USB)  [u]' in
       the grub from libreboot. The background image changes, which
       indicates that it is able to access the pen drive... but TAB
       completion on device names now freezes grub...
<edrx> klys: yes, it's a debian derivative
<klys> in that case, perhaps the best way to install will be:
       debootstrap
<klys> granted, you seem to need some help with your new kernel
<edrx> yep, that looks good, but does that work well to install a
       different distro?
<klys> yes
<klys> I've used it to install old and new debians
<edrx> ooooooo =)
<edrx> did you keep notes of what you did, or do you have a link
       that explains how to use that to install a different distro?
       (I'm googling for that)
<klys> so, debootstrap --arch=amd64 stretch /mnt
       https://mirrors.edge.kernel.org/debian
<klys> or buster if you want a frozen stable
<edrx> one second, I'm trying to take notes in an organized way...
       I'll show them to you in a second
<klys> it seems buster isn't quite released yet; when it is, jessie
       will go here: http://archive.debian.org/debian
<klys> one option that i've used on some debootstrap commands was:
       --no-check-gpg


# https://www.debian.org/releases/
# The current stable distribution of Debian is version 9, codenamed
# stretch. It was initially released as version 9 on June 17th, 2017
# and its latest update, version 9.8, was released on February 16th,
# 2019.
# The current testing distribution is buster.

# (find-man "8 debootstrap")
# (find-man "8 debootstrap" "--arch=ARCH")
# (find-man "8 debootstrap" "SUITE TARGET [MIRROR [SCRIPT]]")

debootstrap --arch=amd64 stretch /mnt
debootstrap --arch=amd64 stretch /mnt https://mirrors.edge.kernel.org/debian






#  Local Variables:
#  coding:               utf-8-unix
#  End: