This tutorial is outdated. i made a new tutorial for rpi2 for diva distro 0.9 or for opensim 0.9:
https://fredfire1.wordpress.com/2017/01/23/diva-distro-opensimulator-on-rpi2-raspberrypi/
if you have a pi1B maybe try this old tutorial instead:
https://fredfire1.wordpress.com/2014/07/20/opensim-raspberrypi/
============================================
what i did to create the preconfigured image:
a)from the tutorial below i did steps 0-8 and steps 16*) and 17*)
b)shrunk the image to 2.5 GB (based on https://fredfire1.wordpress.com/2014/07/01/shrunk-image-raspberry-piubuntu/
)
c)zipped it to 1GB
d)uploaded it to dropbox
what you have to do to use my preconfigured image:
a) download the image, unzip it and burn it on a sd-card of at least 4 GB space
b) login and change the password for user pi with: passwd
c) change the ip address to yours
it is explained in step 7) in the tutorial below
(i recommend to use “only in your local network” so you have not to worry about security problems)
d) run sudo raspi-config and expand to full sd card, then reboot
e)now you are able to start opensim with:
cd ~/opensim-0.8.2.0/bin
mono OpenSim.exe
f)if your sim is running you can login with firestorm explained in step 9) in the tutorial
dropbox link to the image:
https://www.dropbox.com/s/x64bn0dzbqv0j8j/jessie-lite-opensim-image-7-4-2016.img.zip
used passwords in the preconfigured image:
—————
ssh login:
user=pi
password=raspberry
mysql:
user=root
password=pi
username=opensimuser
password=opensimpass
OpenSim information:
Region Name=opensimpi
Estate name=testersim
username – FirstName=Test
username – LastName=User
password=Test
============================================
This tutorial was updated on 4. july 2016
this tutorial is for the raspberrypi2:
https://www.amazon.de/Raspberry-Pi-quad-core-Cortex-A7-compatibility/dp/B00T2U7R7I/
based on:
http://www.s-config.com/opensimraspberry-pi-rasbian-hard-float-works/
https://fredfire1.wordpress.com/2014/07/20/opensim-raspberrypi/
http://opensimulator.org/wiki/0.8.1_Release
0) get latest pi-light image and burn it on sd-card
1) install software
2) setup mysql-database
3) get latest mono version
4) download and setup opensim
5) create your own libode.so and place it in the correct folder
6) create your own libopenjpeg.so and place it in the correct folder
7) setup your ip-adress of your pi
8) manually start opensim and setup
9) if your sim is running login with firestorm
next steps are optional:
10*) if the address of your server changes
11*) scripts to handle opensim
12*) security- install and setup uncomplicated firewall (ufw)
13*) usefull opensim commands
14*) backup and import inventory
15*) backup and import region
16*) clean old sourcefiles and no more used programs
17*) shred logs
18*) create and delete NPCs
19*) try Godmode
0) get latest pi-light image and burn it on sd-card
download and unzip:
cd ~
wget http://downloads.raspberrypi.org/raspbian_lite_latest -O raspbian_lite_latest.zip
unzip raspbian_lite_latest.zip
now burn it on a sd-card
1) install software
sudo apt-get update && sudo apt-get upgrade -y
#you will be asked for a root password this tutorial uses the password: “pi”
#sudo ldconfig
sudo reboot
sudo apt-get install libgdiplus git-core -y
sudo apt-get clean
sudo apt-get install mysql-server
2) setup mysql-database
mysql -u root -p
#enter password “pi”
create database opensim;use opensim;create user 'opensimuser'@'localhost' identified by 'opensimpass';grant all on opensim.* to 'opensimuser'@'localhost';
quit mysql:
quit
3) get latest mono version
add the source:
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF && sudo echo "deb http://download.mono-project.com/repo/debian wheezy main" | sudo tee /etc/apt/sources.list.d/mono-xamarin.list && sudo apt-get update
upgrade:
sudo apt-get upgrade -y
install mono-complete:
sudo apt-get install mono-complete -y
check mono:
mono --version
Mono JIT compiler version 4.4.1 #the version should be 4.x
4) download and setup opensim
cd
#wget http://opensimulator.org/dist/opensim-0.9.0.1.tar.gz
wget -qO - http://dist.opensimulator.org/older/opensim-0.8.2.0.tar.gz | tar xzf -
sudo chown pi:pi -R ~/opensim-0.8.2.0/*
4.1) enable standalone and opendynamic-pyhsics
cd ~/opensim-*/bin
cp OpenSim.ini.example OpenSim.ini
sed -i 's:; Include-Architecture = "config-include/Standalone.ini":Include-Architecture = "config-include/Standalone.ini":g' OpenSim.ini
sed -i 's:; physics = OpenDynamicsEngine:physics = OpenDynamicsEngine:g' OpenSim.ini
4.2 use MySQL as database
cd ~/opensim-*/bin/config-include
sed -i 's:Include-Storage = "config-include/storage/SQLiteStandalone.ini";:;Include-Storage = "config-include/storage/SQLiteStandalone.ini";:g' StandaloneCommon.ini
#
sed -i 's:;StorageProvider = "OpenSim.Data.MySQL.dll":StorageProvider = "OpenSim.Data.MySQL.dll":g' StandaloneCommon.ini
#
sed -i '14,17 s:;ConnectionString:ConnectionString:g' StandaloneCommon.ini
#
sed -i '14,17 s:ID=opensim;Password=\*\*\*:ID=opensimuser;Password=opensimpass:g' StandaloneCommon.ini
5) create your own libode.so and place it in the correct folder
change the config file:
cd ~/opensim-0.8.2.0/bin/ > Ode.NET.dll.config echo "<configuration>" | sudo tee -a /home/pi/opensim-0.8.2.0/bin/Ode.NET.dll.config echo " <dllmap dll=\"ode\" target=\"lib32/libode.so\" />" | sudo tee -a /home/pi/opensim-0.8.2.0/bin/Ode.NET.dll.config echo "</configuration>" | sudo tee -a /home/pi/opensim-0.8.2.0/bin/Ode.NET.dll.config
cd ~/opensim-0.8.2.0/bin/lib32/
wget http://www.s-config.com/dl/opensim/libode.so
install the tools for compilation:
sudo apt-get install automake libtool gcc -y
clone opensim-libs and run autogen.sh for ode:
cd
git clone git://opensimulator.org/git/opensim-libs
cd ~/opensim-libs/trunk/unmanaged/OpenDynamicsEngine-0.10.1
cp ./autogen.sh ../OpenDynamicsEngine-0.13.1mod/autogen.sh
cd ..
cd OpenDynamicsEngine-0.13.1mod
sudo chmod 777 autogen.sh
sh autogen.sh
run configure for ode:
cd ~/opensim-libs/trunk/unmanaged/OpenDynamicsEngine-0.13.1mod
./configure --with-trimesh=opcode --disable-asserts --enable-shared --disable-demos --without-x --disable-threading-intf
run make to compile your own libode.so:
cd ~/opensim-libs/trunk/unmanaged/OpenDynamicsEngine-0.13.1mod
#this takes long..
make
copy the generated files over:
cd ~/opensim-libs/trunk/unmanaged/OpenDynamicsEngine-0.13.1mod
cp ./ode/src/.libs/libode.so.4.1.0 ~/opensim-0.8.2.0/bin/lib32/libode.so.4.1.0
cp ./ode/src/.libs/libode.so.4 ~/opensim-0.8.2.0/bin/lib32/libode.so.4
cp ./ode/src/.libs/libode.so ~/opensim-0.8.2.0/bin/lib32/libode.so
#cd ~/opensim-0.8.2.0/bin/lib32/
#wget http://www.s-config.com/dl/opensim/libopenjpeg.so
6) create your own libopenjpeg.so and place it in the correct folder
clone the git and change a part of the makefile:
cd
git clone git://github.com/openmetaversefoundation/libopenmetaverse.git libopenmetaverse
cd ~/libopenmetaverse/openjpeg-dotnet/
sed -i 's:ARCHFLAGS=-m32:ARCHFLAGS=:g' Makefile
run make:
cd ~/libopenmetaverse/openjpeg-dotnet/
make
copy over the compiled files:
cd ~/libopenmetaverse/openjpeg-dotnet/
cp -p libopenjpeg-dotnet-2-1.5.0-dotnet-1-i686.so ~/opensim-0.8.2.0/bin/lib32/libopenjpeg.so
change the config file:
cd ~/opensim-0.8.2.0/bin/ > OpenMetaverse.dll.config echo "<configuration>" | sudo tee -a /home/pi/opensim-0.8.2.0/bin/OpenMetaverse.dll.config echo "<dllmap dll=\"openjpeg-dotnet.dll\" target=\"lib32/libopenjpeg.so\" />" | sudo tee -a /home/pi/opensim-0.8.2.0/bin/OpenMetaverse.dll.config echo "</configuration>" | sudo tee -a /home/pi/opensim-0.8.2.0/bin/OpenMetaverse.dll.config
7) setup your ip-adress of your pi
replace in the following snippet the baseurl and the publicport with your setup
then paste the snippet in the beginning of the file ~/opensim-0.8.2.0/bin/config-include/StandaloneCommon.ini
if you want to use the opensim-server only in your local network you can simply use your local ip-adress.
if you want to use your opensim-server from the internet
enable port forwarding tcp/udp in your router for your public port to your raspberrypi
setup a global url for example with no-ip
to setup a global url for your BaseURL you can use noip
nano ~/opensim-0.8.2.0/bin/config-include/StandaloneCommon.ini
[Const] PublicPort = 9000 BaseURL = http://opensimpi
run the following code to change the grid name to opensimpi and also change the grid description:
cd ~/opensim-0.8.2.0/bin/config-include/ sed -i '/GridInfoService/,/MapImageService/ s!the lost continent of hippo!Raspberry Pi OpenSim Default Load!g' StandaloneCommon.ini sed -i '/GridInfoService/,/MapImageService/ s!hippogrid!opensimpi!g' StandaloneCommon.ini
8) manually start opensim and setup
cd ~/opensim-0.8.2.0/bin
mono OpenSim.exe
Region Name: opensimpi
#everything else press just “enter” until Estate name:..
Estate name: testersim
username – FirstName: Test
username – LastName: User
password: Test
exit opensim:
shutdown
9) if your sim is running login with firestorm
(this is better explained in under the topic: “Client configuration.” in:
http://www.s-config.com/opensimraspberry-pi-rasbian-hard-float-works/
)
for login with firestorm add in gridmanager:
use the ip of your pi for example:
http://opensimpi:9000
username – FirstName: Test
username – LastName: User
password: Test
10*) if the address of your server changes
(for example if you use wifi instead of cable or other way round you might get another address in local network)
nano ~/opensim-0.8.2.0/bin/config-include/StandaloneCommon.ini
and change your new ip for example from http://opensimpi to:
http://192.168.1.12
then restart opensim
also change the grid in firestorm:
1) change gridmanager to another random grid then delete your opensimpi-grid from settings (preferences->opensim->grid manager)
2) now add the new with http://192.168.1.12:9000/
11*) scripts to handle opensim
for all code after this you must have installed screen:
sudo apt-get install screen -y
script to start opensim in background:
touch /home/pi/.startOS.sh
chmod +x /home/pi/.startOS.sh
nano /home/pi/.startOS.sh
#!/bin/bash screen -dmS opensimpi sh -c 'cd /home/pi/opensim-0.8.2.0/bin/;mono OpenSim.exe'
automatic start opensim on boot:
install screen:
sudo apt-get install screen -y
edit the crontab:
crontab -e
and paste:
@reboot sleep 10 && /usr/bin/screen -dmS opensimpi sh -c 'cd /home/pi/opensim-0.8.2.0/bin/;/usr/bin/mono OpenSim.exe'
@reboot sleep 10 && screen -dmS opensimpi sh -c 'cd /home/pi/opensim-0.8.2.0/bin/;mono OpenSim.exe'
script for shutdown opensim[shutdowns opensim that has been started in background from terminal or from boot]:
touch /home/pi/.shutdownOS.sh
chmod +x /home/pi/.shutdownOS.sh
nano /home/pi/.shutdownOS.sh
#!/bin/bash screen -S opensimpi -p 0 -X stuff 'shutdown\012' && echo waiting 10sec for opensimulator to shutdown then kill the screen-process && sleep 10 && screen -S opensimpi -X quit
script for shutdown opensim then pi:
touch /home/pi/.shutdownPi.sh
chmod +x /home/pi/.shutdownPi.sh
nano /home/pi/.shutdownPi.sh
#!/bin/bash screen -S opensimpi -p 0 -X stuff 'shutdown\012' && echo waiting 10sec for opensimulator to shutdown then shutdown pi && sleep 10 && sudo shutdown -h now
monit scripts:
12*) security- install and setup uncomplicated firewall (ufw)
based on:
https://www.digitalocean.com/community/tutorials/how-to-setup-a-firewall-with-ufw-on-an-ubuntu-and-debian-cloud-server
https://gambaru.de/blog/2012/03/20/debian-server-mit-der-unkomplizierten-firewall-ufw-absichern/
http://forums.osgrid.org/viewtopic.php?f=15&t=4020
install ufw:
sudo apt install ufw
default deny any package:
sudo ufw default deny
allow port 22 for ssh:
sudo ufw allow proto tcp from any to any port 22
ufw limit port 22 for ssh:
sudo ufw limit proto tcp from any to any port 22
allow port 9000 for opensim:
sudo ufw allow 9000/tcp
sudo ufw allow 9000/udp
enable firewall:
sudo ufw enable
get ufw status:
sudo ufw status
disable port 9000:
#sudo ufw delete allow 9000/tcp
#sudo ufw delete allow 9000/udp
disable firewall:
#sudo ufw disable
also change mysql passwords for mysql for users:
root
opensimuser
opensim user password for Test User
..
13*) usefull opensim commands
based on:
http://opensimulator.org/wiki/Server_Commands
create more users:
create user [first] [last] [passw] [RegionX] [RegionY] [Email]
– creates a new user and password
or just: create user
– and server prompts for all data
for example:
create user
Firstname:Test2
Lastname:User
password:Test2
show account information of a user (id, creation-date..):
show account Test User
show online users:
show users
disable logins:
login disable
enable logins:
login enable
restart all sims:
restart
show script infos:
scripts show
show uptime:
show uptime
create a plane terrain with high 25:
terrain fill 25
lower terrain 10 meters:
terrain lower 10
raise the terrain for 10 meters:
terrain elevate 10
save the current terrain file:
terrain save /home/pi/myterrain.raw
or:
terrain save /home/pi/myterrain.png
save current opensim.ini:
config get Groups
config set Groups Enabled true
config save /home/freddii/programs_setup/opensim/opensim-0.9.0.1/bin/OpenSim_backup.ini
load a terrain file:
cd ~/opensim-*/bin
wget http://web.archive.org/web/20080818114525/http://www.lotusbell.com:80/opensim/terrain/1x1-island.raw
terrain load 1×1-island.raw
other terrain files:
http://opensimulator.org/wiki/Free_Terrains
world terrain file:
http://opensimcreativ.de/2016/02/01/die-welt-heightmap/
14*) backup and import inventory
http://opensimulator.org/wiki/Inventory_Archives/de
http://opensimulator.org/wiki/Server_Commands
save the whole inventory to a iar file(took 4 minutes for me):
save iar Test User /* Password
it was able to find it in /home/pi/opensim-0.8.2/bin/user-inventory.iar
save only one item Testobject that is located in the /Objects folder:
save iar Test User "Objects/objectname" Password objectname.iar
copy the inventar over to another account:
load iar --merge Test2 User / PASSWORD user-inventory.iar
simply load iar files from the web to the inventory of Test User:
load iar Test User / Test http://www.outworldz.com/cgi/sculpt-save.plx?File=/Sculpts/cgi/files/IAR-Arcadia%20Bakery_3.3b.iar
load iar Test User / Test http://files.zadaroo.com/iars/furry-avatars.iar
you can find more iar files at:
http://www.outworldz.com/cgi/freesculpts.plx?q=IAR
http://www.outworldz.com/Sculpts/cgi/files/
other websites:
http://www.hypergridbusiness.com/2011/06/where-to-get-content-for-opensim/
http://opensim-edu.org/blog/freebie-websites/
15*) backup and import region
backup region:
save oar [filename]
– save the current region to an OpenSimulator archive. Default filename is region.oar.
import region:
load oar [filename]
– load an OpenSimulator archive. This entirely replaces the current region. Default filename is region.oar. See OpenSim Archives.
for example:
load oar http://www.outworldz.com/Sculpts/cgi/files/OAR-Stormhaven%20Port%20Aurora%20OAR.oar
you can get some more archives from:
http://quantumgrids.com/content-for-opensim/
http://www.outworldz.com/cgi/freesculpts.plx?q=OAR
http://myopensim.com/index.php?page=Assets&action=Category&categoryid=8&catname=OAR%20Files
if you like to convert an oar file for unity you can use:
http://www.nsl.tuis.ac.jp/xoops/modules/xpwiki/?OAR%20Converter
http://www.nsl.tuis.ac.jp/xoops/modules/xpwiki/?OARConvWin
i have also a tutorial for it at:
https://fredfire1.wordpress.com/2016/03/24/install-game-engine-unity3d-debian-64bit/
16*) clean old sourcefiles and no more used programs
sudo rm -r ~/libopenmetaverse
sudo rm -r ~/opensim-libs
sudo apt purge git-core
sudo apt-get autoremove
sudo apt-get clean
17*) shred logs
usage shred:
shred -n 3 -z -u -v filename #n=overwide n times instead of default 25, z=final overwrite with zeros, u=truncate and remove file after overwriting,v=show progress
#sudo find /var/log -type f -name "*.gz" -delete
#
shred -n 3 -z -u -v ~/opensim-0.8.2.0/bin/OpenSimConsoleHistory.txt
shred -n 3 -z -u -v ~/opensim-0.8.2.0/bin/OpenSim.log
#
shred -n 3 -z -u -v ~/.nano_history
shred -n 3 -z -u -v ~/.mysql_history
shred -n 3 -z -u -v ~/.bash_history
#
sudo shred -n 3 -z -u -v /var/log/kern.log
sudo shred -n 3 -z -u -v /var/log/mysql.log
sudo shred -n 3 -z -u -v /var/log/dpkg.log
sudo shred -n 3 -z -u -v /var/log/alternatives.log
sudo shred -n 3 -z -u -v /var/log/bootstrap.log
sudo shred -n 3 -z -u -v /var/log/daemon.log
sudo shred -n 3 -z -u -v /var/log/messages
sudo shred -n 3 -z -u -v /var/log/debug
sudo shred -n 3 -z -u -v /var/log/regen_ssh_keys.log
sudo shred -n 3 -z -u -v /var/log/syslog
sudo shred -n 3 -z -u -v /var/log/auth.log
sudo shred -n 3 -z -u -v /var/log/fontconfig.log
#
sudo shred -n 3 -z -u -v /var/log/apt/history.log
sudo shred -n 3 -z -u -v /var/log/apt/term.log
sudo shred -n 3 -z -u -v /var/log/mysql/error.log
18*) create and delete NPCs
to enable NPCs paste the following code into the beginning of the file StandaloneCommon.ini:
nano ~/opensim-0.*/bin/config-include/StandaloneCommon.ini
[XEngine] Enabled = true ;;Allow the use of os* functions (some are dangerous) AllowOSFunctions = true OSFunctionThreatLevel = Severe [NPC] Enabled = true
shutdown your opensim and start it again.
now you can use lsl scripts with npc code.
lsl script to create npcs:
list bots = ["barkeeper", "slave", "monkey"]; default { touch_start(integer number) { vector npcPos = llGetPos() + <1,0,0>; osAgentSaveAppearance(llDetectedKey(0), "appearance"); integer x; integer length = llGetListLength(bots); key npc; for (x = 0; x < length; x++) { npc = osNpcCreate(llList2String(bots, x), "Resident", npcPos, "appearance"); } } }
lsl script to remove all npcs:
default { touch_start(integer number) { list avatars = llList2ListStrided(osGetAvatarList(), 0, -1, 3); integer i; llSay(0,"NPC Removal: No avatars will be harmed or removed in this process!"); for (i=0; i<llGetListLength(avatars); i++) { string target = llList2String(avatars, i); osNpcRemove(target); llSay(0,"NPC Removal: Target "+target); } } }
other NPC scripts:
http://opensimulator.org/wiki/User:Fritigern/Scripts#NPC_stuff
https://github.com/Outworldz/LSL-Scripts/tree/master/All%20In%20One%20NPC%20Recorder%20and%20Player/All%20In%20One%20NPC%20Recorder%20and%20Player/Object
https://github.com/opensimworld/active-npcs/blob/master/README.md
http://www.outworldz.com/Opensim/posts/NPC/
http://www.outworldz.com/cgi/freescripts.plx?ID=27
http://www.outworldz.com/cgi/freescripts.plx?ID=1004
http://was.fm/opensim/npc/wandering
cindy npc iar:
https://blog.inf.ed.ac.uk/atate/2016/09/15/ferds-npc-dog-avatar-for-opensim/
https://dl.dropboxusercontent.com/u/31305726/Cindy.iar
19*) try Godmode
go into godmode with Test User (firestorm):
Ctrl + Alt + D (advanced)
Ctrl + Alt + Q (developer)
Ctrl + Alt + G (request admin status)
Ctrl + Alt + Shift + G (leave admin status)
overview over outworldz site:
http://www.outworldz.com/SecondLife/SiteMap/
other opensim scripts:
http://forums.osgrid.org/viewtopic.php?f=5&t=2233
http://quantumgrids.com/script-library/
opensim lsl functions:
http://opensimulator.org/wiki/Category:OSSL_Functions
to get grid info simply add at the end:
get_grid_info or json_grid_info
convert pictures with imagemagic:
gaussian 12x12 ~ blur 0x4
http://www.imagemagick.org/Usage/blur/
mogrify -colorspace Gray ./*
find . -name "*.png" -exec convert "{}" -alpha off "{}" \;
find . -name "*.png" -exec convert "{}" -resize 256x256 "{}" \;
find . -name "*.png" -exec convert "{}" -blur 0x4 "{}" \;
find . -name "*.png" -exec convert "{}" -brightness-contrast 0,-70 "{}" \;
find . -name "*.png" -exec convert "{}" -brightness-contrast -35,0 "{}" \;
Do you have an ISO image of this you can share?
I created an image of my tutorial.
the dropbox link for jessie-lite-opensim-image-7-4-2016.img.zip is in the beginning of the tutorial.