|
Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
#######
#
# E-scripts on installing Potato from some messy CDs
#
# 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/potato.e>
# or at <http://angg.twu.net/e/potato.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/>.
#
#######
# «.testing_.debs» (to "testing_.debs")
# «.swap» (to "swap")
# «.pot1cd_0» (to "pot1cd_0")
# «.pot1cd_0a» (to "pot1cd_0a")
# «.pot1cd_0b» (to "pot1cd_0b")
# «.stop-restart-services» (to "stop-restart-services")
# «.pot1cd_0c» (to "pot1cd_0c")
# «.pot1cd_0d» (to "pot1cd_0d")
# «.cheapbytes_potato» (to "cheapbytes_potato")
# «.rescue_other_kernel» (to "rescue_other_kernel")
#####
#
# Testing the .debs
#
#####
# «testing_.debs» (to ".testing_.debs")
cd /big/potato/
for f in $(find * -type f -and -name '*.deb'); do
echo $f:
ar p $f data.tar.gz | gzip -t
done |& tee ~/tmp/potato-testdebs
# (find-fline "~/tmp/potato-testdebs")
cd /big/slinkb1/
for f in $(find * -type f -and -name '*.deb'); do
echo $f:
ar p $f data.tar.gz | gzip -t
done |& tee ~/tmp/slink-testdebs
# (find-fline "~/tmp/slink-testdebs")
#####
#
# Swap files
#
#####
# «swap» (to ".swap")
SWAP=/hdc6/tmp/swap1
#SWAP=/swap1
dd if=/dev/zero of=$SWAP bs=1024 count=65536
chmod 600 $SWAP
mkswap $SWAP
SWAP=/hdc6/tmp/swap1
#SWAP=/swap1
cat /proc/swaps
swapon $SWAP
cat /proc/swaps
#####
#
# Running a chrooted potato dselect and straceing it
#
#####
umount /dev/hdc2
rmdir /big
rm /big
ln -s hdd1/big /big
# mount /dev/hdc2 /hdd1/big -o ro
mount /dev/hdc2 /hdd1/big
mount
chroot /hdd1 /bin/sh
# (find-fline "/hdd1/etc/apt/sources.list")
#
# deb file:/big/potato dists/potato/main/binary-i386/
# deb file:/big/potato dists/potato/contrib/binary-i386/
# deb file:/big/potato dists/potato/non-free/binary-i386/
umount /dev/hdc2
rm /big
mkdir /big
mount /big
# Delete old links from "binary-386/*/*.deb" to binary-all
rm -v $(
find /big/potato/dists/potato/{main,contrib,non-free}/binary-i386/ \
-type l
)
# Copy (with ln -s) every .deb in binary-all to binary-i386.
# Note: almost all of the binary-all .debs apply to i386.
for i in main contrib non-free; do
cd /big/potato/dists/potato/$i/binary-all/
for j in */*.deb; do
ln -s ../../binary-all/$j /big/potato/dists/potato/$i/binary-i386/$j
done
done
# (find-fline "$SDEBIAN/ls-lR.i")
# (find-fline "$SDEBIAN/ls-lR.i" "binary-i386/base/netbase")
# There are still some files missing:
dists/frozen/main/binary-i386/base/tar_1.13.17-2.deb
dists/frozen/main/binary-i386/mail/exim_3.12-7.deb
dists/frozen/main/binary-i386/doc/man-db_2.3.15.deb
dists/frozen/main/binary-i386/base/libreadline4_4.1-1.deb
dists/frozen/main/binary-i386/net/dnsutils_8.2.2p5-9.deb
dists/frozen/main/binary-i386/doc/doc-debian_2.2.deb
dists/frozen/main/binary-i386/doc/doc-linux-text_2000.03-1.deb
dists/frozen/main/binary-i386/net/finger_0.10-3.deb
dists/frozen/main/binary-i386/net/fingerd_0.10-3.deb
dists/frozen/main/binary-i386/misc/gpm_1.17.8-16.deb
dists/frozen/main/binary-i386/mail/mpack_1.5-5.deb
dists/frozen/main/binary-i386/base/netbase_3.18-1.deb
dists/frozen/main/binary-i386/admin/base-config_0.24.deb
dists/frozen/main/binary-i386/base/libnewt0_0.50-6.deb
dists/frozen/main/binary-i386/base/whiptail_0.50-6.deb
# Two alternatives: rebuild the "Packages" file or download the new
# versions.
#####
#
# Other things
#
#####
dselect needed many "[I]nstall" runs
kbdrate
netscape depends on some slink libs
exim has lost my mail
zsh-3.1.6 has a bindkey/tab bug
emacs19 doesn't search /usr/share/info
xmame-svga is unable to open scramble.zip
expect5.24 expects one character too much
mouseconfig froze on port detection
# (find-vldifile "fvwm.list")
# (find-fline "/usr/doc/fvwm/")
# (find-fline "/usr/doc/fvwm/README.Debian_upgrading.gz" "better\nmethod")
cd ~/.fvwm2/
cp -v *hook ~/tmp/
# (find-fline "/usr/X11R6/bin/fvwmrc_convert")
fvwmrc_convert
apache
info2www
# (find-vldifile "gnapster.list")
# (find-fline "/usr/doc/gnapster/")
#####
#
# mini-potato on one CD: first steps, again
# 2000may08
#
#####
# «pot1cd_0» (to ".pot1cd_0")
# «pot1cd_0a» (to ".pot1cd_0a")
# I got a small scratch partition in /dev/hdd3; now the trick is to
# use a loop device to simulate a root floppy and to use it to install
# a base system at /dev/hdd3, taking the base files from a dir
# somewhere at /big that fakes the installation CD; then I pack the
# contents of /dev/hdd3 in a file to avoid having to run the boot
# floppies again, and then I try to make the base system install a
# full system from the fake CD.
# Run dbootstrap on a loopdev-mounted root floppy.
zcat /big/potato/dists/potato/main/disks-i386/current/images-1.44/root.bin \
> /tmp/root.img
mkdir -p /L
mountloop0L /tmp/root.img
mount -t proc proc2 /L/proc
umount /big
umount /hdd3
strace-to ~/s chroot /L /sbin/dbootstrap
# (find-fline "/etc/fstab" "/big")
# Use:
# install medium - harddisk
# partition: /dev/hda2
# path: /instmnt/potato
#
# (find-fline "~/s")
# dbootstrap tries to reboot the system when finished. Kill it
# instead, and logoff/logon again on that terminal to reset it to a
# usable state.
kill -9 $(pidof dbootstrap)
cat /proc/mounts
umount /L/proc
umount -n /dev/hdd3
mount /hdd3
cd /hdd3/
tar -cvzf ~/tmp/base_hdd3.tgz *
# «pot1cd_0b» (to ".pot1cd_0b")
# «stop-restart-services» (to ".stop-restart-services")
# (find-es "xxx-server" "first_doc")
# (find-angg ".zshrc" "stop-restart-services")
# Next: the elegant solution is to keep the old system running, and do
# the installation by chrooting to hdd3... to do so we turn off most
# daemons of the main partition to free their ports, but without
# falling outside of runlevel 2; then we guess what the init in the
# child partition does and try to simulate it.
# (find-fline "/etc/init.d/")
# (find-fline "/etc/inittab")
# (find-fline "/etc/rc2.d/")
print -l /etc/rc2.d/* | tee ~/o
# (find-fline "~/o")
for i in $(tac ~/o); do
echo $i; $i stop
done
# (find-fline "/hdd3/")
# (find-fline "/hdd3/etc/inittab" "dpkg-reconfigure")
# (find-fline "/hdd3/etc/init.d/")
# (find-fline "/hdd3/etc/init.d/rcS")
# (find-fline "/hdd3/etc/rc2.d/")
# (find-fline "/hdd3/etc/inittab" "dpkg-reconfigure")
umount /big
mount -t proc proc2 /hdd3/proc
chroot /hdd3 /etc/init.d/rc S
chroot /hdd3 /etc/init.d/rc 2
# We mount /big because we'll ask apt to use the "filesystem" method
mkdir /hdd3/big
chroot /hdd3 mount -o ro /dev/hda2 /big
# (find-fline "/hdd3/usr/sbin/dpkg-reconfigure")
chroot /hdd3 /usr/sbin/dpkg-reconfigure base-config
# No non-us, no non-free; repository at /big/potato. Advanced method;
# add zsh30, zsh30-doc (which is missing), wget, gnuserv, emacs20,
# expect5.24, tk8.0-dev and friends.
# Oops, no space left on device (I can try not to install emacs20-el),
# and the old bug on the first installations of man-db, but the rest
# seems ok.
chroot /hdd3 umount /big
# «pot1cd_0c» (to ".pot1cd_0c")
# Unmount /hdd3/big and /hdd3/proc and turn off all /hdd3 daemons.
chroot /hdd3 umount /big
cat /proc/mounts
cd /hdd3/; print -l etc/rcS.d/* etc/rc2.d/* | tee ~/o
for i in $(tac ~/o); do
echo $i; chroot /hdd3 /$i stop
done
umount /hdd3/proc
# «pot1cd_0d» (to ".pot1cd_0d")
# If something went wrong with dselect we erase everything in /hdd3
# (considering that nothing else is mounted there!) and return to the
# situation that we had just after the installation of the base system
# by the root floppy; then we may repeat some of the steps above.
cat /proc/mounts
rm -Rv /hdd3/*
cd /hdd3/
mklost+found
umount /dev/hdd3
# My /dev/hdd is an old HD that sometimes has problems; sometimes
# Linux gives up dealing with it and I need to repair it someway.
# (find-fline "/etc/init.d/checkfs.sh")
# (eeman "fsck")
# (eeman "mke2fs" "-c ")
#mycat /proc/ide/ide1/hdd/* |& l
#umount /dev/hdd3; fsck -C -f -y /dev/hdd3
# This block is for when something has gone wrong and we want to erase
# the new installation and start again from just after the install of
# the base system.
for i in $(<~/o); do
echo $i; $i start
done
# You don't need to understand this:
(unset DISPLAY; /etc/init.d/gpm start)
#####
#
# cheapbytes potato CDs
# 2000oct07
#
#####
# «cheapbytes_potato» (to ".cheapbytes_potato")
cd; mount /cdrom; cd /cdrom/
'ls' -lR | ~/ICON/lslR2find2 32 42 56 | tee ~/tmp/potato1
cd; mount /cdrom; cd /cdrom/
'ls' -lR | ~/ICON/lslR2find2 32 42 56 | tee ~/tmp/potato2
cd; mount /cdrom; cd /cdrom/
'ls' -lR | ~/ICON/lslR2find2 32 42 56 | tee ~/tmp/potato3
cd; mount /cdrom; cd /cdrom/
'ls' -lR | ~/ICON/lslR2find2 32 42 56 | tee ~/tmp/potsrc1
cd; mount /cdrom; cd /cdrom/
'ls' -lR | ~/ICON/lslR2find2 32 42 56 | tee ~/tmp/potsrc2
cd; mount /cdrom; cd /cdrom/
'ls' -lR | ~/ICON/lslR2find2 32 42 56 | tee ~/tmp/potsrc3
cd; mount /cdrom; cd /cdrom/
'ls' -lR | ~/ICON/lslR2find2 32 42 56 | tee ~/tmp/freebsd41
cd; mount /cdrom; cd /cdrom/
'ls' -lR | ~/ICON/lslR2find2 32 42 56 | tee ~/tmp/stampede
# (find-fline "~/tmp/potato1")
# (find-fline "~/tmp/potato2")
# (find-fline "~/tmp/potato3")
# (find-fline "~/tmp/potsrc1")
# (find-fline "~/tmp/potsrc2")
# (find-fline "~/tmp/potsrc3")
# (find-fline "~/tmp/freebsd41")
# (find-fline "~/tmp/stampede")
#*
cat ~/tmp/potato[123] | cut -b12- \
| grep -v '/$' | grep -v 'TRANS.TBL' | sort \
| perl -nle 's:^.*/([^/]+)$:\1: && print' | sort | uniq | grep '\.deb$' \
> ~/tmp/potatocddebs
#*
cd /debian/
find * | perl -nle 's:^.*/([^/]+)$:\1: && print' | grep '\.deb$' \
| sort | uniq \
> ~/tmp/hddebs
#*
# (find-node "(textutils)comm invocation")
#comm -1 ~/tmp/potatocddebs ~/tmp/hddebs
#1: cds only
# 2: hd only
# 3: both
comm ~/tmp/potatocddebs ~/tmp/hddebs
#*
comm ~/tmp/potatocddebs ~/tmp/hddebs \
| perl -nle 'm:^ (.*)$: && print "/$1"' \
> /tmp/of
cd /
find /debian /potato | fgrep -f /tmp/of | tee /tmp/otodel \
| perl -nle 'print "rm -v $_"' \
| tee /tmp/otorm
#*
mkdir /hdd6/potatobin{1,2,3}
cd; mount /cdrom; cd /cdrom
cd /cdrom; cp -diPpvR .* * /hdd6/potatobin1
cd; mount /cdrom && cd /cdrom && cp -diPpvR .* * /hdd6/potatobin2
cd; mount /cdrom && cd /cdrom && cp -diPpvR .* * /hdd6/potatobin3
#####
#
# rescue floppy with another kernel
# 2000nov14
#
#####
# «rescue_other_kernel» (to ".rescue_other_kernel")
# (find-angg ".zshrc" "loop_device")
# (find-fline "$SDEBIAN/")
# (find-fline "$SDEBIAN/dists/potato/main/disks-i386/2.2.15-2000-06-07/images-1.44/")
# (find-fline "$SDEBIAN/dists/potato/main/disks-i386/current/images-1.44/")
#*
cd $SDEBIAN/dists/potato/main/disks-i386/current/images-1.44/
cp -v rescue.bin /tmp/
insmod loop
mkdir /L
mount -o loop /tmp/rescue.bin /L
cd /L
ls -lAF
rm linux
cp -v /boot/vmlinuz-2.2.17-edrx linux
ls -lAF
cd
umount /L
cd /tmp/
#cat rescue.bin > /dev/fd0
#*
# Local Variables:
# coding: utf-8-unix
# End: