9fans - fans of the OS Plan 9 from Bell Labs
 help / color / mirror / Atom feed
From: dante <subscriptions@posteo.eu>
To: Fans of the OS Plan 9 from Bell Labs <9fans@9fans.net>
Subject: Re: [9fans] running plan9 : an ideal setup?
Date: Tue, 18 Nov 2014 23:09:30 +0100	[thread overview]
Message-ID: <21f6154e232308ece1ecffbffa3ef404@posteo.de> (raw)
In-Reply-To: <CAEj9f0J_m9pCXJC-cO8bUrqCrgm4p2PTTCE2Zff10Xb+S7QUJQ@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 1674 bytes --]

Hi Mats,

I posted it before; unfortunately the archive doesn't save the attached
files.
Here is the original post: http://9fans.net/archive/2014/08/78.

Please see the attachment for the script.

Cheers,
Dante

On 18.11.2014 22:28, Mats Olsson wrote:
> Hi dante!
>
> I would appreciate it a lot if you could send the "clone script" that
> you used to clone the 9pi imate to a larger SD card. Thanks
> beforehand!
>
> Kind Regards,
> Mats
>
> 2014-11-18 21:29 GMT+01:00, Richard Miller <9fans@hamnavoe.com>:
>>> If you must use a rpi, you should strive to use it as a terminal, and
>>> like every other Plan 9 terminal it should use the central file
>>> server
>>> without local storage.
>>
>> That would be my advice too.  As an experiment, I set up a 9picpu
>> using
>> the SD card as local storage, working mostly as a secondary smtp and
>> imap
>> server.  After a bit less than a year, the SD card suffered a
>> catastrophic
>> failure.  When I say catastrophic, I mean I can't find any meaningful
>> data
>> anywhere in the first 120MB or so of /dev/sdM0/data ... just
>> not-quite-random
>> looking garbage.
>>
>> I can't think of any software fault that could wipe out so much of a
>> disk, with no respect for partition boundaries (the dos partition in
>> the first 64MB had not been mounted).  But I also know too little
>> about
>> the internals of SD cards to understand how they fail.  Maybe some
>> internal logical-to-physical block mapping table went bad?
>>
>> Anyway, it's just one anecdotal data point, but I wouldn't be happy
>> running any plan 9 machine with an SD card as the main filesystem.
>>
>>
>>

