Updated to support Debian-9/Linux-4.12 November 2017
Begyndelsen af denne her POST er på sin vis helt overflødigt da Bodhi allerede har gjort arbejdet og stillet det færdige filsystem “Debian-3.17.0-kirkwood-tld-1-rootfs-bodhi.tar.bz2” tilrådighed lige her http://forum.doozan.com/read.php?2,12096.
Brug den, og gå så videre til GENVEJ.
Hvis du nu ikke lytter til mit råd ovenfor og lige som mig vil vide hvordan det HELE er skruet sammen, så er her hvordan jeg gør:
Det at lave et helt ny Debian system helt fra scratch gør man ikke så tit så det er ikke værd at investere tid i at lave og teste et shell-script til at gøre det, men det er nu ikke særligt svært så det er bare at gå igang. Her er listen over de kommandoer jeg udførte for at gøre det.
På serveren
Vi kører på en PogoPlug der kunne være produktet af selve denne post eller den sidste post. Vi skal lave et Debian-root-filsystem i /home/pogo, så lad os gå igang:
mkdir /home/pogo apt-get update apt-get install debootstrap EXTRAS=initramfs-tools,u-boot-tools,openssh-server,openssh-client,autofs,binutils,bzip2,file,mtd-utils,module-init-tools,logfs-tools,ntp,openssh-client,rpcbind,rsync,sudo debootstrap --include $EXTRAS wheezy /home/pogo du -sh /home/pogo
Vi har nu installeret en minimal Debian, vi skal blot have tilføjet en ny Linux kernel “linux-3.17.0-kirkwood-tld-1-bodhi.tar.bz2” fra mit DIST dir, den kan også hentes fra http://forum.doozan.com/read.php?2,12096
cd /home/pogo mkdir work tar -C work -xvjf /home/DIST/linux-3.17.0-kirkwood-tld-1-bodhi.tar.bz2 for i in dev dev/pts sys proc;do mount -o bind /$i $i;done
På det “nye” system via chroot
Vi skal have installeret Bodhi’s Linux-kerne og FDT beskrivelserne.
LANG=C LC_ALL=C chroot . dpkg -i work/linux-image-3.17.0-kirkwood-tld-1_1_armel.deb tar -C boot -xvf work/linux-dtb-3.17.0-kirkwood-tld-1.tar ln -s vmlinuz-3.17.0-kirkwood-tld-1 /boot/zImage mkimage -A arm -O linux -T ramdisk -C gzip -a 0x00000000 -e 0x00000000 -n initramfs -d /boot/initrd.img-3.17.0-kirkwood-tld-1 /boot/uInitrd passwd root # hvad med "Geheim" - det er hemmeligt ### support for fdt kerner ln -s zImage-3.17.0-kirkwood-tld-1 boot/zImage exit # slut på chroot
Tilbage på Serveren
Maskinen er sådan set klar, ihvertfald til boot fra disk/usbstick/sdcard
Så det er på sin plads at stoppe op og lave en kopi inden vi kører videre.
tar -C /home/pogo -cvjf /home/DIST/Debian-3.17.0-kirkwood-tld-1-rootfs-storepeter.tar.bz2 .
GENVEJ
Hvis du tager genvejen skal du i stedet for alt det ovenstående udpakke den Debian Bodhi stiller til rådighed, ellers skal du springe dette over
tar -C /home/pogo -xvjf /home/DIST/Debian-3.17.0-kirkwood-tld-1-rootfs-bodhi.tar.bz2 . cd /home/pogo
NFSROOT relaterede ændringer, vi i /home/pogo, alle ændringer sker i filer herunder.
cp -r etc/initramfs/. etc/initramfs-nfsroot echo BOOT=nfs >> etc/initramfs-nfsroot/initramfs.conf echo MODULES=netboot >> etc/initramfs-nfsroot/initramfs.conf mkinitramfs -d etc/initramfs-nfsroot -o boot/initrd.img-nfsroot mkimage -A arm -O linux -T ramdisk -C gzip -a 0x00000000 -e 0x00000000 -n initramfs-3.17.0-kirkwood-tld-1 -d boot/initrd.img-nfsroot boot/uInitrd
Fjern ctrl-alt-f[1-6] terminaler, enable seriel console, /tmp på tmpfs, hostname sættes fra DHCP og disable dhcp-client, og set /etc/resolv.conf og undgå problemer ved nedlukning (der jo ikke adgang til noget efter at nettet er lukket ned) / http://www.iram.fr/~blanchet/tutorials/read-only_diskless_debian7.pdf
sed -i.orig -e '/tty[1-6]$/s/^/#/' -e 's/^#T0:/T0:/' -e '/^T0:/s/9600/115200/' etc/inittab echo ASYNCMOUNTNFS=no >> etc/default/rcS echo RAMTMP=yes >> etc/default/rcS echo CONFIGURE_INTERFACES=no >> etc/default/networking rm /etc/hostname cat << EOF domain pogo.lorenzen.us search pogo.lorenzen.us nameserver 192.168.2.2 nameserver 192.168.2.1 EOF sed -i.orig -e 's/reboot -d .*/reboot -d -f/g' etc/init.d/reboot sed -i.orig -e 's/halt -d .*/reboot -d -f/g' etc/init.d/halt exit
Nu skal vi exportere filsystemet og sætte DHCP serveren op så en af Plug-erne kan boote herfra, Jeg bruger dnsmasq som både håndterer DNS og DHCP, vær opmærksom på selv om man kan specificere “hostname, ipaddr, ethaddr” direkte i “dhcp-host”, så gør jeg det ikke da DNS delen kun svarer for de host der har en aktiv DHCP lease, så jeg har “hostname, ipaddr” i /etc/hosts, og “hostname, ethaddr” i dnsmasq-filen, hvis man glemmer at specificere den i /etc/hosts, får den blot en adresse fra poolen. Da jeg ofte servicerer mere end et net deler jeg opsætningen op som det fremgår af nedenstående:
apt-get install dnsmasq nfs-server cat >> /etc/hosts << EOF 127.0.0.1 localhost 192.168.192.2 pogo80 srv 192.168.192.10 dockstar 192.168.192.11 pogo_e02 192.168.192.12 mobile 192.168.192.13 pogo_v4 # avoid pogoplug self-updating 192.168.192.201 service.cloudengines.com EOF cat > /etc/dnsmasq.d/common << EOF resolv-file=/etc/resolv-up.conf # dont forward single names upstream domain-needed domain=pogo.lorenzen.us,192.168.192.0/24 # For debugging purposes, log each DNS query as it passes through log-queries # Log lots of extra information about DHCP transactions. log-dhcp EOF cat >> /etc/dnsmasq.d/kirkwood << EOF # Repeat the line for more than one interface. interface=eth0 dhcp-range=interface:eth0,192.168.192.100,192.168.192.200,12h dhcp-host=00:10:75:1A:5B:4D,dockstar,set:dockstar dhcp-host=00:25:31:02:c9:59,pogo_e02,set:pogoe02 dhcp-host=00:25:31:03:f8:2f,mobile,set:pogov4 dhcp-host=00:25:31:05:17:cb,pogo_v4,set:pogov4 dhcp-option=tag:eth0,option:ntp-server,192.168.192.2 dhcp-option=tag:eth0,option:dns-server,192.168.192.2,192.168.192.1 # rootpath dhcp-option-force=tag:dockstar,17,"192.168.192.2:/home/pogo" dhcp-option-force=tag:pogoe02,17,"192.168.192.2:/home/pogo" dhcp-option-force=tag:pogov4,17,"192.168.192.2:/home/pogo" EOF cat >> /etc/exports << EOF /home/pogo *(ro,sync,no_root_squash,no_subtree_check) pogo_e02(rw,sync,no_root_squash,no_subtree_check) EOF
/etc/init.d/dnsmasq restart /etc/init.d/nfs-kernel-server restart exportfs -a
Desvære er det ikke altid nok at restarte nfs-dæmonen,
hvis /etc/exports ikke indholdt exporterede filsystemer før skal maskinen restartes
Dette var ordene pogo_e02 maskine skulle nu kunne boote med et read/write nfs-monteret filsystem, de andre har readonly root.