[-- Attachment #2: piclone.txt --]
[-- Type: text/plain, Size: 5510 bytes --]

#!/bin/rc
#
# This program clones a Raspberry Pi Plan9 installation onto another storage device.
# Use a USB adapter for SD cards in order to write another SD card.
# The storage device will be used at its full capacity, in contrast to the downloadable image.
# Moreover, no additional computer is required for the installation.
#
# This program makes some assumptions that are specific to the Raspberry Pi device.
# The only parameter is the name of the destination drive.
# The program will not ask for further input.
#
# NOTES
#
# You can of course use the USB adapter for SD cards to write the downloadable image.
# The bootstrap cannot access a DOS partition embedded into a Plan9 partition (9fat).
# The sd(3) driver cannot serve volumes from a partition table: we use partfs(8) instead.
# Con(1) needs a certain number of empty lines in the input in order to read all server answers.
#

fn check {
	if( ! ~ $1 '' ) {
		echo We encountered an error and must stop here.
		echo Status: $1.
		exit 13
	}
}

if(! test $#* -eq 1) {
	echo Usage: '''piclone sdUY.Z''' creates a Raspberry9 system on sdUY.Z. 
	exit
}

disk=$1
if(! test -d /dev/$disk) {
	echo No such device: $disk.
	exit
}

# Make shure there is no disk configuration left.
echo ........ Null the disk configuration.
dd -if /dev/zero -of /dev/$disk/data -count 1024 >[1=] >[2=]
check $status

# the default MBR without boot code suffices for the Pi.
echo ........ Install MBR.
disk/mbr /dev/$disk/data >[1=] >[2=]
check $status

# We need a real DOS partition.
# The Raspberry Pi boot mechanism cannot cope with the 9FAT partition embedded in the plan9 one.
echo ........ Create DOS partition for booting.
disk/fdisk -b /dev/$disk/data >[1=] >[2=] <<EOF
a p0 0 16
t p0 FAT32
A p0
w
q
EOF
check $status

echo ........ Create a Plan9 partition with default parameters.
disk/fdisk -wa /dev/$disk/data >[1=] >[2=]
check $status

# sd(3) does not serve disk partitions: use partfs(8).
if( ! test -e /dev/$disk/dos ) {
	echo ........ Start partfs to serve partitions.
	disk/partfs -d $disk /dev/$disk/data >[1=] >[2=]
	check $status
}

echo ........ Reconfigure device.
disk/fdisk -p /dev/$disk/data >/dev/$disk/ctl >[2=]
check $status

echo ........ Plan9 partition: install MBR.
disk/mbr /dev/$disk/plan9 >[1=] >[2=]
check $status

echo ........  Plan9 partition: subdivide.
disk/prep -wb -a nvram -a fossil /dev/$disk/plan9 >[1=] >[2=]
check $status

echo ........  Plan9 partition: reconfigure device.
disk/prep -p /dev/$disk/plan9 >/dev/$disk/ctl >[2=]
check $status
echo Partitions on $disk:
cat /dev/$disk/ctl

echo ........  Format DOS partition.
disk/format -d -r2 /dev/$disk/dos >[1=] >[2=]
check $status

echo ........ Format Fossil partition.
fossil/flfmt -y /dev/$disk/fossil >[1=] >[2=]
check $status

if( ! test -e /srv/dos ){
	echo ........ Start DOS server.
	dossrv >[1=] >[2=]
	check $status
}

echo ........ Start server for old Fossil partition.
cat >/env/flproto <<EOF
srv -p fscons.old
srv fossil.old
fsys main config /dev/sdM0/fossil
fsys main open -aAVP
fsys main
EOF
fossil/fossil -c '. /env/flproto' >[1=] >[2=]
check $status

echo ........ Start server for new Fossil partition.
cat >/env/flproto <<EOF
srv -p fscons.new
srv fossil.new
fsys main config /dev/$disk/fossil
fsys main open -aAVWP
fsys main
EOF
fossil/fossil -c '. /env/flproto' #>[1=] >[2=]
check $status

echo ........ Mount old DOS partition.
mount -c /srv/dos /n/dos.old /dev/sdM0/dos >[1=] >[2=]
check $status

echo ........ Mount new DOS partition.
mount -c /srv/dos /n/dos.new /dev/$disk/dos >[1=] >[2=]
check $status

echo ........ Mount old Fossil partition.
mount -c /srv/fossil.old /n/fossil.old >[1=] >[2=]
check $status

echo ........ Mount new Fossil partition.
mount -c /srv/fossil.new /n/fossil.new >[1=] >[2=]
check $status

echo ........ Create users file on new Fossil partition.

# create default
con /srv/fscons.new >[1=] >[2=] <<EOF

create /active/adm adm sys d775
EOF
check $status

# copy
cp -gux /n/fossil.old/adm/users /n/fossil.new/adm/users
check $status

con /srv/fscons.new >[1=] >[2=] <<EOF

users -r /active/adm/users


EOF
check $status

echo ........ Copy boot files.
cp -gux /n/dos.old/* /n/dos.new >[1=] >[2=]
check $status

echo ........ Copy system: please be VERY patient.
disk/mkfs  -a -s /n/fossil.old /sys/lib/sysconfig/proto/allproto  | disk/mkext -u -v -d /n/fossil.new >[2=1]  | tee /tmp/xxx
echo ........ Status: $status.

echo ........ Unmount old DOS partition.
unmount /n/dos.old >[1=] >[2=]
check $status

echo ........ Unmount new DOS partition.
unmount /n/dos.new >[1=] >[2=]
check $status

echo ........ Unmount old Fossil partition.
unmount /n/fossil.old >[1=] >[2=]
check $status

echo ........ Stop server for old Fossil partition.
con /srv/fscons.old >[1=] >[2=] <<EOF
srv -d fossil.old
srv -d fscons.old
EOF
check $status

echo ........ Unmount new Fossil partition.
unmount /n/fossil.new >[1=] >[2=]
check $status

echo ........ Stop server for new Fossil partition.
con /srv/fscons.new >[1=] >[2=] <<EOF
srv -d fossil.new
srv -d fscons.new
EOF
check $status

echo ......... Kill fossil.
kill fossil | rc >[1=] >[2=]
rm /srv/fossil.old >[1=] >[2=]
rm /srv/fscons.old >[1=] >[2=]
rm /srv/fossil.new >[1=] >[2=]
rm /srv/fscons.new >[1=] >[2=]

echo ........ Write persistent Fossil configuration.
fossil/conf -w /dev/$disk/fossil >[1=] >[2=]  <<EOF
fsys main config
fsys main open -aAV
fsys main snaptime -a none -s 60 -t 172800
fsys main
users -r /active/adm/users
EOF
check $status

echo ........ DONE

  reply	other threads:[~2014-11-18 22:09 UTC|newest]

Thread overview: 59+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-18 13:29 Mayuresh Kathe
2014-11-18 13:53 ` dante
2014-11-18 14:11   ` Richard Miller
2014-11-18 14:28     ` dante
2014-11-27 20:57     ` Dante
2014-11-28  6:10       ` erik quanstrom
2014-11-28  6:54         ` David du Colombier
2014-11-28  8:42           ` Dante
2014-11-28  9:12             ` Mats Olsson
2014-11-28  9:18               ` Dante
2014-11-28  9:17           ` Richard Miller
2014-11-28  9:26             ` Dante
2014-11-28 13:20             ` erik quanstrom
2014-11-28 13:45               ` David du Colombier
2014-11-18 15:42   ` Kurt H Maier
2014-11-18 16:14     ` dante
2014-11-18 17:02       ` Aram Hăvărneanu
2014-11-18 20:29         ` Richard Miller
2014-11-18 21:28           ` Mats Olsson
2014-11-18 22:09             ` dante [this message]
2014-11-19  8:56               ` Mats Olsson
2014-11-26 17:16               ` Mats Olsson
2014-11-26 17:41                 ` Dante
2014-11-26 17:56                   ` Mats Olsson
2014-11-26 18:16                     ` Mats Olsson
2014-11-26 18:41                       ` Dante
2014-11-18 22:11           ` Skip Tavakkolian
2014-11-18 22:23             ` Steve Simon
2014-11-19  1:57             ` erik quanstrom
2014-11-19  5:36               ` Skip Tavakkolian
2014-11-19  5:59                 ` lucio
2014-11-19 14:36                   ` erik quanstrom
2014-11-19 15:34                     ` Aram Hăvărneanu
2014-11-20  6:02                       ` Anthony Sorace
2014-11-20 14:37                         ` erik quanstrom
2014-11-20 18:43                           ` Anthony Sorace
2014-11-21 14:34                             ` erik quanstrom
2014-11-21 14:44                               ` Anthony Sorace
2014-11-21 17:31                               ` Bakul Shah
2014-11-22 18:06                                 ` erik quanstrom
2014-11-25  6:59                                   ` Bakul Shah
2014-11-25 11:10                                     ` erik quanstrom
2014-11-25 11:14                                       ` erik quanstrom
2014-11-25 13:52                                     ` Anthony Sorace
2014-11-25 14:26                                       ` erik quanstrom
2014-11-19 14:33                 ` erik quanstrom
2014-11-19 20:05           ` Bakul Shah
2014-11-19 20:40           ` Tom Ivar Helbekkmo
2014-11-21  6:34             ` Harri Haataja
2014-11-19  2:04         ` erik quanstrom
2014-11-19  3:50           ` lucio
2014-11-19  9:40   ` Steve Simon
2014-11-19  9:50     ` dante
2014-11-19 10:18       ` Steve Simon
2014-11-19 10:27         ` dante
2014-11-19 18:55           ` Quintile
2014-11-19 10:36         ` lucio
2014-11-20  6:05           ` Anthony Sorace
2014-11-20  6:13             ` lucio

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=21f6154e232308ece1ecffbffa3ef404@posteo.de \
    --to=subscriptions@posteo.eu \
    --cc=9fans@9fans.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).