https://wiki.openrobotino.org/api.php?action=feedcontributions&user=Verbeek&feedformat=atomRobotinoWiki - User contributions [en]2024-03-29T06:45:07ZUser contributionsMediaWiki 1.32.0https://wiki.openrobotino.org/index.php?title=Python&diff=4698Python2024-03-11T16:18:05Z<p>Verbeek: </p>
<hr />
<div>==Introduction==<br />
{|class="wikitable" cellpadding="20" vertical-align="top"<br />
|-<br />
|[[Image:Robotino_python_64.png]]<br />
|This page is about programming Robotino using Python. This applies to OS images starting from version 4, because Python makes use of the REST-API server running on Robotino. This also works with Robotino SIM Professional starting from version 1.5.0.<br />
|}<br />
<br />
==cricle example==<br />
<pre><br />
import requests <br />
import sys<br />
import json<br />
import time<br />
import math<br />
import signal<br />
<br />
ROBOTINOIP = "192.168.1.180:13080"<br />
#ROBOTINOIP = "192.168.1.223"<br />
PARAMS = {'sid':'example_circle'}<br />
run = True<br />
<br />
def signal_handler(sig, frame):<br />
global run<br />
print('You pressed Ctrl+C!')<br />
run = False<br />
<br />
def set_vel(vel):<br />
OMNIDRIVE_URL = "http://" + ROBOTINOIP + "/data/omnidrive"<br />
r = requests.post(url = OMNIDRIVE_URL, params = PARAMS, data = json.dumps(vel) )<br />
if r.status_code != requests.codes.ok:<br />
#print("Error: post to %s with params %s failed", OMNIDRIVE_URL, PARAMS)<br />
raise RuntimeError("Error: post to %s with params %s failed", OMNIDRIVE_URL, PARAMS)<br />
<br />
def bumper():<br />
BUMPER_URL = "http://" + ROBOTINOIP + "/data/bumper"<br />
r = requests.get(url = BUMPER_URL, params = PARAMS)<br />
if r.status_code == requests.codes.ok:<br />
data = r.json()<br />
return data["value"]<br />
else:<br />
raise RuntimeError("Error: get from %s with params %s failed", BUMPER_URL, PARAMS)<br />
<br />
def distances():<br />
DISTANCES_URL = "http://" + ROBOTINOIP + "/data/distancesensorarray"<br />
r = requests.get(url = DISTANCES_URL, params = PARAMS)<br />
if r.status_code == requests.codes.ok:<br />
data = r.json()<br />
return data<br />
else:<br />
raise RuntimeError("Error: get from %s with params %s failed", DISTANCES_URL, PARAMS)<br />
<br />
#rotate tuple vec by deg degrees and return the rotated vector as a list<br />
def rotate( vec, deg ):<br />
rad = 2 * math.pi / 360 * deg;<br />
<br />
out = [0,0];<br />
<br />
out[0] = ( math.cos( rad ) * vec[0] - math.sin( rad ) * vec[1] );<br />
out[1] = ( math.sin( rad ) * vec[0] + math.cos( rad ) * vec[1] );<br />
<br />
return out;<br />
<br />
def main():<br />
signal.signal(signal.SIGINT, signal_handler)<br />
<br />
try:<br />
startVector = (0.2, 0.0);<br />
a = 0;<br />
msecsElapsed = 0;<br />
vec = [0,0,0];<br />
<br />
while False == bumper() and True == run:<br />
dir = rotate( startVector, a );<br />
a = 360.0 * msecsElapsed / 10000;<br />
<br />
vec[0] = dir[0];<br />
vec[1] = dir[1];<br />
<br />
set_vel(vec);<br />
<br />
time.sleep(0.05)<br />
msecsElapsed += 50;<br />
<br />
set_vel([0,0,0])<br />
<br />
except Exception as e:<br />
print(e)<br />
return 1<br />
<br />
return 0<br />
<br />
if __name__ == "__main__":<br />
main()<br />
</pre></div>Verbeekhttps://wiki.openrobotino.org/index.php?title=Ubuntu_20_04_modifications&diff=4697Ubuntu 20 04 modifications2024-03-06T10:52:10Z<p>Verbeek: </p>
<hr />
<div>Minimum Ubuntu Desktop install<br />
<br />
<pre><br />
sudo su<br />
<br />
passwd<br />
dorp6<br />
<br />
apt install openssh-server vim net-tools<br />
<br />
apt purge snapd<br />
<br />
vim /etc/ssh/sshd_config<br />
PermitRootLogin yes<br />
systemctl restart ssh<br />
<br />
vim /etc/default/grub<br />
GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=0 biosdevname=0 i8042.noaux=1"<br />
GRUB_CMDLINE_LINUX_DEFAULT="noresume"<br />
update-grub<br />
</pre><br />
<br />
<pre><br />
cat << EOF > /root/remove_old_kernels.sh<br />
#!/bin/bash<br />
dpkg -l 'linux-[ihs]*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\([-0-9]*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | tee zu_entfernende_Kernel<br />
cat zu_entfernende_Kernel | xargs sudo apt-get -y purge<br />
rm zu_entfernende_Kernel<br />
EOF<br />
chmod +x /root/remove_old_kernels.sh<br />
</pre><br />
<br />
<pre><br />
e2fsck -f /dev/sda1<br />
tune2fs -U f6fec0c6-bc88-46d3-b125-e450709f1956 /dev/sda1<br />
<br />
replace UUID by f6fec0c6-bc88-46d3-b125-e450709f1956 in /boot/grub/grub.cfg<br />
<br />
echo "RESUME=none" > /etc/initramfs-tools/conf.d/resume<br />
<br />
wget -qO - http://packages.openrobotino.org/keyFile | sudo apt-key add -<br />
echo "deb http://packages2.openrobotino.org focal main" > /etc/apt/sources.list.d/openrobotino.list<br />
<br />
apt install vino<br />
<br />
**** run this as user robotino !!!<br />
gsettings set org.gnome.Vino require-encryption false<br />
<br />
apt install qdirstat gdebi<br />
<br />
sed -i -e 's/enabled=1/enabled=0/g' /etc/default/apport<br />
<br />
apt-get remove unattended-upgrades<br />
apt-get remove update-notifier<br />
apt remove systemd-oomd<br />
</pre><br />
<br />
==cleandist==<br />
<pre><br />
cat << EOFXX > /root/cleandist.sh<br />
#!/bin/bash<br />
<br />
sed -i "/^lasertype=/c\lasertype=fromRGBD" /etc/robotino/smartsoft_slave.conf<br />
sed -i "/^cameratype=/c\cameratype=realsense" /etc/robotino/smartsoft_slave.conf<br />
sed -i "/^RobotinoIP=/c\RobotinoIP=192.168.0.1" /etc/robotino/smartsoft_slave.conf<br />
sed -i "/^SignalDOUT=/c\SignalDOUT=false" /etc/robotino/smartsoft_slave.conf<br />
<br />
rm -Rf /var/log/*<br />
apt-get clean<br />
<br />
rm -Rf /home/robotino/.cache<br />
rm /root/*.deb<br />
<br />
history -c<br />
rm /home/robotino/.bash_history<br />
<br />
rm /root/.ssh/authorized_keys<br />
rm /root/.ssh/known_hosts<br />
<br />
rm -Rf /opt/smartsoft/data_master/maps<br />
rm -Rf /opt/smartsoft/data/maps<br />
<br />
rm -f /etc/NetworkManager/system-connections/*<br />
<br />
cat << EOF > /etc/NetworkManager/system-connections/eth0<br />
[connection]<br />
id=eth0<br />
uuid=03d1fb6f-efcf-3f57-85e1-85b9cdb9ab9d<br />
type=ethernet<br />
autoconnect-priority=-999<br />
interface-name=eth0<br />
permissions=<br />
secondaries=<br />
timestamp=1547803650<br />
<br />
[ethernet]<br />
duplex=full<br />
mac-address=<br />
mac-address-blacklist=<br />
<br />
[ipv6]<br />
addr-gen-mode=stable-privacy<br />
dns-search=<br />
method=auto<br />
<br />
[ipv4]<br />
method=auto<br />
address1=<br />
dns=<br />
dns-search=<br />
EOF<br />
<br />
chmod 600 /etc/NetworkManager/system-connections/eth0<br />
<br />
cat << EOF > /etc/NetworkManager/system-connections/eth1<br />
[connection]<br />
id=eth1<br />
uuid=a9c22f98-0184-3d0b-ae3d-4efca5abbad6<br />
type=ethernet<br />
autoconnect-priority=-999<br />
interface-name=eth1<br />
permissions=<br />
<br />
[ethernet]<br />
mac-address-blacklist=<br />
<br />
[ipv4]<br />
address1=192.168.0.1/24<br />
dns-search=<br />
method=manual<br />
<br />
[ipv6]<br />
addr-gen-mode=stable-privacy<br />
dns-search=<br />
method=auto<br />
EOF<br />
<br />
chmod 600 /etc/NetworkManager/system-connections/eth1<br />
<br />
EOFXX<br />
chmod +x /root/cleandist.sh<br />
</pre><br />
<br />
==gcc==<br />
Wenn kein gcc installiert ist<br />
<pre><br />
apt install gcc-7 g++-7<br />
</pre><br />
<br />
Wenn gcc-9 installiert ist:<br />
<pre><br />
update-alternatives --remove-all gcc <br />
update-alternatives --remove-all g++<br />
<br />
apt install gcc-7 g++-7 gcc-9 g++-9<br />
<br />
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 10<br />
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 20<br />
<br />
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 10<br />
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 20<br />
<br />
sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc 30<br />
sudo update-alternatives --set cc /usr/bin/gcc<br />
<br />
sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++ 30<br />
sudo update-alternatives --set c++ /usr/bin/g++<br />
</pre><br />
<br />
<pre><br />
update-alternatives --config gcc<br />
update-alternatives --config g++<br />
</pre><br />
<br />
==Realsense==<br />
<pre><br />
sudo apt-key adv --keyserver keys.gnupg.net --recv-key C8B3A55A6F3EFCDE || sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key C8B3A55A6F3EFCDE<br />
sudo add-apt-repository "deb http://realsense-hw-public.s3.amazonaws.com/Debian/apt-repo bionic main" -u<br />
<br />
apt install librealsense2=2.38.1-0~realsense0.3378<br />
apt-mark hold librealsense2<br />
<br />
optinal<br />
<br />
sudo apt-get install librealsense2-dbg<br />
</pre><br />
<br />
==MRPT==<br />
<pre><br />
add-apt-repository ppa:joseluisblancoc/mrpt-stable<br />
apt install libmrpt-dev<br />
(optional) apt install mrpt-apps<br />
</pre><br />
<br />
==Change Lid Close Action==<br />
<pre><br />
echo "HandleLidSwitch=ignore" >> /etc/systemd/logind.conf<br />
systemctl restart systemd-logind.service<br />
</pre><br />
<br />
==Journal gateway==<br />
<pre><br />
apt-get install systemd-journal-remote<br />
systemctl enable systemd-journal-gatewayd.service<br />
</pre><br />
<br />
==/etc/systemd/journald.conf==<br />
<pre><br />
SystemMaxUse=100M<br />
</pre><br />
<br />
==COBOTTA==<br />
<pre><br />
apt install python3-pip python3-psycopg2<br />
python3 -m pip install flask flask_cors<br />
</pre><br />
<br />
==Node-RED==<br />
<pre><br />
apt update<br />
apt install nodejs<br />
apt install npm<br />
npm install –g --unsafe-perm node-red<br />
</pre><br />
<br />
'''Node-RED Pakete'''<br />
<pre><br />
npm install -g node-red-dashboard<br />
npm install -g --unsafe-perm node-red-contrib-iiot-opcua<br />
<br />
Zugriffsrechte für Zertifikate anpassen:<br />
chown -R robotino:robotino /usr/local/lib/node_modules/node-red-contrib-iiot-opcua<br />
</pre><br />
<br />
<br />
==DHCLIENT==<br />
timeout time ;<br />
<br />
The timeout statement determines the amount of time that must pass between the time that the client begins to try to determine its address and the time that it decides that it's not going to be able to contact a server. By default, this timeout is sixty seconds. After the timeout has passed, if there are any static leases defined in the configuration file, or any leases remaining in the lease database that have not yet expired, the client will loop through these leases attempting to validate them, and if it finds one that appears to be valid, it will use that lease's address. If there are no valid static leases or unexpired leases in the lease database, the client will restart the protocol after the defined retry interval. <br />
<br />
retry time;<br />
<br />
The retry statement determines the time that must pass after the client has determined that there is no DHCP server present before it tries again to contact a DHCP server. By default, this is five minutes. <br />
<br />
<pre><br />
timeout 10;<br />
retry 5;<br />
</pre><br />
<br />
==plymouth==<br />
<pre><br />
apt remove plymouth<br />
</pre></div>Verbeekhttps://wiki.openrobotino.org/index.php?title=Robotino3_usb_restore&diff=4696Robotino3 usb restore2024-02-28T07:53:05Z<p>Verbeek: </p>
<hr />
<div>==Introduction==<br />
{|cellspacing="20" cellpadding="10"<br />
|- style="vertical-align:top"<br />
|[[Image:USB-stick_100.png]]<br />
|Robotino 3 has a SSD that stores the operating system. A bootable USB stick is used to<br />
*initially install the Robotino OS to a new SSD<br />
*overwrite the OS on a SSD already in use.<br />
! style="text-align:left; width:20em; background-color:#dddddd"|<br />
=== Package links ===<br />
[[downloads#Robotino3_images|Robotino3 images]]<br />
<br />
[[downloads#Robotino4_images|Robotino4 images]]<br />
|}<br />
<br />
==Create a bootable USB-Stick==<br />
'''If you are using the USB-stick that shipped with Robotino you can skip to step number 6, else follow the instructions below.'''<br />
<br />
# Download the Robotino [https://doc.openrobotino.org/download/tinycore/CoreCustom_20211029.iso custom image].<br />
# Take a USB-Stick and format it (quick format will do)<br />
# Use [https://unetbootin.github.io/ UNetbootin] to install this custom image to the USB stick.<br />
# Download a [[Robotino3_images|Robotino3 image]] or a [[Robotino4_images|Robotino4 image]] and it's md5 file. With Firefox you need to right-click the file and choose ''save link''.<br />
# Check the integrity of the image using [http://www.withopf.com/tools/md5/ md5]. Run ''md5 -Check:imagefilename.fsa.md5''.<br />
# Copy the image files (.fsa,.f01,...) into the /images/ directory of your USB-stick. '''Note: if images folder is missing, copy to boot folder.'''<br />
# Attach monitor and keyboard to your Robotino.<br />
# Plug the USB stick into any of Robotino's USB port.<br />
# Please do not continue without plugging in Robotino to it's power supply.<br />
# Power on Robotino and hit the '''F7''' (for Robotino Professional with Core i5), '''F11''' (for Robotino Basic with Atom) as long as you can see the BIOS startup screen.<br />
# Select your USB stick from the list (not the UEFI entry).<br />
# Select Microcore from the list - this will start the automatic updater.<br />
# After booting into tinycore type restore.sh and press Enter to start the restore process.</div>Verbeekhttps://wiki.openrobotino.org/index.php?title=Main_Page&diff=4695Main Page2024-02-27T14:08:30Z<p>Verbeek: /* Preview */</p>
<hr />
<div>__NOTOC__<br />
{| class="wikitable"<br />
|-<br />
! Welcome to Robotino Wiki<br />
|-<br />
| '''Robotino''' is a mobile robot system from [http://www.festo-didactic.com Festo Didactic]. Robotino provides all the sensors, actuators and software interfaces you would expect from a modern state of the art mobile robot system. An easy to use [[Rest_api|REST-API]](requires OS V4 image) and a [[API2|C/C++ library]] let you access all sensors and actors of Robotino in a network transparent manner.<br />
<br />
There is also support for [[Smartsoft|SmartSoft]] and the Robot Operating System ([http://www.ros.org/wiki/ ROS]).<br />
<br />
<div align="center"><br />
<span style="white-space:nowrap;">[[Image:Download_32.png|link=Downloads]] '''[[Downloads]]'''</span> &nbsp;&nbsp;<br />
<span style="white-space:nowrap;">[[Image:Forum_32.png|link=http://forum.openrobotino.org]] '''[http://forum.openrobotino.org Forum]'''</span> &nbsp;&nbsp;<br />
<span style="white-space:nowrap;">[[Image:Omniwheel_32.png|link=http://roboparts.de]] '''[http://roboparts.de Robotino accessories]'''</span><br />
</div><br />
|}<br />
<br />
==Preview==<br />
For the best experience using our latest Robotino V4, we suggest using the following bundle:<br />
{| border="1"<br />
!Component<br />
!Version<br />
!Directory<br />
|-<br />
|[[Robotino3_images|Robotino OS]]<br />
|4.20.10<br />
|[https://doc.openrobotino.org/download/tinycore/robotino4image/ download fsa+f01]<br />
|[https://wiki.openrobotino.org/index.php?title=Robotino3_usb_restore Updated USB Image required]<br />
|-<br />
|[https://ip.festo-didactic.com/InfoPortal/Robotino/Software/Programming/EN/RobotinoView.html Robotino View]<br />
|4.4.4<br />
|[http://packages.openrobotino.org/windows/robview/ download]<br />
|-<br />
|Robotino Factory<br />
|2.5.10<br />
|[http://packages.openrobotino.org/windows/robfactory/ download]<br />
|}<br />
Last updated on 06.10.2023<br />
<br />
==Software==<br />
{| class="wikitable" cellspacing="0" cellpadding="0"<br />
|-<br />
| [[Image:Robotino_coding_icon_32.png|link=cpp]] <span style="white-space:nowrap;"><br/>'''[[coding|Programming]]'''</span><br />
| [[Image:Robotino_smartsoft_icon_32.png|link=Smartsoft]] <span style="white-space:nowrap;"><br/>'''[[Smartsoft|SmartSoft - SmartMDSD]]'''</span><br />
|-<br />
| [[Image:Robotino_labview_icon_32.png|link=labview]] <span style="white-space:nowrap;"><br/>'''[[labview|LabVIEW programming]]'''</span><br />
| [[Image:Robotino_matlab_icon_32.png|link=matlab]] <span style="white-space:nowrap;"><br/>'''[[matlab_overview|MATLAB programming]]'''</span><br />
|-<br />
| [[Image:Robotino_rest_icon_32.png|link=rest_api]] <span style="white-space:nowrap;"><br/>'''[[rest_api|REST-API]]'''</span><br />
| [[Image:Robotino_ros_icon_32.png|link=ROS]] <span style="white-space:nowrap;"><br/>'''[[ROS|Robot Operating System]]'''</span><br />
|-<br />
| <span style="white-space:nowrap;">[[Image:cfcard_32.png|link=Robotino OS]] <span style="white-space:nowrap;"><br/>'''[[Robotino OS]]'''</span><br />
| [[Image:Robotino_sim_icon_32.png|link=Simulator]] <span style="white-space:nowrap;"><br/>'''[[Simulator]]'''</span><br />
|-<br />
| <span style="white-space:nowrap;">[[Image:Robotino_python_32.png|link=python]] <span style="white-space:nowrap;"><br/>'''[[python|Python programming]]'''</span><br />
|<br />
|}<br />
<br />
==Hardware==<br />
{| class="wikitable" cellspacing="0" cellpadding="0"<br />
|-<br />
| [[Image:robotino_v4_32.png|link=robotino4]] [[Robotino4]]<br />
| [[Image:robotino_v3_32.png|link=robotino3]] [[Robotino3]]<br />
|-<br />
| [[Image:robotino_v2_32.png|link=robotino2]] [[Robotino2]]<br />
| [[Image:joystick_32.png|link=joystick]] [[joystick|Joystick]]<br />
|-<br />
| [[Image:urg_32.png|link=rangefinder]] [[rangefinder|Laser rangefinder]]<br />
| [[Image:robotino_raspberry_32.png|link=Robotino Raspberry]] [[Robotino Raspberry]]<br />
|-<br />
| [[Image:history_32.png|link=Robotino_history]] [[Robotino history|History]]<br />
|<br />
|}<br />
<br />
==Projects==<br />
{| class="wikitable" cellspacing="0" cellpadding="0"<br />
|-<br />
|<br />
* [[Image:LL_logowiki32.png|link=http://ll.robocup.org/]][http://ll.robocup.org RoboCup Industrial: Logistics League]<br />
|}<br />
<br />
==News==<br />
{| class="wikitable" cellspacing="0" cellpadding="0"<br />
|-<br />
| 2018/02/02 '''Intralogistics Scenario: Demonstrating Flexible Commissioning with a Heterogenous Robot Fleet'''<br />
<youtube>Zz66I4NVtNU</youtube><br />
|-<br />
| 2016/02/22 '''Robotino® 3 and SmartSoft'''<br />
Robotino 3 - Fleet Coordination, with Festo Modular Production System<br />
<youtube>KH7FJnNO3z4</youtube><br />
|-<br />
| Towards a Robot Fleet for Intra-Logistic Tasks: Combining Free Robot Navigation with Multi-Robot Coordination at Bottlenecks <youtube>fOQToBurp_I</youtube><br />
|-<br />
| [[News|More news]]<br />
|}</div>Verbeekhttps://wiki.openrobotino.org/index.php?title=SmartRobotinoBatteryChargerDocking4&diff=4680SmartRobotinoBatteryChargerDocking42022-07-18T12:47:14Z<p>Verbeek: /* Docking coordinate system */</p>
<hr />
<div>==Docking coordinate system==<br />
Marker and station detection is performed in laser frame (red coordinate system). In the example below the station position is at x=1.5 and y=0.8. The station normal vector has a rotation of -178° in the laser frame. A good strategy to dock could be<br />
<br />
*Rotate so that the station is at (0,y)<br />
*Drive in y direction so that station normal vector is aligned with x axis<br />
*drive in x direction until distance to station is smaller than d<br />
<br />
[[Image:Irdocking-coords.png]]<br />
<br />
==Python interface==<br />
<pre><br />
os << " get_bumper - return an integer with the bumper state. 0 not pressed. 1 pressed." << std::endl;<br />
os << " get_extpower - return an integer with the ext_power state. 0 not connected. 1 connected." << std::endl;<br />
os << " get_pos - return (x,y,phi)" << std::endl;<br />
os << " get_dist - return (d0,...,d8) distance sensor readings in meters" << std::endl;<br />
os << " set_vel(vx, vy, omega) - Set velocity in m/s and rad/s." << std::endl;<br />
os << " iniData - Get ini file parameters as json encoded string." << std::endl;<br />
os << " get_numMarkers - Get the number of markers found by the laser scanner. Return type int." << std::endl;<br />
os << " get_marker(i) - Get x,y coord of marker at index i. Return type (float,float)." << std::endl;<br />
os << " get_markerNumScanPoints(i) - Get num scan points of marker at index i. Return type int." << std::endl;<br />
os << " get_numStations - Get the number of stations found by the laser scanner. Return type int." << std::endl;<br />
os << " get_stationLeftMarker - Get x,y coord of first station. Return type (float,float)." << std::endl;<br />
os << " get_stationRightMarker - Get x,y coord of right marker of first station. Return type (float,float)." << std::endl;<br />
os << " get_stationLeftMarker - Get x,y coord of left marker of first station. Return type (float,float)." << std::endl;<br />
os << " get_stationPos - Get x,y coord of first station. Return type (float,float)." << std::endl;<br />
os << " get_stationNormal - Get x,y coord of normal verctor of first station. Return type (float,float)." << std::endl;<br />
os << " get_stationWidth - Get distance between left and right marker of first station. Return type float." << std::endl;<br />
os << std::endl;<br />
os << "return code: 0 continue, 1 error, 2 finished docking" << std::endl;<br />
</pre></div>Verbeekhttps://wiki.openrobotino.org/index.php?title=SmartRobotinoBatteryChargerDocking4&diff=4679SmartRobotinoBatteryChargerDocking42022-07-18T12:41:49Z<p>Verbeek: </p>
<hr />
<div>==Docking coordinate system==<br />
[[Image:Irdocking-coords.png]]<br />
<br />
==Python interface==<br />
<pre><br />
os << " get_bumper - return an integer with the bumper state. 0 not pressed. 1 pressed." << std::endl;<br />
os << " get_extpower - return an integer with the ext_power state. 0 not connected. 1 connected." << std::endl;<br />
os << " get_pos - return (x,y,phi)" << std::endl;<br />
os << " get_dist - return (d0,...,d8) distance sensor readings in meters" << std::endl;<br />
os << " set_vel(vx, vy, omega) - Set velocity in m/s and rad/s." << std::endl;<br />
os << " iniData - Get ini file parameters as json encoded string." << std::endl;<br />
os << " get_numMarkers - Get the number of markers found by the laser scanner. Return type int." << std::endl;<br />
os << " get_marker(i) - Get x,y coord of marker at index i. Return type (float,float)." << std::endl;<br />
os << " get_markerNumScanPoints(i) - Get num scan points of marker at index i. Return type int." << std::endl;<br />
os << " get_numStations - Get the number of stations found by the laser scanner. Return type int." << std::endl;<br />
os << " get_stationLeftMarker - Get x,y coord of first station. Return type (float,float)." << std::endl;<br />
os << " get_stationRightMarker - Get x,y coord of right marker of first station. Return type (float,float)." << std::endl;<br />
os << " get_stationLeftMarker - Get x,y coord of left marker of first station. Return type (float,float)." << std::endl;<br />
os << " get_stationPos - Get x,y coord of first station. Return type (float,float)." << std::endl;<br />
os << " get_stationNormal - Get x,y coord of normal verctor of first station. Return type (float,float)." << std::endl;<br />
os << " get_stationWidth - Get distance between left and right marker of first station. Return type float." << std::endl;<br />
os << std::endl;<br />
os << "return code: 0 continue, 1 error, 2 finished docking" << std::endl;<br />
</pre></div>Verbeekhttps://wiki.openrobotino.org/index.php?title=SmartRobotinoBatteryChargerDocking4&diff=4678SmartRobotinoBatteryChargerDocking42022-07-18T12:41:35Z<p>Verbeek: </p>
<hr />
<div>==Docking coordinate system==<br />
[Image:irdocking-coords.png]<br />
<br />
==Python interface==<br />
<pre><br />
os << " get_bumper - return an integer with the bumper state. 0 not pressed. 1 pressed." << std::endl;<br />
os << " get_extpower - return an integer with the ext_power state. 0 not connected. 1 connected." << std::endl;<br />
os << " get_pos - return (x,y,phi)" << std::endl;<br />
os << " get_dist - return (d0,...,d8) distance sensor readings in meters" << std::endl;<br />
os << " set_vel(vx, vy, omega) - Set velocity in m/s and rad/s." << std::endl;<br />
os << " iniData - Get ini file parameters as json encoded string." << std::endl;<br />
os << " get_numMarkers - Get the number of markers found by the laser scanner. Return type int." << std::endl;<br />
os << " get_marker(i) - Get x,y coord of marker at index i. Return type (float,float)." << std::endl;<br />
os << " get_markerNumScanPoints(i) - Get num scan points of marker at index i. Return type int." << std::endl;<br />
os << " get_numStations - Get the number of stations found by the laser scanner. Return type int." << std::endl;<br />
os << " get_stationLeftMarker - Get x,y coord of first station. Return type (float,float)." << std::endl;<br />
os << " get_stationRightMarker - Get x,y coord of right marker of first station. Return type (float,float)." << std::endl;<br />
os << " get_stationLeftMarker - Get x,y coord of left marker of first station. Return type (float,float)." << std::endl;<br />
os << " get_stationPos - Get x,y coord of first station. Return type (float,float)." << std::endl;<br />
os << " get_stationNormal - Get x,y coord of normal verctor of first station. Return type (float,float)." << std::endl;<br />
os << " get_stationWidth - Get distance between left and right marker of first station. Return type float." << std::endl;<br />
os << std::endl;<br />
os << "return code: 0 continue, 1 error, 2 finished docking" << std::endl;<br />
</pre></div>Verbeekhttps://wiki.openrobotino.org/index.php?title=File:Irdocking-coords.png&diff=4677File:Irdocking-coords.png2022-07-18T12:40:21Z<p>Verbeek: BatteryCharger4 docking coordinate system</p>
<hr />
<div>== Summary ==<br />
BatteryCharger4 docking coordinate system</div>Verbeekhttps://wiki.openrobotino.org/index.php?title=SmartRobotinoBatteryChargerDocking4&diff=4676SmartRobotinoBatteryChargerDocking42022-07-18T12:39:41Z<p>Verbeek: </p>
<hr />
<div>==Docking coordinate system==<br />
[[Image:irdocking-coords.png]]<br />
<br />
==Python interface==<br />
<pre><br />
os << " get_bumper - return an integer with the bumper state. 0 not pressed. 1 pressed." << std::endl;<br />
os << " get_extpower - return an integer with the ext_power state. 0 not connected. 1 connected." << std::endl;<br />
os << " get_pos - return (x,y,phi)" << std::endl;<br />
os << " get_dist - return (d0,...,d8) distance sensor readings in meters" << std::endl;<br />
os << " set_vel(vx, vy, omega) - Set velocity in m/s and rad/s." << std::endl;<br />
os << " iniData - Get ini file parameters as json encoded string." << std::endl;<br />
os << " get_numMarkers - Get the number of markers found by the laser scanner. Return type int." << std::endl;<br />
os << " get_marker(i) - Get x,y coord of marker at index i. Return type (float,float)." << std::endl;<br />
os << " get_markerNumScanPoints(i) - Get num scan points of marker at index i. Return type int." << std::endl;<br />
os << " get_numStations - Get the number of stations found by the laser scanner. Return type int." << std::endl;<br />
os << " get_stationLeftMarker - Get x,y coord of first station. Return type (float,float)." << std::endl;<br />
os << " get_stationRightMarker - Get x,y coord of right marker of first station. Return type (float,float)." << std::endl;<br />
os << " get_stationLeftMarker - Get x,y coord of left marker of first station. Return type (float,float)." << std::endl;<br />
os << " get_stationPos - Get x,y coord of first station. Return type (float,float)." << std::endl;<br />
os << " get_stationNormal - Get x,y coord of normal verctor of first station. Return type (float,float)." << std::endl;<br />
os << " get_stationWidth - Get distance between left and right marker of first station. Return type float." << std::endl;<br />
os << std::endl;<br />
os << "return code: 0 continue, 1 error, 2 finished docking" << std::endl;<br />
</pre></div>Verbeekhttps://wiki.openrobotino.org/index.php?title=SmartRobotinoBatteryChargerDocking4&diff=4675SmartRobotinoBatteryChargerDocking42022-07-18T12:39:11Z<p>Verbeek: /* Docking coordinate system */</p>
<hr />
<div>==Docking coordinate system==<br />
[[Image::irdocking-coords.png]]<br />
<br />
==Python interface==<br />
<pre><br />
os << " get_bumper - return an integer with the bumper state. 0 not pressed. 1 pressed." << std::endl;<br />
os << " get_extpower - return an integer with the ext_power state. 0 not connected. 1 connected." << std::endl;<br />
os << " get_pos - return (x,y,phi)" << std::endl;<br />
os << " get_dist - return (d0,...,d8) distance sensor readings in meters" << std::endl;<br />
os << " set_vel(vx, vy, omega) - Set velocity in m/s and rad/s." << std::endl;<br />
os << " iniData - Get ini file parameters as json encoded string." << std::endl;<br />
os << " get_numMarkers - Get the number of markers found by the laser scanner. Return type int." << std::endl;<br />
os << " get_marker(i) - Get x,y coord of marker at index i. Return type (float,float)." << std::endl;<br />
os << " get_markerNumScanPoints(i) - Get num scan points of marker at index i. Return type int." << std::endl;<br />
os << " get_numStations - Get the number of stations found by the laser scanner. Return type int." << std::endl;<br />
os << " get_stationLeftMarker - Get x,y coord of first station. Return type (float,float)." << std::endl;<br />
os << " get_stationRightMarker - Get x,y coord of right marker of first station. Return type (float,float)." << std::endl;<br />
os << " get_stationLeftMarker - Get x,y coord of left marker of first station. Return type (float,float)." << std::endl;<br />
os << " get_stationPos - Get x,y coord of first station. Return type (float,float)." << std::endl;<br />
os << " get_stationNormal - Get x,y coord of normal verctor of first station. Return type (float,float)." << std::endl;<br />
os << " get_stationWidth - Get distance between left and right marker of first station. Return type float." << std::endl;<br />
os << std::endl;<br />
os << "return code: 0 continue, 1 error, 2 finished docking" << std::endl;<br />
</pre></div>Verbeekhttps://wiki.openrobotino.org/index.php?title=SmartRobotinoBatteryChargerDocking4&diff=4674SmartRobotinoBatteryChargerDocking42022-07-18T12:38:54Z<p>Verbeek: </p>
<hr />
<div>==Docking coordinate system==<br />
[[irdocking-coords.png]]<br />
<br />
==Python interface==<br />
<pre><br />
os << " get_bumper - return an integer with the bumper state. 0 not pressed. 1 pressed." << std::endl;<br />
os << " get_extpower - return an integer with the ext_power state. 0 not connected. 1 connected." << std::endl;<br />
os << " get_pos - return (x,y,phi)" << std::endl;<br />
os << " get_dist - return (d0,...,d8) distance sensor readings in meters" << std::endl;<br />
os << " set_vel(vx, vy, omega) - Set velocity in m/s and rad/s." << std::endl;<br />
os << " iniData - Get ini file parameters as json encoded string." << std::endl;<br />
os << " get_numMarkers - Get the number of markers found by the laser scanner. Return type int." << std::endl;<br />
os << " get_marker(i) - Get x,y coord of marker at index i. Return type (float,float)." << std::endl;<br />
os << " get_markerNumScanPoints(i) - Get num scan points of marker at index i. Return type int." << std::endl;<br />
os << " get_numStations - Get the number of stations found by the laser scanner. Return type int." << std::endl;<br />
os << " get_stationLeftMarker - Get x,y coord of first station. Return type (float,float)." << std::endl;<br />
os << " get_stationRightMarker - Get x,y coord of right marker of first station. Return type (float,float)." << std::endl;<br />
os << " get_stationLeftMarker - Get x,y coord of left marker of first station. Return type (float,float)." << std::endl;<br />
os << " get_stationPos - Get x,y coord of first station. Return type (float,float)." << std::endl;<br />
os << " get_stationNormal - Get x,y coord of normal verctor of first station. Return type (float,float)." << std::endl;<br />
os << " get_stationWidth - Get distance between left and right marker of first station. Return type float." << std::endl;<br />
os << std::endl;<br />
os << "return code: 0 continue, 1 error, 2 finished docking" << std::endl;<br />
</pre></div>Verbeekhttps://wiki.openrobotino.org/index.php?title=SmartRobotinoBatteryChargerDocking4&diff=4673SmartRobotinoBatteryChargerDocking42022-07-18T08:42:20Z<p>Verbeek: </p>
<hr />
<div>==Python interface==<br />
<pre><br />
os << " get_bumper - return an integer with the bumper state. 0 not pressed. 1 pressed." << std::endl;<br />
os << " get_extpower - return an integer with the ext_power state. 0 not connected. 1 connected." << std::endl;<br />
os << " get_pos - return (x,y,phi)" << std::endl;<br />
os << " get_dist - return (d0,...,d8) distance sensor readings in meters" << std::endl;<br />
os << " set_vel(vx, vy, omega) - Set velocity in m/s and rad/s." << std::endl;<br />
os << " iniData - Get ini file parameters as json encoded string." << std::endl;<br />
os << " get_numMarkers - Get the number of markers found by the laser scanner. Return type int." << std::endl;<br />
os << " get_marker(i) - Get x,y coord of marker at index i. Return type (float,float)." << std::endl;<br />
os << " get_markerNumScanPoints(i) - Get num scan points of marker at index i. Return type int." << std::endl;<br />
os << " get_numStations - Get the number of stations found by the laser scanner. Return type int." << std::endl;<br />
os << " get_stationLeftMarker - Get x,y coord of first station. Return type (float,float)." << std::endl;<br />
os << " get_stationRightMarker - Get x,y coord of right marker of first station. Return type (float,float)." << std::endl;<br />
os << " get_stationLeftMarker - Get x,y coord of left marker of first station. Return type (float,float)." << std::endl;<br />
os << " get_stationPos - Get x,y coord of first station. Return type (float,float)." << std::endl;<br />
os << " get_stationNormal - Get x,y coord of normal verctor of first station. Return type (float,float)." << std::endl;<br />
os << " get_stationWidth - Get distance between left and right marker of first station. Return type float." << std::endl;<br />
os << std::endl;<br />
os << "return code: 0 continue, 1 error, 2 finished docking" << std::endl;<br />
</pre></div>Verbeekhttps://wiki.openrobotino.org/index.php?title=SmartRobotinoBatteryChargerDocking4&diff=4672SmartRobotinoBatteryChargerDocking42022-07-18T08:25:26Z<p>Verbeek: </p>
<hr />
<div>==Python interface==<br />
<pre><br />
os << "IrDockingTask:" << std::endl;<br />
os << " get_bumper - return an integer with the bumper state. 0 not pressed. 1 pressed." << std::endl;<br />
os << " get_extpower - return an integer with the ext_power state. 0 not connected. 1 connected." << std::endl;<br />
os << " get_pos - return (x,y,phi)" << std::endl;<br />
os << " get_dist - return (d0,...,d8) distance sensor readings in meters" << std::endl;<br />
os << " set_vel(vx, vy, omega) - Set velocity in m/s and rad/s." << std::endl;<br />
os << " iniData - Get ini file parameters as json encoded string." << std::endl;<br />
os << " get_numMarkers - Get the number of markers found by the laser scanner. Return type int." << std::endl;<br />
os << " get_markerX(i) - Get x coord of marker at index i. Return type float." << std::endl;<br />
os << " get_markerY(i) - Get y coord of marker at index i. Return type float." << std::endl;<br />
os << " get_markerNumScanPoints(i) - Get num scan points of marker at index i. Return type int." << std::endl;<br />
os << " get_numStations - Get the number of stations found by the laser scanner. Return type int." << std::endl;<br />
os << " get_stationLeftMarkerX - Get x coord of first station. Return type float." << std::endl;<br />
os << " get_stationLeftMarkerY - Get y coord of first station. Return type float." << std::endl;<br />
os << " get_stationRightMarkerX - Get x coord of right marker of first station. Return type float." << std::endl;<br />
os << " get_stationRightMarkerY - Get y coord of right marker of first station. Return type float." << std::endl;<br />
os << " get_stationLeftMarkerX - Get x coord of left marker of first station. Return type float." << std::endl;<br />
os << " get_stationLeftMarkerY - Get y coord of left marker of first station. Return type float." << std::endl;<br />
os << " get_stationPosX - Get x coord of first station. Return type float." << std::endl;<br />
os << " get_stationPosY - Get y coord of first station. Return type float." << std::endl;<br />
os << " get_stationNormalX - Get x coord of normal verctor of first station. Return type float." << std::endl;<br />
os << " get_stationNormalY - Get y coord of normal vector of first station. Return type float." << std::endl;<br />
os << " get_stationWidth - Get distance between left and right marker of first station. Return type float." << std::endl;<br />
os << std::endl;<br />
os << "return code: 0 continue, 1 error, 2 finished docking" << std::endl;<br />
</pre></div>Verbeekhttps://wiki.openrobotino.org/index.php?title=SmartRobotinoBatteryChargerDocking4&diff=4671SmartRobotinoBatteryChargerDocking42022-07-18T08:18:50Z<p>Verbeek: </p>
<hr />
<div>==Python interface==<br />
{| border="1"<br />
!Command<br />
!Description<br />
|-<br />
|get_bumper<br />
|return an integer with the bumper state. 0 not pressed. 1 pressed.<br />
|-<br />
|get_extpower<br />
|return an integer with the ext_power state. 0 not connected. 1 connected.<br />
|-<br />
|get_pos<br />
|return (x,y,phi) in world coordinates<br />
|-<br />
|get_dist<br />
|return (d0,...,d8) distance sensor readings in meters<br />
|-<br />
|set_vel(vx, vy, omega)<br />
|Set velocity in m/s and rad/s.<br />
|-<br />
|<br />
|<br />
|-<br />
|<br />
|<br />
|-<br />
|<br />
|<br />
|-<br />
|<br />
|<br />
|-<br />
|<br />
|<br />
|-<br />
|<br />
|<br />
|-<br />
|<br />
|<br />
|-<br />
|<br />
|<br />
|-<br />
|<br />
|<br />
|-<br />
|<br />
|<br />
|}</div>Verbeekhttps://wiki.openrobotino.org/index.php?title=SmartRobotinoBatteryChargerDocking4&diff=4670SmartRobotinoBatteryChargerDocking42022-07-18T08:18:00Z<p>Verbeek: /* Python interface */</p>
<hr />
<div>==Python interface==<br />
{| border="1"<br />
!Command<br />
!Description<br />
|-<br />
|get_bumper<br />
|return an integer with the bumper state. 0 not pressed. 1 pressed.<br />
|-<br />
|get_extpower<br />
|return an integer with the ext_power state. 0 not connected. 1 connected.<br />
|-<br />
|get_pos<br />
|return (x,y,phi) in world coordinates<br />
|-<br />
|<br />
|<br />
|-<br />
|<br />
|<br />
|-<br />
|<br />
|<br />
|-<br />
|<br />
|<br />
|-<br />
|<br />
|<br />
|-<br />
|<br />
|<br />
|-<br />
|<br />
|<br />
|-<br />
|<br />
|<br />
|-<br />
|<br />
|<br />
|-<br />
|<br />
|<br />
|-<br />
|<br />
|<br />
|-<br />
|<br />
|<br />
|}</div>Verbeekhttps://wiki.openrobotino.org/index.php?title=SmartRobotinoBatteryChargerDocking4&diff=4669SmartRobotinoBatteryChargerDocking42022-07-18T08:16:19Z<p>Verbeek: /* Python interface */</p>
<hr />
<div>==Python interface==<br />
{| border="1"<br />
!Command<br />
!Description<br />
|-<br />
|get_bumper<br />
|Returns 1 if Robotinos bumper is pressed. Returns 0 otherwise.<br />
|}</div>Verbeekhttps://wiki.openrobotino.org/index.php?title=SmartRobotinoBatteryChargerDocking4&diff=4668SmartRobotinoBatteryChargerDocking42022-07-18T07:44:26Z<p>Verbeek: Created page with "==Python interface=="</p>
<hr />
<div>==Python interface==</div>Verbeekhttps://wiki.openrobotino.org/index.php?title=Smartsoft&diff=4667Smartsoft2022-07-18T07:43:57Z<p>Verbeek: /* Robotino - Industry 4.0 SmartSoft Components (FESTO MPS) */</p>
<hr />
<div>==Introduction==<br />
{|cellspacing="20" cellpadding="10"<br />
|- style="vertical-align:top"<br />
|[[Image:Robotino_smartsoft_icon_64.png]] [[Image:PoweredBySmartSoft-single_small.png]]<br />
|[http://servicerobotik-ulm.de/drupal/?q=node/71 SmartSoft] is a component approach for robotics software based on communication patterns as core of a robotics component model.<br> This page describes how one can use SmartSoft together with Robotino.<br />
'''What does SmartSoft and SmartMDSD for you?'''<br />
* A structured approach (separation of roles) to manage software efforts and system complexity in building your real world robotic applications. ([http://servicerobotik-ulm.de/drupal/?q=node/19 The SmartSoft Approach])<br />
* An integrated toolchain (model driven software development) that realizes this approach and supports your system development. ([http://servicerobotik-ulm.de/drupal/?q=node/20 The SmartMDSD Toolchain])<br />
* A set of reusable software components for localisation, navigation, mobile manipulation, task coordination, human robot interaction, object recognition and many more for immediate reuse in your applications. ([http://servicerobotik-ulm.de/drupal/doxygen/components_commrep/ Components])<br />
'''See SmartSoft, the SmartMDSD Toolchain and components in action: [http://servicerobotik-ulm.de/drupal/?q=node/70 Video Tutorials].'''<br />
<br />
! style="text-align:left; width:20em; background-color:#dddddd"|<br />
=== Links ===<br />
[http://servicerobotik-ulm.de/drupal/?q=node/20 SmartMDSD toolchain] - All information about the toolchain, installation, tutorials, videos, downloads.<br />
<br />
[http://sourceforge.net/projects/smartsoft-ace/develop SmartSoft] - The SmartSoft main repository with the core functions and most of the components.<br />
<br />
[http://svn.openrobotino.org/smartsoft/ SmartSoft - Robotino components] - The SmartSoft robotino repository with the robotino specific functions.<br />
<br />
[[smartsoft_changelog|Robotino Smartsoft packages changes]]<br />
|}<br />
<br />
==SmartSoft -- How To Use==<br />
<br />
{|cellspacing="20" cellpadding="10"<br />
|- style="vertical-align:top"<br />
! style="text-align:left; width:20em; background-color:#dddddd"|<br />
=== SmartSoft through Robotino Factory === <br />
* ready to use (on robotino startup!)<br />
* navigation, mapping, localization<br />
*[[robfactory|Robotino Factory]]<br />
<br><br />
[[Image:Robotino-factory.png|250px|center|link=http://robfactory.rec.de]]<br />
! style="text-align:left; width:20em; background-color:#dddddd"|<br />
<br />
=== SmartSoft through Robotino View ===<br />
* ready to use "high-level" building blocks available in Robotino View<br />
* navigation, mapping, localization<br />
* [http://www.festo-didactic.com/int-en/services/robotino/programming/robotino-view/ read more...]<br />
<br><br />
[[Image:Robotinoview_1.png|250px|center|link=http://www.festo-didactic.com/int-en/services/robotino/programming/robotino-view/]]<br />
! style="text-align:left; width:20em; background-color:#dddddd"|<br />
<br />
=== SmartSoft on Robotino for <br>Robot Developers ===<br />
* ready to use SmartSoft Robotino components<br />
* usable with SmartMDSD toolchain<br />
* offers full SmartSoft Ecosystem functionally<br />
* [[SmartSoft on Robotino for Robot Developers| read more...]]<br />
<br><br />
[[Image:SmartMDSD-Toolchain_Deployment.png|300px|center|link=SmartSoft on Robotino for Robot Developers]]<br />
|}<br />
<br />
==SmartSoft -- Robotino API/Webinterface/Factory Integration==<br />
This section describes the integration or interaction of SmartSoft with the robotino services and tools (API/webinterface/factory).<br />
To enable the usage of SmartSoft "standard components" (e.g. navigation, localization and mapping) with the robotino services e.g the robotino factory, some robotino specific components have been developed (see section below).<br><br />
<br />
The combination of those components enables an easy to use interface (e.g. robotino factory) to powerful functionally such as collision free navigation, SLAM, localization, management of locations and maps and tasks. <br />
<br />
[[Image:SmartSoft Robotino integration.png]]<br />
<br />
==Core Robotino SmartSoft components==<br />
<!-- [[Image:FM-SS-Structure.PNG]] --><br />
A robot system consist typically of a set of components that makes use of specific hardware (base, laser, etc.) delivering the "basic services" and platform (specific hardware) independent components (e.g. navigation, localization).<br><br />
This section describes those SmartSoft components that are specifically developed for the use with the robotino platform.<br />
<br />
Other SmartSoft components can and are used in combination with those components as well, e.g. Sick-Laser components, all the navigation, localization and mapping components, etc. .<br />
<br />
{| class="wikitable" <br />
!Name<br />
!Description<br />
!Component Hull<br />
|-<br />
|SmartRobotinoBaseServer<br />
|The SmartRobotinoBaseServer provides access to the robotino robot. It handles the communication with the hardware or the simulator. It offers several services for controlling the robot, such as sending navigation commands to the base and providing access to the robot's odometry. Position updates can be sent to the component to overcome odometry failures.<br />
|[[File:SmartRobotinoBaseServer.JPG|thumb|center]]<br />
|-<br />
|SmartRobotinoLaserServer<br />
|The SmartRobotinoLaserServer provides laser scans from the robotino SIM simulator or other scanners operated by robotino deamons. Scans can be requested by push newest or query communication.<br />
|[[File:SmartRobotinoLaserServer.JPG|thumb|center]]<br />
|-<br />
|SmartRobotinoIRServer<br />
|The SmartRobotinoIRServer ir scans from the robotino platforms (and simulator).<br />
|[[File:SmartRobotinoIRServer.JPG|thumb|center]]<br />
|-<br />
|[[SmartRobotinoRPCBridge]]<br />
|The SmartRobotinoRPCBridge component is the interface component between the robotino rpcd and the SmartSoftSlave components. It is used to transfer data between the two system parts, e.g. the map as it is recorded by the SLAM component. <br />
|[[File:SmartRobotinoRPCBridge.JPG|thumb|center]]<br />
|-<br />
|[[SmartRobotinoMasterRPCBridge]]<br />
|The SmartRobotinoMasterRPCBridge component is the interface component between the the robotino rpcd and the SmartSoftMaster components. It is used to transfer data between the two system parts, e.g. the path network which is handled by the SmartPathNavigationServer. <br />
|[[File:SmartRobotinoRPCBridge.JPG|thumb|center]]<br />
|-<br />
|SmartRobotinoImageServer<br />
|The SmartRobotinoImageServer provides images captured by a robotino daemon or the simulator. <br />
|[[File:SmartRobotinoImageServer.JPG|thumb|center]]<br />
|}<br />
<br />
==Robotino - Industry 4.0 SmartSoft Components (FESTO MPS) ==<br />
<br />
[[Robotino Fleets - Architecture]]<br />
<br />
{| class="wikitable" <br />
!Name<br />
!Description<br />
!Component Hull<br />
|-<br />
|[[SmartJobCenter]]<br />
|The SmartJobCenter provides a REST API to push and manage jobs and to read job status information.<br />
|<br />
|-<br />
|[[SmartFestoFleetCom]]<br />
|The SmartFestoFleetCom is the interface component to the FESTO Fleet-Manager (MPS).<br />
|[[File:SmartFestoFleetCom.JPG|thumb|center]]<br />
|-<br />
|[[SmartFestoGripperServer]]<br />
|The SmartFestoGripperServer provides access to the FESTO gripper for Robotino3.<br />
|[[File:SmartFestoGripperServer.JPG|thumb|center]]<br />
|-<br />
|[[SmartFestoMPSDocking]]<br />
|The SmartFestoMPSDocking performs the docking/undocking of a Robotino3, equipped with a conveyer belt, to a FESTO MPS station.<br />
|[[File:SmartFestoMPSDocking.JPG|thumb|center]]<br />
|-<br />
|[[SmartMarkerTracker]]<br />
|The SmartMarkerTracker is capable of detecting visual markers and docking to MPS stations equipped with visual markers.<br />
|[[File:SmartMarkerTracker.JPG|thumb|center]]<br />
|-<br />
|[[SmartNavigationPlanner]]<br />
|The SmartNavigationPlanner uses [https://ompl.kavrakilab.org/ ompl] to perform planning for navigation. The component is used in the context of corridor based fleet navigation.<br />
|[[File:SmartNavigationPlanner.JPG|thumb|center]]<br />
|-<br />
|[[SmartPurePursuitNavigation]]<br />
|The SmartPurePursuitNavigation realizes a pure-pursuit navigation, calculating velocities to follow a trajectory.<br />
|[[File:SmartPurePursuitNavigation.JPG|thumb|center]]<br />
|-<br />
|[[SmartRobotinoBatteryChargerDocking]]<br />
|The SmartRobotinoBatteryChargerDocking performs the docking/undocking of a Robotino3 to a battery charger station.<br />
|[[File:SmartRobotinoBatteryChargerDocking.JPG|thumb|center]]<br />
|-<br />
|[[SmartRobotinoBatteryChargerDocking4]]<br />
|The SmartRobotinoBatteryChargerDocking4 performs the docking/undocking of a Robotino4 to a battery charger station.<br />
|[[File:SmartRobotinoBatteryChargerDocking.JPG|thumb|center]]<br />
|-<br />
|[[SmartRobotinoConveyerBeltServer]]<br />
|The SmartRobotinoConveyerBeltServer provides access the robotino3 conveyer belt, used to transport KLTs (small load carrier).<br />
|[[File:SmartRobotinoConveyerBeltServer.JPG|thumb|center]]<br />
|-<br />
|[[SmartRobotinoMasterRPCBridge]]<br />
|The SmartRobotinoMasterRPCBridge is the interface component between the the robotino rpcd and the SmartSoft components. It is used to transfer data between the two system parts, e.g. the map as it is recorded by the SLAM component. This component is among the set of fleet coordination components.<br />
|[[File:SmartRobotinoMasterRPCBridge.JPG|thumb|center]]<br />
|-<br />
|SmartPathNavigationServer<br />
|The SmartPathNavigationServer is the coordinating component for corridor based local coordinated navigation with multiple robots in a fleet.<br />
|[[File:SmartPathNavigationServer.JPG|thumb|center]]<br />
|-<br />
|[[SmartPathNavigationClient]]<br />
|The SmartPathNavigationClient is client component for corridor based fleet navigation.<br />
|[[File:SmartPathNavigationClient.JPG|thumb|center]]<br />
|-<br />
<br />
|}<br />
<br />
==Documentation==<br />
*[[Factory4_Io_Connector|Usage of Robotino's IO connector in the Factory4 environment]]<br />
* [https://www.mysick.com/saqqara/pdf.aspx?id=im0017595 Manual S30B]<br />
*[[WUT_RS422_Config|Configure WUT PCIe interface card for usage with Sick Laserscanner]]<br />
*[[Jumper Connections|Jumper connection for Motor off DIN1 low]]<br />
*[[InformationForApp|Information needed by the new App]]</div>Verbeekhttps://wiki.openrobotino.org/index.php?title=Robotino4&diff=4666Robotino42022-06-07T07:35:33Z<p>Verbeek: /* Introduction */</p>
<hr />
<div>==Introduction==<br />
{|class="wikitable" cellpadding="20" vertical-align="top"<br />
|-<br />
|[[Image:robotino_v4_64.png]]<br />
|Robotino v4 started in Q3/2019. <br />
[https://ip.festo-didactic.com/InfoPortal/Robotino/Overview/EN/index.html Access legacy information]<br />
|}<br />
<br />
==IO connector==<br />
[[Image:Robotino4-ea-connector.png]]<br />
<br />
*[[SOM_5898_BIOS|BIOS settings for SOM5898]]<br />
*[[SOM_5899_BIOS|BIOS settings for SOM5899]]<br />
*[[robotino4_gyro|Gyroscope]]<br />
<br />
==Compatibility between v3 and v4==<br />
The main difference between v3 and v4 is the new battery system. While v3 worked with Pb and optinal NiMH accumulators charged by an electronic curcuit inside Robotino (located directly behind the batteries) v4 uses Li-Ion batteries from Festool.<br />
<br />
Because the voltage of the Pb/NiMH batteries in v3 can be higher than the 24V of the external power supply, the batteries must be disconnected from the system to ensure that power comes from the external power supply and not discharging the batteries even if an external power supply is attached.<br />
<br />
In v4 this behaviour of disconnecting batteries from the system whenever an external power supply is connected is not necessary any more. The 24V of the external power supply are much higher than the maximum reachable battery voltage of the Li-Ion batteries. Therefor the batteries stay connected to the system so that both external power supply and batteries can power the system. This is useful if the external power supply can only deliver a limited amount of current. If the system's power consumption exeeds the power of the external supply the batteries can fill the gap.<br />
<br />
On boards starting from mid 2019 there is a jumper JP13. Keep JP13 open if you are using the CPU board with a Robotino v4 chassis. Close JP13 if you are using a Robotino v3 chassis.<br />
<br />
If there is no JP13 you have to remove D11 when using the v4 CPU board on a v4 chassis. When using a v3 chassis D11 needs to be present.<br />
<br />
[[Image:D11_present.png]] [[Image:D11_removed.png]]<br />
<br />
==Charger==<br />
[[Image:Festool_states-2.1.3.png]]</div>Verbeekhttps://wiki.openrobotino.org/index.php?title=Robotino4&diff=4665Robotino42022-06-07T07:34:59Z<p>Verbeek: </p>
<hr />
<div>==Introduction==<br />
{|class="wikitable" cellpadding="20" vertical-align="top"<br />
|-<br />
|[[Image:robotino_v3_64.png]]<br />
|Robotino v4 started in Q3/2019. <br />
[https://ip.festo-didactic.com/InfoPortal/Robotino/Overview/EN/index.html Access legacy information]<br />
|}<br />
<br />
==IO connector==<br />
[[Image:Robotino4-ea-connector.png]]<br />
<br />
*[[SOM_5898_BIOS|BIOS settings for SOM5898]]<br />
*[[SOM_5899_BIOS|BIOS settings for SOM5899]]<br />
*[[robotino4_gyro|Gyroscope]]<br />
<br />
==Compatibility between v3 and v4==<br />
The main difference between v3 and v4 is the new battery system. While v3 worked with Pb and optinal NiMH accumulators charged by an electronic curcuit inside Robotino (located directly behind the batteries) v4 uses Li-Ion batteries from Festool.<br />
<br />
Because the voltage of the Pb/NiMH batteries in v3 can be higher than the 24V of the external power supply, the batteries must be disconnected from the system to ensure that power comes from the external power supply and not discharging the batteries even if an external power supply is attached.<br />
<br />
In v4 this behaviour of disconnecting batteries from the system whenever an external power supply is connected is not necessary any more. The 24V of the external power supply are much higher than the maximum reachable battery voltage of the Li-Ion batteries. Therefor the batteries stay connected to the system so that both external power supply and batteries can power the system. This is useful if the external power supply can only deliver a limited amount of current. If the system's power consumption exeeds the power of the external supply the batteries can fill the gap.<br />
<br />
On boards starting from mid 2019 there is a jumper JP13. Keep JP13 open if you are using the CPU board with a Robotino v4 chassis. Close JP13 if you are using a Robotino v3 chassis.<br />
<br />
If there is no JP13 you have to remove D11 when using the v4 CPU board on a v4 chassis. When using a v3 chassis D11 needs to be present.<br />
<br />
[[Image:D11_present.png]] [[Image:D11_removed.png]]<br />
<br />
==Charger==<br />
[[Image:Festool_states-2.1.3.png]]</div>Verbeekhttps://wiki.openrobotino.org/index.php?title=Labview&diff=4662Labview2022-03-09T08:05:29Z<p>Verbeek: /* Video of the rangefinder example */</p>
<hr />
<div>==Introduction==<br />
{|cellspacing="20" cellpadding="10"<br />
|- style="vertical-align:top"<br />
|[[Image:Robotino_labview_icon_64.png]]<br />
|LabVIEW drivers are also available for Robotino. Using these drivers Robotino's functionality can be manipulated in LabVIEW. The drivers come with a set of easy to understand examples and an extensive [http://doc.openrobotino.org/documentation/LabView/ help manual] which illustrates the use of each Robotino LabVIEW VI.<br />
! style="text-align:left; width:20em; background-color:#dddddd"|<br />
=== Package links ===<br />
[[downloads#LabVIEW|Robotino LabVIEW drivers]]<br />
|}<br />
<br />
== LabVIEW Drivers available ==<br />
# AnalogInput<br />
# Bumper<br />
# Com<br />
# Camera<br />
# DigitalInput<br />
# DigitalOutput<br />
# DistanceSensor<br />
# EncoderInput<br />
# Gripper<br />
# LaserRangeFinder<br />
# Manipulator<br />
# Motor<br />
# NorthStar<br />
# Odometry<br />
# OmniDrive<br />
# PowerManagement<br />
# Relay<br />
Have a look at the [http://doc.openrobotino.org/documentation/LabView/ Robotino LabView Online Help].<br />
<br />
== An example of Robotino with LabVIEW ==<br />
<br />
Using the LabVIEW drivers, a scenario has been created where Robotino moves around in an obstacle cluttered environment by avoiding the obstacles.<br />
<br />
[[File:Collision_avoidance_laserrangefinder_example.png]]<br />
<br />
In the figure above, the block diagram of the line follow example can be seen. Many of the Robotino's LabVIEW VIs (such as ''Com'', ''LaserRangeFinder'', ''OmniDrive'' and ''Motor'') have been used to create this example.<br />
<br />
You may note that the error stream traverses through all the Robotino LabVIEW VIs used in this example. Errors or warnings from previous VIs are carried to subsequent VIs and finally to an error sink.<br />
<br />
In this example, ''Com'' takes the ''Hostname'' and two additional Boolean inputs, namely ''Connect'' and ''Disconnect''. If ''Connect'' is set to ''true'' a connection to Robotino is initiated and if ''Disconnect'' is set to ''true'', the connection is terminated. Upon establishment of a successful connection, a ''Com Id'' is returned which is then used by the other VIs to communicate with Robotino.<br />
<br />
As you may note from the block diagram above, the ''LaserRangeFinder'' returns the readings from the Robotino's laser scanner. There are about 666 range values returned by the laser scanner. We then loop through the values between 283 - 383 (in front of the robot) and if any of those values is less than 0.8 (meters), that means the robot is in the vicinity of an obstacle. This check is done inside the for-loop (as seen above).<br />
<br />
In case that the robot is close to an obstacle (the Boolean check in the for-loop returns ''true''), we stop and rotate the robot until the front of the robot is clear of obstacles.<br />
<br />
In case the output is ''false'' (no obstacle detected) then a constant velocity of 500 mm/s in the X direction is applied (see block diagram below). This causes Robotino to move forward.<br />
<br />
[[File:Collision_avoidance_laserrangefinder_example_false.png]]<br />
<br />
The ''Motor Speed 1'', ''Motor Speed 2'' and ''Motor Speed 3'' outputs of the ''OmniDrive'' are then connected as input for the 3 motors respectively which causes the 3 motors to turn and hence, moving the robot.<br />
<br />
==Video of the rangefinder example==<br />
<youtube>X3hpkRFbdHo</youtube><br />
<br />
== The Openrobotino Forum ==<br />
<br />
The [http://forum.openrobotino.org/ Openrobotino Forum] connects the developers with the users. Here you will find more support and you can also post your questions/problems/bugs etc and get a quick response.</div>Verbeekhttps://wiki.openrobotino.org/index.php?title=Robotino3_usb_restore&diff=4661Robotino3 usb restore2021-12-09T13:48:46Z<p>Verbeek: /* Package links */</p>
<hr />
<div>==Introduction==<br />
{|cellspacing="20" cellpadding="10"<br />
|- style="vertical-align:top"<br />
|[[Image:USB-stick_100.png]]<br />
|Robotino 3 has a SSD that stores the operating system. A bootable USB stick is used to<br />
*initially install the Robotino OS to a new SSD<br />
*overwrite the OS on a SSD already in use.<br />
! style="text-align:left; width:20em; background-color:#dddddd"|<br />
=== Package links ===<br />
[[downloads#Robotino3_images|Robotino3 images]]<br />
<br />
[[downloads#Robotino4_images|Robotino4 images]]<br />
|}<br />
<br />
==Create a bootable USB-Stick==<br />
If you are using the blue USB-stick that shipped with Robotino you can skip most of these steps and just copy the current image to the USB-stick.<br />
<br />
* Download the Robotino [https://doc.openrobotino.org/download/tinycore/CoreCustom20211029.iso custom image].<br />
* Take a USB-Stick and format it (quick format will do)<br />
* Use [https://unetbootin.github.io/ UNetbootin] to install this custom image to the USB stick.<br />
* Download a [[Robotino3_images|Robotino3 image]] or a [[Robotino4_images|Robotino4 image]] and it's md5 file. With Firefox you need to right-click the file and choose ''save link''.<br />
* Check the integrity of the image using [http://www.withopf.com/tools/md5/ md5]. Run ''md5 -Check:imagefilename.fsa.md5''.<br />
* Copy the image files (.fsa,.f01,...) into the /images/ directory of your USB-stick.<br />
* Attach monitor and keyboard to your Robotino 3.<br />
* Plug the USB stick into any of Robotino3's USB port.<br />
* Please do not continue without plugging in Robotino to it's power supply.<br />
* Power on Robotino3 and hit the '''F7''' (for Robotino Professional with Core i5), '''F11''' (for Robotino Basic with Atom) as long as you can see the BIOS startup screen.<br />
* Select your USB stick from the list (not the UEFI entry).<br />
* Select Microcore from the list - this will start the automatic updater.<br />
* After booting into tinycore type restore.sh and press Enter to start the restore process.</div>Verbeekhttps://wiki.openrobotino.org/index.php?title=Robotino3_usb_restore&diff=4660Robotino3 usb restore2021-12-09T13:48:36Z<p>Verbeek: </p>
<hr />
<div>==Introduction==<br />
{|cellspacing="20" cellpadding="10"<br />
|- style="vertical-align:top"<br />
|[[Image:USB-stick_100.png]]<br />
|Robotino 3 has a SSD that stores the operating system. A bootable USB stick is used to<br />
*initially install the Robotino OS to a new SSD<br />
*overwrite the OS on a SSD already in use.<br />
! style="text-align:left; width:20em; background-color:#dddddd"|<br />
=== Package links ===<br />
[[downloads#Robotino3_images|Robotino3 images]]<br />
[[downloads#Robotino4_images|Robotino4 images]]<br />
|}<br />
<br />
==Create a bootable USB-Stick==<br />
If you are using the blue USB-stick that shipped with Robotino you can skip most of these steps and just copy the current image to the USB-stick.<br />
<br />
* Download the Robotino [https://doc.openrobotino.org/download/tinycore/CoreCustom20211029.iso custom image].<br />
* Take a USB-Stick and format it (quick format will do)<br />
* Use [https://unetbootin.github.io/ UNetbootin] to install this custom image to the USB stick.<br />
* Download a [[Robotino3_images|Robotino3 image]] or a [[Robotino4_images|Robotino4 image]] and it's md5 file. With Firefox you need to right-click the file and choose ''save link''.<br />
* Check the integrity of the image using [http://www.withopf.com/tools/md5/ md5]. Run ''md5 -Check:imagefilename.fsa.md5''.<br />
* Copy the image files (.fsa,.f01,...) into the /images/ directory of your USB-stick.<br />
* Attach monitor and keyboard to your Robotino 3.<br />
* Plug the USB stick into any of Robotino3's USB port.<br />
* Please do not continue without plugging in Robotino to it's power supply.<br />
* Power on Robotino3 and hit the '''F7''' (for Robotino Professional with Core i5), '''F11''' (for Robotino Basic with Atom) as long as you can see the BIOS startup screen.<br />
* Select your USB stick from the list (not the UEFI entry).<br />
* Select Microcore from the list - this will start the automatic updater.<br />
* After booting into tinycore type restore.sh and press Enter to start the restore process.</div>Verbeekhttps://wiki.openrobotino.org/index.php?title=Robotino3_usb_restore&diff=4659Robotino3 usb restore2021-12-09T13:48:05Z<p>Verbeek: /* Package links */</p>
<hr />
<div>==Introduction==<br />
{|cellspacing="20" cellpadding="10"<br />
|- style="vertical-align:top"<br />
|[[Image:USB-stick_100.png]]<br />
|Robotino 3 has a SSD that stores the operating system. A bootable USB stick is used to<br />
*initially install the Robotino OS to a new SSD<br />
*overwrite the OS on a SSD already in use.<br />
! style="text-align:left; width:20em; background-color:#dddddd"|<br />
=== Package links ===<br />
[[downloads#Robotino3_images|Robotino3 images]]<br />
|<br />
[[downloads#Robotino4_images|Robotino4 images]]<br />
|}<br />
<br />
==Create a bootable USB-Stick==<br />
If you are using the blue USB-stick that shipped with Robotino you can skip most of these steps and just copy the current image to the USB-stick.<br />
<br />
* Download the Robotino [https://doc.openrobotino.org/download/tinycore/CoreCustom20211029.iso custom image].<br />
* Take a USB-Stick and format it (quick format will do)<br />
* Use [https://unetbootin.github.io/ UNetbootin] to install this custom image to the USB stick.<br />
* Download a [[Robotino3_images|Robotino3 image]] or a [[Robotino4_images|Robotino4 image]] and it's md5 file. With Firefox you need to right-click the file and choose ''save link''.<br />
* Check the integrity of the image using [http://www.withopf.com/tools/md5/ md5]. Run ''md5 -Check:imagefilename.fsa.md5''.<br />
* Copy the image files (.fsa,.f01,...) into the /images/ directory of your USB-stick.<br />
* Attach monitor and keyboard to your Robotino 3.<br />
* Plug the USB stick into any of Robotino3's USB port.<br />
* Please do not continue without plugging in Robotino to it's power supply.<br />
* Power on Robotino3 and hit the '''F7''' (for Robotino Professional with Core i5), '''F11''' (for Robotino Basic with Atom) as long as you can see the BIOS startup screen.<br />
* Select your USB stick from the list (not the UEFI entry).<br />
* Select Microcore from the list - this will start the automatic updater.<br />
* After booting into tinycore type restore.sh and press Enter to start the restore process.</div>Verbeekhttps://wiki.openrobotino.org/index.php?title=Robotino3_usb_restore&diff=4658Robotino3 usb restore2021-12-09T13:47:19Z<p>Verbeek: /* Create a bootable USB-Stick */</p>
<hr />
<div>==Introduction==<br />
{|cellspacing="20" cellpadding="10"<br />
|- style="vertical-align:top"<br />
|[[Image:USB-stick_100.png]]<br />
|Robotino 3 has a SSD that stores the operating system. A bootable USB stick is used to<br />
*initially install the Robotino OS to a new SSD<br />
*overwrite the OS on a SSD already in use.<br />
! style="text-align:left; width:20em; background-color:#dddddd"|<br />
=== Package links ===<br />
[[downloads#Robotino3_images|Robotino3 images]]<br />
|}<br />
<br />
==Create a bootable USB-Stick==<br />
If you are using the blue USB-stick that shipped with Robotino you can skip most of these steps and just copy the current image to the USB-stick.<br />
<br />
* Download the Robotino [https://doc.openrobotino.org/download/tinycore/CoreCustom20211029.iso custom image].<br />
* Take a USB-Stick and format it (quick format will do)<br />
* Use [https://unetbootin.github.io/ UNetbootin] to install this custom image to the USB stick.<br />
* Download a [[Robotino3_images|Robotino3 image]] or a [[Robotino4_images|Robotino4 image]] and it's md5 file. With Firefox you need to right-click the file and choose ''save link''.<br />
* Check the integrity of the image using [http://www.withopf.com/tools/md5/ md5]. Run ''md5 -Check:imagefilename.fsa.md5''.<br />
* Copy the image files (.fsa,.f01,...) into the /images/ directory of your USB-stick.<br />
* Attach monitor and keyboard to your Robotino 3.<br />
* Plug the USB stick into any of Robotino3's USB port.<br />
* Please do not continue without plugging in Robotino to it's power supply.<br />
* Power on Robotino3 and hit the '''F7''' (for Robotino Professional with Core i5), '''F11''' (for Robotino Basic with Atom) as long as you can see the BIOS startup screen.<br />
* Select your USB stick from the list (not the UEFI entry).<br />
* Select Microcore from the list - this will start the automatic updater.<br />
* After booting into tinycore type restore.sh and press Enter to start the restore process.</div>Verbeekhttps://wiki.openrobotino.org/index.php?title=Robotino4_images&diff=4657Robotino4 images2021-12-09T13:45:07Z<p>Verbeek: </p>
<hr />
<div>{| border="1"<br />
!Name<br />
!OS<br />
!Image<br />
!MD5<br />
|-<br />
|4.20.6<br />
|Ubuntu 20.04<br />
|[https://doc.openrobotino.org/download/tinycore/robotino4image/robotino4-4.20.6.fsa part1] [https://doc.openrobotino.org/download/tinycore/robotino4image/robotino4-4.20.6.f01 part2]<br />
|[https://doc.openrobotino.org/download/tinycore/robotino4image/robotino4-4.20.6.md5sum md5]<br />
|}</div>Verbeekhttps://wiki.openrobotino.org/index.php?title=Robotino4_images&diff=4656Robotino4 images2021-12-09T13:44:36Z<p>Verbeek: </p>
<hr />
<div>{| border="1"<br />
!Name<br />
!OS<br />
!Image<br />
!MD5<br />
|-<br />
|4.20.6<br />
|Ubuntu 20.04<br />
|[https://doc.openrobotino.org/download/tinycore/robotino4image/robotino4-4.20.6fsa part1] [https://doc.openrobotino.org/download/tinycore/robotino4image/robotino4-4.20.6.f01 part2]<br />
|[https://doc.openrobotino.org/download/tinycore/robotino4image/robotino4-4.20.6.md5sum md5]<br />
|}</div>Verbeekhttps://wiki.openrobotino.org/index.php?title=Robotino3_usb_restore&diff=4655Robotino3 usb restore2021-12-09T13:42:31Z<p>Verbeek: /* Create a bootable USB-Stick */</p>
<hr />
<div>==Introduction==<br />
{|cellspacing="20" cellpadding="10"<br />
|- style="vertical-align:top"<br />
|[[Image:USB-stick_100.png]]<br />
|Robotino 3 has a SSD that stores the operating system. A bootable USB stick is used to<br />
*initially install the Robotino OS to a new SSD<br />
*overwrite the OS on a SSD already in use.<br />
! style="text-align:left; width:20em; background-color:#dddddd"|<br />
=== Package links ===<br />
[[downloads#Robotino3_images|Robotino3 images]]<br />
|}<br />
<br />
==Create a bootable USB-Stick==<br />
If you are using the blue USB-stick that shipped with Robotino you can skip most of these steps and just copy the current image to the USB-stick.<br />
<br />
* Download the Robotino [https://doc.openrobotino.org/download/tinycore/CoreCustom20211029.iso custom image].<br />
* Take a USB-Stick and format it (quick format will do)<br />
* Use [https://unetbootin.github.io/ UNetbootin] to install this custom image to the USB stick.<br />
* Download the [[Robotino3_images|latest image]] and it's md5 file. With Firefox you need to right-click the file and choose ''save link''.<br />
* Check the integrity of the image using [http://www.withopf.com/tools/md5/ md5]. Run ''md5 -Check:imagefilename.fsa.md5''.<br />
* Copy the image files (.fsa,.f01,...) into the /images/ directory of your USB-stick.<br />
* Attach monitor and keyboard to your Robotino 3.<br />
* Plug the USB stick into any of Robotino3's USB port.<br />
* Please do not continue without plugging in Robotino to it's power supply.<br />
* Power on Robotino3 and hit the '''F7''' (for Robotino Professional with Core i5), '''F11''' (for Robotino Basic with Atom) as long as you can see the BIOS startup screen.<br />
* Select your USB stick from the list (not the UEFI entry).<br />
* Select Microcore from the list - this will start the automatic updater.<br />
* After booting into tinycore type restore.sh and press Enter to start the restore process.</div>Verbeekhttps://wiki.openrobotino.org/index.php?title=Robotino3_usb_restore&diff=4654Robotino3 usb restore2021-12-09T13:41:00Z<p>Verbeek: /* Create a bootable USB-Stick */</p>
<hr />
<div>==Introduction==<br />
{|cellspacing="20" cellpadding="10"<br />
|- style="vertical-align:top"<br />
|[[Image:USB-stick_100.png]]<br />
|Robotino 3 has a SSD that stores the operating system. A bootable USB stick is used to<br />
*initially install the Robotino OS to a new SSD<br />
*overwrite the OS on a SSD already in use.<br />
! style="text-align:left; width:20em; background-color:#dddddd"|<br />
=== Package links ===<br />
[[downloads#Robotino3_images|Robotino3 images]]<br />
|}<br />
<br />
==Create a bootable USB-Stick==<br />
If you are using the blue USB-stick that shipped with Robotino you can skip most of these steps and just copy the current image to the USB-stick.<br />
<br />
* Download the Robotino [https://doc.openrobotino.org/download/tinycore/CoreCustom20211029.iso custom image].<br />
* Take a USB-Stick and format it (quick format will do)<br />
* Use [https://unetbootin.github.io/ UNetbootin] to install this custom image to the USB stick.<br />
* Download the [[Robotino3_images|latest image]] and it's md5 file. With Firefox you need to right-click the file and choose ''save link''.<br />
* Check the integrity of the image using [http://www.withopf.com/tools/md5/ md5]. Run ''md5 -Check:imagefilename.fsa.md5''.<br />
* Copy the image into the /boot/ directory of your USB-stick.<br />
* Attach monitor and keyboard to your Robotino 3.<br />
* Plug the USB stick into any of Robotino3's USB port.<br />
* Please do not continue without plugging in Robotino to it's power supply.<br />
* Power on Robotino3 and hit the '''F7''' (for Robotino Professional with Core i5), '''F11''' (for Robotino Basic with Atom) as long as you can see the BIOS startup screen.<br />
* Select your USB stick from the list (not the UEFI entry).<br />
* Select Microcore from the list - this will start the automatic updater.<br />
* After booting into tinycore type restore.sh and press Enter to start the restore process.</div>Verbeekhttps://wiki.openrobotino.org/index.php?title=Robotino3_usb_restore&diff=4653Robotino3 usb restore2021-12-09T13:39:32Z<p>Verbeek: /* Create a bootable USB-Stick */</p>
<hr />
<div>==Introduction==<br />
{|cellspacing="20" cellpadding="10"<br />
|- style="vertical-align:top"<br />
|[[Image:USB-stick_100.png]]<br />
|Robotino 3 has a SSD that stores the operating system. A bootable USB stick is used to<br />
*initially install the Robotino OS to a new SSD<br />
*overwrite the OS on a SSD already in use.<br />
! style="text-align:left; width:20em; background-color:#dddddd"|<br />
=== Package links ===<br />
[[downloads#Robotino3_images|Robotino3 images]]<br />
|}<br />
<br />
==Create a bootable USB-Stick==<br />
If you are using the blue USB-stick that shipped with Robotino you can skip most of these steps and just copy the current image to the USB-stick.<br />
<br />
* Download the Robotino [https://doc.openrobotino.org/download/tinycore/CoreCustom20211029.iso custom image].<br />
* Take a USB-Stick and format it (quick format will do)<br />
* Use [https://unetbootin.github.io/ UNetbootin] to install this custom image to the USB stick.<br />
* Download the [[Robotino3_images|latest image]] and it's md5 file. With Firefox you need to right-click the file and choose ''save link''.<br />
* Check the integrity of the image using [http://www.withopf.com/tools/md5/ md5]. Run ''md5 -Check:imagefilename.fsa.md5''.<br />
* Copy the image into the /boot/ directory of your USB-stick.<br />
* Attach monitor and keyboard to your Robotino 3.<br />
* Plug the USB stick into any of Robotino3's USB port.<br />
* Please do not continue without plugging in Robotino to it's power supply.<br />
* Power on Robotino3 and hit the '''F7''' (for Robotino Professional with Core i5), '''F11''' (for Robotino Basic with Atom) as long as you can see the BIOS startup screen.<br />
* Select your USB stick from the list (not the UEFI entry).<br />
* Select Microcore from the list - this will start the automatic updater.<br />
* After booting into tinycore the [http://svn.openrobotino.org/tinycore/restore.sh restore script] is executed automatically. '''If there is only on fsa file in the boot folder of the USB stick, the restore process ist started automatically!'''<br />
* Robotino will silently shutdown after the setup is complete.<br />
<br />
===SSID after installing image===<br />
After installing the image and booting Robotino, Robotino's wireless settings are<br />
<pre><br />
SSID: Robotino3AP<br />
PSK: robotino3ap<br />
</pre><br />
<br />
===Trouble shooting===<br />
====No image found====<br />
This can happen, when mounting of the USB-stick failed. Please try the following steps:<br />
<pre><br />
sudo mount /dev/sdb1 /mnt/sdb1<br />
sudo restore.sh<br />
</pre></div>Verbeekhttps://wiki.openrobotino.org/index.php?title=Robotino3_usb_restore&diff=4652Robotino3 usb restore2021-12-09T13:39:13Z<p>Verbeek: /* Create a bootable USB-Stick */</p>
<hr />
<div>==Introduction==<br />
{|cellspacing="20" cellpadding="10"<br />
|- style="vertical-align:top"<br />
|[[Image:USB-stick_100.png]]<br />
|Robotino 3 has a SSD that stores the operating system. A bootable USB stick is used to<br />
*initially install the Robotino OS to a new SSD<br />
*overwrite the OS on a SSD already in use.<br />
! style="text-align:left; width:20em; background-color:#dddddd"|<br />
=== Package links ===<br />
[[downloads#Robotino3_images|Robotino3 images]]<br />
|}<br />
<br />
==Create a bootable USB-Stick==<br />
If you are using the blue USB-stick that shipped with Robotino you can skip most of these steps and just copy the current image to the USB-stick.<br />
<br />
* Download the Robotino3 [https://doc.openrobotino.org/download/tinycore/CoreCustom20211029.iso custom image].<br />
* Take a USB-Stick and format it (quick format will do)<br />
* Use [https://unetbootin.github.io/ UNetbootin] to install this custom image to the USB stick.<br />
* Download the [[Robotino3_images|latest image]] and it's md5 file. With Firefox you need to right-click the file and choose ''save link''.<br />
* Check the integrity of the image using [http://www.withopf.com/tools/md5/ md5]. Run ''md5 -Check:imagefilename.fsa.md5''.<br />
* Copy the image into the /boot/ directory of your USB-stick.<br />
* Attach monitor and keyboard to your Robotino 3.<br />
* Plug the USB stick into any of Robotino3's USB port.<br />
* Please do not continue without plugging in Robotino to it's power supply.<br />
* Power on Robotino3 and hit the '''F7''' (for Robotino Professional with Core i5), '''F11''' (for Robotino Basic with Atom) as long as you can see the BIOS startup screen.<br />
* Select your USB stick from the list (not the UEFI entry).<br />
* Select Microcore from the list - this will start the automatic updater.<br />
* After booting into tinycore the [http://svn.openrobotino.org/tinycore/restore.sh restore script] is executed automatically. '''If there is only on fsa file in the boot folder of the USB stick, the restore process ist started automatically!'''<br />
* Robotino will silently shutdown after the setup is complete.<br />
<br />
===SSID after installing image===<br />
After installing the image and booting Robotino, Robotino's wireless settings are<br />
<pre><br />
SSID: Robotino3AP<br />
PSK: robotino3ap<br />
</pre><br />
<br />
===Trouble shooting===<br />
====No image found====<br />
This can happen, when mounting of the USB-stick failed. Please try the following steps:<br />
<pre><br />
sudo mount /dev/sdb1 /mnt/sdb1<br />
sudo restore.sh<br />
</pre></div>Verbeekhttps://wiki.openrobotino.org/index.php?title=Ubuntu_20_04_modifications&diff=4651Ubuntu 20 04 modifications2021-11-08T13:22:28Z<p>Verbeek: /* cleandist */</p>
<hr />
<div>Minimum Ubuntu Desktop install<br />
<br />
<pre><br />
sudo su<br />
<br />
passwd<br />
dorp6<br />
<br />
apt install openssh-server vim net-tools<br />
<br />
apt purge snapd<br />
<br />
vim /etc/ssh/sshd_config<br />
PermitRootLogin yes<br />
systemctl restart ssh<br />
<br />
vim /etc/default/grub<br />
GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=0 biosdevname=0 i8042.noaux=1"<br />
GRUB_CMDLINE_LINUX_DEFAULT="noresume"<br />
update-grub<br />
</pre><br />
<br />
<pre><br />
cat << EOF > /root/remove_old_kernels.sh<br />
#!/bin/bash<br />
dpkg -l 'linux-[ihs]*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\([-0-9]*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | tee zu_entfernende_Kernel<br />
cat zu_entfernende_Kernel | xargs sudo apt-get -y purge<br />
rm zu_entfernende_Kernel<br />
EOF<br />
chmod +x /root/remove_old_kernels.sh<br />
</pre><br />
<br />
<pre><br />
e2fsck -f /dev/sda1<br />
tune2fs -U f6fec0c6-bc88-46d3-b125-e450709f1956 /dev/sda1<br />
<br />
replace UUID by f6fec0c6-bc88-46d3-b125-e450709f1956 in /boot/grub/grub.cfg<br />
<br />
echo "RESUME=none" > /etc/initramfs-tools/conf.d/resume<br />
<br />
wget -qO - http://packages.openrobotino.org/keyFile | sudo apt-key add -<br />
echo "deb http://packages2.openrobotino.org focal main" > /etc/apt/sources.list.d/openrobotino.list<br />
<br />
apt install vino<br />
<br />
**** run this as user robotino !!!<br />
gsettings set org.gnome.Vino require-encryption false<br />
<br />
apt install qdirstat gdebi<br />
<br />
sed -i -e 's/enabled=1/enabled=0/g' /etc/default/apport<br />
<br />
apt-get remove unattended-upgrades<br />
apt-get remove update-notifier<br />
</pre><br />
<br />
==cleandist==<br />
<pre><br />
cat << EOFXX > /root/cleandist.sh<br />
#!/bin/bash<br />
<br />
sed -i "/^lasertype=/c\lasertype=fromRGBD" /etc/robotino/smartsoft_slave.conf<br />
sed -i "/^cameratype=/c\cameratype=realsense" /etc/robotino/smartsoft_slave.conf<br />
sed -i "/^RobotinoIP=/c\RobotinoIP=192.168.0.1" /etc/robotino/smartsoft_slave.conf<br />
sed -i "/^SignalDOUT=/c\SignalDOUT=false" /etc/robotino/smartsoft_slave.conf<br />
<br />
rm -Rf /var/log/*<br />
apt-get clean<br />
<br />
rm -Rf /home/robotino/.cache<br />
rm /root/*.deb<br />
<br />
history -c<br />
rm /home/robotino/.bash_history<br />
<br />
rm /root/.ssh/authorized_keys<br />
rm /root/.ssh/known_hosts<br />
<br />
rm -Rf /opt/smartsoft/data_master/maps<br />
rm -Rf /opt/smartsoft/data/maps<br />
<br />
rm -f /etc/NetworkManager/system-connections/*<br />
<br />
cat << EOF > /etc/NetworkManager/system-connections/eth0<br />
[connection]<br />
id=eth0<br />
uuid=03d1fb6f-efcf-3f57-85e1-85b9cdb9ab9d<br />
type=ethernet<br />
autoconnect-priority=-999<br />
interface-name=eth0<br />
permissions=<br />
secondaries=<br />
timestamp=1547803650<br />
<br />
[ethernet]<br />
duplex=full<br />
mac-address=<br />
mac-address-blacklist=<br />
<br />
[ipv6]<br />
addr-gen-mode=stable-privacy<br />
dns-search=<br />
method=auto<br />
<br />
[ipv4]<br />
method=auto<br />
address1=<br />
dns=<br />
dns-search=<br />
EOF<br />
<br />
chmod 600 /etc/NetworkManager/system-connections/eth0<br />
<br />
cat << EOF > /etc/NetworkManager/system-connections/eth1<br />
[connection]<br />
id=eth1<br />
uuid=a9c22f98-0184-3d0b-ae3d-4efca5abbad6<br />
type=ethernet<br />
autoconnect-priority=-999<br />
interface-name=eth1<br />
permissions=<br />
<br />
[ethernet]<br />
mac-address-blacklist=<br />
<br />
[ipv4]<br />
address1=192.168.0.1/24<br />
dns-search=<br />
method=manual<br />
<br />
[ipv6]<br />
addr-gen-mode=stable-privacy<br />
dns-search=<br />
method=auto<br />
EOF<br />
<br />
chmod 600 /etc/NetworkManager/system-connections/eth1<br />
<br />
EOFXX<br />
chmod +x /root/cleandist.sh<br />
</pre><br />
<br />
==gcc==<br />
Wenn kein gcc installiert ist<br />
<pre><br />
apt install gcc-7 g++-7<br />
</pre><br />
<br />
Wenn gcc-9 installiert ist:<br />
<pre><br />
update-alternatives --remove-all gcc <br />
update-alternatives --remove-all g++<br />
<br />
apt install gcc-7 g++-7 gcc-9 g++-9<br />
<br />
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 10<br />
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 20<br />
<br />
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 10<br />
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 20<br />
<br />
sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc 30<br />
sudo update-alternatives --set cc /usr/bin/gcc<br />
<br />
sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++ 30<br />
sudo update-alternatives --set c++ /usr/bin/g++<br />
</pre><br />
<br />
<pre><br />
update-alternatives --config gcc<br />
update-alternatives --config g++<br />
</pre><br />
<br />
==Realsense==<br />
<pre><br />
sudo apt-key adv --keyserver keys.gnupg.net --recv-key C8B3A55A6F3EFCDE || sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key C8B3A55A6F3EFCDE<br />
sudo add-apt-repository "deb http://realsense-hw-public.s3.amazonaws.com/Debian/apt-repo bionic main" -u<br />
<br />
apt install librealsense2=2.38.1-0~realsense0.3378<br />
apt-mark hold librealsense2<br />
<br />
optinal<br />
<br />
sudo apt-get install librealsense2-dbg<br />
</pre><br />
<br />
==MRPT==<br />
<pre><br />
add-apt-repository ppa:joseluisblancoc/mrpt-stable<br />
apt install libmrpt-dev<br />
(optional) apt install mrpt-apps<br />
</pre><br />
<br />
==Change Lid Close Action==<br />
<pre><br />
echo "HandleLidSwitch=ignore" >> /etc/systemd/logind.conf<br />
systemctl restart systemd-logind.service<br />
</pre><br />
<br />
==Journal gateway==<br />
<pre><br />
apt-get install systemd-journal-remote<br />
systemctl enable systemd-journal-gatewayd.service<br />
</pre><br />
<br />
==/etc/systemd/journald.conf==<br />
<pre><br />
SystemMaxUse=100M<br />
</pre><br />
<br />
==COBOTTA==<br />
<pre><br />
apt install python3-pip python3-psycopg2<br />
python3 -m pip install flask flask_cors<br />
</pre><br />
<br />
==Node-RED==<br />
<pre><br />
apt update<br />
apt install nodejs<br />
apt install npm<br />
npm install –g --unsafe-perm node-red<br />
</pre><br />
<br />
'''Node-RED Pakete'''<br />
<pre><br />
npm install -g node-red-dashboard<br />
npm install -g --unsafe-perm node-red-contrib-iiot-opcua<br />
<br />
Zugriffsrechte für Zertifikate anpassen:<br />
chown -R robotino:robotino /usr/local/lib/node_modules/node-red-contrib-iiot-opcua<br />
</pre><br />
<br />
<br />
==DHCLIENT==<br />
timeout time ;<br />
<br />
The timeout statement determines the amount of time that must pass between the time that the client begins to try to determine its address and the time that it decides that it's not going to be able to contact a server. By default, this timeout is sixty seconds. After the timeout has passed, if there are any static leases defined in the configuration file, or any leases remaining in the lease database that have not yet expired, the client will loop through these leases attempting to validate them, and if it finds one that appears to be valid, it will use that lease's address. If there are no valid static leases or unexpired leases in the lease database, the client will restart the protocol after the defined retry interval. <br />
<br />
retry time;<br />
<br />
The retry statement determines the time that must pass after the client has determined that there is no DHCP server present before it tries again to contact a DHCP server. By default, this is five minutes. <br />
<br />
<pre><br />
timeout 10;<br />
retry 5;<br />
</pre><br />
<br />
==plymouth==<br />
<pre><br />
apt remove plymouth<br />
</pre></div>Verbeekhttps://wiki.openrobotino.org/index.php?title=Ubuntu_20_04_modifications&diff=4650Ubuntu 20 04 modifications2021-11-08T13:20:40Z<p>Verbeek: </p>
<hr />
<div>Minimum Ubuntu Desktop install<br />
<br />
<pre><br />
sudo su<br />
<br />
passwd<br />
dorp6<br />
<br />
apt install openssh-server vim net-tools<br />
<br />
apt purge snapd<br />
<br />
vim /etc/ssh/sshd_config<br />
PermitRootLogin yes<br />
systemctl restart ssh<br />
<br />
vim /etc/default/grub<br />
GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=0 biosdevname=0 i8042.noaux=1"<br />
GRUB_CMDLINE_LINUX_DEFAULT="noresume"<br />
update-grub<br />
</pre><br />
<br />
<pre><br />
cat << EOF > /root/remove_old_kernels.sh<br />
#!/bin/bash<br />
dpkg -l 'linux-[ihs]*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\([-0-9]*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | tee zu_entfernende_Kernel<br />
cat zu_entfernende_Kernel | xargs sudo apt-get -y purge<br />
rm zu_entfernende_Kernel<br />
EOF<br />
chmod +x /root/remove_old_kernels.sh<br />
</pre><br />
<br />
<pre><br />
e2fsck -f /dev/sda1<br />
tune2fs -U f6fec0c6-bc88-46d3-b125-e450709f1956 /dev/sda1<br />
<br />
replace UUID by f6fec0c6-bc88-46d3-b125-e450709f1956 in /boot/grub/grub.cfg<br />
<br />
echo "RESUME=none" > /etc/initramfs-tools/conf.d/resume<br />
<br />
wget -qO - http://packages.openrobotino.org/keyFile | sudo apt-key add -<br />
echo "deb http://packages2.openrobotino.org focal main" > /etc/apt/sources.list.d/openrobotino.list<br />
<br />
apt install vino<br />
<br />
**** run this as user robotino !!!<br />
gsettings set org.gnome.Vino require-encryption false<br />
<br />
apt install qdirstat gdebi<br />
<br />
sed -i -e 's/enabled=1/enabled=0/g' /etc/default/apport<br />
<br />
apt-get remove unattended-upgrades<br />
apt-get remove update-notifier<br />
</pre><br />
<br />
==cleandist==<br />
<pre><br />
cat << EOF > /root/cleandist.sh<br />
#!/bin/bash<br />
<br />
sed -i "/^lasertype=/c\lasertype=realsense" /etc/robotino/smartsoft_slave.conf<br />
sed -i "/^RobotinoIP=/c\RobotinoIP=192.168.0.1" /etc/robotino/smartsoft_slave.conf<br />
<br />
rm -Rf /var/log/*<br />
apt-get clean<br />
<br />
rm -Rf /home/robotino/.cache<br />
rm /root/*.deb<br />
<br />
history -c<br />
rm /home/robotino/.bash_history<br />
<br />
rm /root/.ssh/authorized_keys<br />
rm /root/.ssh/known_hosts<br />
<br />
rm -Rf /opt/smartsoft/data_master/maps<br />
rm -Rf /opt/smartsoft/data/maps<br />
<br />
rm -f /etc/NetworkManager/system-connections/*<br />
<br />
cat << EOF2 > /etc/NetworkManager/system-connections/eth0<br />
[connection]<br />
id=eth0<br />
uuid=03d1fb6f-efcf-3f57-85e1-85b9cdb9ab9d<br />
type=ethernet<br />
autoconnect-priority=-999<br />
interface-name=eth0<br />
permissions=<br />
secondaries=<br />
timestamp=1547803650<br />
<br />
[ethernet]<br />
duplex=full<br />
mac-address=<br />
mac-address-blacklist=<br />
<br />
[ipv6]<br />
addr-gen-mode=stable-privacy<br />
dns-search=<br />
ip6-privacy=0<br />
method=auto<br />
<br />
[ipv4]<br />
method=auto<br />
address1=<br />
dns=<br />
address2=192.168.0.1/24,0.0.0.0<br />
dns-search=<br />
EOF2<br />
EOF<br />
chmod +x /root/cleandist.sh<br />
</pre><br />
<br />
==gcc==<br />
Wenn kein gcc installiert ist<br />
<pre><br />
apt install gcc-7 g++-7<br />
</pre><br />
<br />
Wenn gcc-9 installiert ist:<br />
<pre><br />
update-alternatives --remove-all gcc <br />
update-alternatives --remove-all g++<br />
<br />
apt install gcc-7 g++-7 gcc-9 g++-9<br />
<br />
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 10<br />
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 20<br />
<br />
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 10<br />
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 20<br />
<br />
sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc 30<br />
sudo update-alternatives --set cc /usr/bin/gcc<br />
<br />
sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++ 30<br />
sudo update-alternatives --set c++ /usr/bin/g++<br />
</pre><br />
<br />
<pre><br />
update-alternatives --config gcc<br />
update-alternatives --config g++<br />
</pre><br />
<br />
==Realsense==<br />
<pre><br />
sudo apt-key adv --keyserver keys.gnupg.net --recv-key C8B3A55A6F3EFCDE || sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key C8B3A55A6F3EFCDE<br />
sudo add-apt-repository "deb http://realsense-hw-public.s3.amazonaws.com/Debian/apt-repo bionic main" -u<br />
<br />
apt install librealsense2=2.38.1-0~realsense0.3378<br />
apt-mark hold librealsense2<br />
<br />
optinal<br />
<br />
sudo apt-get install librealsense2-dbg<br />
</pre><br />
<br />
==MRPT==<br />
<pre><br />
add-apt-repository ppa:joseluisblancoc/mrpt-stable<br />
apt install libmrpt-dev<br />
(optional) apt install mrpt-apps<br />
</pre><br />
<br />
==Change Lid Close Action==<br />
<pre><br />
echo "HandleLidSwitch=ignore" >> /etc/systemd/logind.conf<br />
systemctl restart systemd-logind.service<br />
</pre><br />
<br />
==Journal gateway==<br />
<pre><br />
apt-get install systemd-journal-remote<br />
systemctl enable systemd-journal-gatewayd.service<br />
</pre><br />
<br />
==/etc/systemd/journald.conf==<br />
<pre><br />
SystemMaxUse=100M<br />
</pre><br />
<br />
==COBOTTA==<br />
<pre><br />
apt install python3-pip python3-psycopg2<br />
python3 -m pip install flask flask_cors<br />
</pre><br />
<br />
==Node-RED==<br />
<pre><br />
apt update<br />
apt install nodejs<br />
apt install npm<br />
npm install –g --unsafe-perm node-red<br />
</pre><br />
<br />
'''Node-RED Pakete'''<br />
<pre><br />
npm install -g node-red-dashboard<br />
npm install -g --unsafe-perm node-red-contrib-iiot-opcua<br />
<br />
Zugriffsrechte für Zertifikate anpassen:<br />
chown -R robotino:robotino /usr/local/lib/node_modules/node-red-contrib-iiot-opcua<br />
</pre><br />
<br />
<br />
==DHCLIENT==<br />
timeout time ;<br />
<br />
The timeout statement determines the amount of time that must pass between the time that the client begins to try to determine its address and the time that it decides that it's not going to be able to contact a server. By default, this timeout is sixty seconds. After the timeout has passed, if there are any static leases defined in the configuration file, or any leases remaining in the lease database that have not yet expired, the client will loop through these leases attempting to validate them, and if it finds one that appears to be valid, it will use that lease's address. If there are no valid static leases or unexpired leases in the lease database, the client will restart the protocol after the defined retry interval. <br />
<br />
retry time;<br />
<br />
The retry statement determines the time that must pass after the client has determined that there is no DHCP server present before it tries again to contact a DHCP server. By default, this is five minutes. <br />
<br />
<pre><br />
timeout 10;<br />
retry 5;<br />
</pre><br />
<br />
==plymouth==<br />
<pre><br />
apt remove plymouth<br />
</pre></div>Verbeekhttps://wiki.openrobotino.org/index.php?title=Ubuntu_20_04_modifications&diff=4649Ubuntu 20 04 modifications2021-11-04T08:24:40Z<p>Verbeek: </p>
<hr />
<div>Minimum Ubuntu Desktop install<br />
<br />
<pre><br />
sudo su<br />
<br />
passwd<br />
dorp6<br />
<br />
apt install openssh-server vim net-tools<br />
<br />
apt remove snapd<br />
<br />
vim /etc/ssh/sshd_config<br />
PermitRootLogin yes<br />
systemctl restart ssh<br />
<br />
vim /etc/default/grub<br />
GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=0 biosdevname=0 i8042.noaux=1"<br />
GRUB_CMDLINE_LINUX_DEFAULT="noresume"<br />
update-grub<br />
</pre><br />
<br />
<pre><br />
cat << EOF > /root/remove_old_kernels.sh<br />
#!/bin/bash<br />
dpkg -l 'linux-[ihs]*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\([-0-9]*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | tee zu_entfernende_Kernel<br />
cat zu_entfernende_Kernel | xargs sudo apt-get -y purge<br />
rm zu_entfernende_Kernel<br />
EOF<br />
chmod +x /root/remove_old_kernels.sh<br />
</pre><br />
<br />
<pre><br />
e2fsck -f /dev/sda1<br />
tune2fs -U f6fec0c6-bc88-46d3-b125-e450709f1956 /dev/sda1<br />
<br />
replace UUID by f6fec0c6-bc88-46d3-b125-e450709f1956 in /boot/grub/grub.cfg<br />
<br />
echo "RESUME=none" > /etc/initramfs-tools/conf.d/resume<br />
<br />
wget -qO - http://packages.openrobotino.org/keyFile | sudo apt-key add -<br />
echo "deb http://packages2.openrobotino.org focal main" > /etc/apt/sources.list.d/openrobotino.list<br />
<br />
apt install vino<br />
<br />
**** run this as user robotino !!!<br />
gsettings set org.gnome.Vino require-encryption false<br />
<br />
apt install qdirstat gdebi<br />
<br />
sed -i -e 's/enabled=1/enabled=0/g' /etc/default/apport<br />
<br />
apt-get remove unattended-upgrades<br />
apt-get remove update-notifier<br />
</pre><br />
<br />
==cleandist==<br />
<pre><br />
cat << EOF > /root/cleandist.sh<br />
#!/bin/bash<br />
<br />
sed -i "/^lasertype=/c\lasertype=realsense" /etc/robotino/smartsoft_slave.conf<br />
sed -i "/^RobotinoIP=/c\RobotinoIP=192.168.0.1" /etc/robotino/smartsoft_slave.conf<br />
<br />
rm -Rf /var/log/*<br />
apt-get clean<br />
<br />
rm -Rf /home/robotino/.cache<br />
rm /root/*.deb<br />
<br />
history -c<br />
rm /home/robotino/.bash_history<br />
<br />
rm /root/.ssh/authorized_keys<br />
rm /root/.ssh/known_hosts<br />
<br />
rm -Rf /opt/smartsoft/data_master/maps<br />
rm -Rf /opt/smartsoft/data/maps<br />
<br />
rm -f /etc/NetworkManager/system-connections/*<br />
<br />
cat << EOF2 > /etc/NetworkManager/system-connections/eth0<br />
[connection]<br />
id=eth0<br />
uuid=03d1fb6f-efcf-3f57-85e1-85b9cdb9ab9d<br />
type=ethernet<br />
autoconnect-priority=-999<br />
interface-name=eth0<br />
permissions=<br />
secondaries=<br />
timestamp=1547803650<br />
<br />
[ethernet]<br />
duplex=full<br />
mac-address=<br />
mac-address-blacklist=<br />
<br />
[ipv6]<br />
addr-gen-mode=stable-privacy<br />
dns-search=<br />
ip6-privacy=0<br />
method=auto<br />
<br />
[ipv4]<br />
method=auto<br />
address1=<br />
dns=<br />
address2=192.168.0.1/24,0.0.0.0<br />
dns-search=<br />
EOF2<br />
EOF<br />
chmod +x /root/cleandist.sh<br />
</pre><br />
<br />
==gcc==<br />
Wenn kein gcc installiert ist<br />
<pre><br />
apt install gcc-7 g++-7<br />
</pre><br />
<br />
Wenn gcc-9 installiert ist:<br />
<pre><br />
update-alternatives --remove-all gcc <br />
update-alternatives --remove-all g++<br />
<br />
apt install gcc-7 g++-7 gcc-9 g++-9<br />
<br />
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 10<br />
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 20<br />
<br />
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 10<br />
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 20<br />
<br />
sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc 30<br />
sudo update-alternatives --set cc /usr/bin/gcc<br />
<br />
sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++ 30<br />
sudo update-alternatives --set c++ /usr/bin/g++<br />
</pre><br />
<br />
<pre><br />
update-alternatives --config gcc<br />
update-alternatives --config g++<br />
</pre><br />
<br />
==Realsense==<br />
<pre><br />
sudo apt-key adv --keyserver keys.gnupg.net --recv-key C8B3A55A6F3EFCDE || sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key C8B3A55A6F3EFCDE<br />
sudo add-apt-repository "deb http://realsense-hw-public.s3.amazonaws.com/Debian/apt-repo bionic main" -u<br />
<br />
apt install librealsense2=2.38.1-0~realsense0.3378<br />
apt-mark hold librealsense2<br />
<br />
optinal<br />
<br />
sudo apt-get install librealsense2-dbg<br />
</pre><br />
<br />
==MRPT==<br />
<pre><br />
add-apt-repository ppa:joseluisblancoc/mrpt-stable<br />
apt install libmrpt-dev<br />
(optional) apt install mrpt-apps<br />
</pre><br />
<br />
==Change Lid Close Action==<br />
<pre><br />
echo "HandleLidSwitch=ignore" >> /etc/systemd/logind.conf<br />
systemctl restart systemd-logind.service<br />
</pre><br />
<br />
==Journal gateway==<br />
<pre><br />
apt-get install systemd-journal-remote<br />
systemctl enable systemd-journal-gatewayd.service<br />
</pre><br />
<br />
==/etc/systemd/journald.conf==<br />
<pre><br />
SystemMaxUse=100M<br />
</pre><br />
<br />
==COBOTTA==<br />
<pre><br />
apt install python3-pip python3-psycopg2<br />
python3 -m pip install flask flask_cors<br />
</pre><br />
<br />
==Node-RED==<br />
<pre><br />
apt update<br />
apt install nodejs<br />
apt install npm<br />
npm install –g --unsafe-perm node-red<br />
</pre><br />
<br />
'''Node-RED Pakete'''<br />
<pre><br />
npm install -g node-red-dashboard<br />
npm install -g --unsafe-perm node-red-contrib-iiot-opcua<br />
<br />
Zugriffsrechte für Zertifikate anpassen:<br />
chown -R robotino:robotino /usr/local/lib/node_modules/node-red-contrib-iiot-opcua<br />
</pre><br />
<br />
<br />
==DHCLIENT==<br />
timeout time ;<br />
<br />
The timeout statement determines the amount of time that must pass between the time that the client begins to try to determine its address and the time that it decides that it's not going to be able to contact a server. By default, this timeout is sixty seconds. After the timeout has passed, if there are any static leases defined in the configuration file, or any leases remaining in the lease database that have not yet expired, the client will loop through these leases attempting to validate them, and if it finds one that appears to be valid, it will use that lease's address. If there are no valid static leases or unexpired leases in the lease database, the client will restart the protocol after the defined retry interval. <br />
<br />
retry time;<br />
<br />
The retry statement determines the time that must pass after the client has determined that there is no DHCP server present before it tries again to contact a DHCP server. By default, this is five minutes. <br />
<br />
<pre><br />
timeout 10;<br />
retry 5;<br />
</pre><br />
<br />
==plymouth==<br />
<pre><br />
apt remove plymouth<br />
</pre></div>Verbeekhttps://wiki.openrobotino.org/index.php?title=Ubuntu_20_04_modifications&diff=4648Ubuntu 20 04 modifications2021-11-04T08:23:07Z<p>Verbeek: </p>
<hr />
<div>Minimum Ubuntu Desktop install<br />
<br />
<pre><br />
sudo su<br />
<br />
passwd<br />
dorp6<br />
<br />
apt install openssh-server vim net-tools<br />
<br />
apt remove snapd<br />
<br />
vim /etc/ssh/sshd_config<br />
PermitRootLogin yes<br />
systemctl restart ssh<br />
<br />
vim /etc/default/grub<br />
GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=0 biosdevname=0 i8042.noaux=1"<br />
GRUB_CMDLINE_LINUX_DEFAULT="noresume"<br />
update-grub<br />
</pre><br />
<br />
<pre><br />
cat << EOF > /root/remove_old_kernels.sh<br />
#!/bin/bash<br />
dpkg -l 'linux-[ihs]*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\([-0-9]*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | tee zu_entfernende_Kernel<br />
cat zu_entfernende_Kernel | xargs sudo apt-get -y purge<br />
rm zu_entfernende_Kernel<br />
EOF<br />
chmod +x /root/remove_old_kernels.sh<br />
</pre><br />
<br />
<pre><br />
e2fsck -f /dev/sda1<br />
tune2fs -U f6fec0c6-bc88-46d3-b125-e450709f1956 /dev/sda1<br />
<br />
replace UUID by f6fec0c6-bc88-46d3-b125-e450709f1956 in /boot/grub/grub.cfg<br />
<br />
echo "RESUME=none" > /etc/initramfs-tools/conf.d/resume<br />
<br />
wget -qO - http://packages.openrobotino.org/keyFile | sudo apt-key add -<br />
echo "deb http://packages2.openrobotino.org focal main" > /etc/apt/sources.list.d/openrobotino.list<br />
<br />
apt install vino<br />
<br />
**** run this as user robotino !!!<br />
gsettings set org.gnome.Vino require-encryption false<br />
<br />
apt install qdirstat gdebi<br />
<br />
add-apt-repository ppa:open62541-team/ppa<br />
apt install libopen62541-1-dev<br />
<br />
sed -i -e 's/enabled=1/enabled=0/g' /etc/default/apport<br />
<br />
apt-get remove unattended-upgrades<br />
apt-get remove update-notifier<br />
</pre><br />
<br />
==cleandist==<br />
<pre><br />
cat << EOF > /root/cleandist.sh<br />
#!/bin/bash<br />
<br />
sed -i "/^lasertype=/c\lasertype=realsense" /etc/robotino/smartsoft_slave.conf<br />
sed -i "/^RobotinoIP=/c\RobotinoIP=192.168.0.1" /etc/robotino/smartsoft_slave.conf<br />
<br />
rm -Rf /var/log/*<br />
apt-get clean<br />
<br />
rm -Rf /home/robotino/.cache<br />
rm /root/*.deb<br />
<br />
history -c<br />
rm /home/robotino/.bash_history<br />
<br />
rm /root/.ssh/authorized_keys<br />
rm /root/.ssh/known_hosts<br />
<br />
rm -Rf /opt/smartsoft/data_master/maps<br />
rm -Rf /opt/smartsoft/data/maps<br />
<br />
rm -f /etc/NetworkManager/system-connections/*<br />
<br />
cat << EOF2 > /etc/NetworkManager/system-connections/eth0<br />
[connection]<br />
id=eth0<br />
uuid=03d1fb6f-efcf-3f57-85e1-85b9cdb9ab9d<br />
type=ethernet<br />
autoconnect-priority=-999<br />
interface-name=eth0<br />
permissions=<br />
secondaries=<br />
timestamp=1547803650<br />
<br />
[ethernet]<br />
duplex=full<br />
mac-address=<br />
mac-address-blacklist=<br />
<br />
[ipv6]<br />
addr-gen-mode=stable-privacy<br />
dns-search=<br />
ip6-privacy=0<br />
method=auto<br />
<br />
[ipv4]<br />
method=auto<br />
address1=<br />
dns=<br />
address2=192.168.0.1/24,0.0.0.0<br />
dns-search=<br />
EOF2<br />
EOF<br />
chmod +x /root/cleandist.sh<br />
</pre><br />
<br />
==gcc==<br />
Wenn kein gcc installiert ist<br />
<pre><br />
apt install gcc-7 g++-7<br />
</pre><br />
<br />
Wenn gcc-9 installiert ist:<br />
<pre><br />
update-alternatives --remove-all gcc <br />
update-alternatives --remove-all g++<br />
<br />
apt install gcc-7 g++-7 gcc-9 g++-9<br />
<br />
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 10<br />
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 20<br />
<br />
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 10<br />
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 20<br />
<br />
sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc 30<br />
sudo update-alternatives --set cc /usr/bin/gcc<br />
<br />
sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++ 30<br />
sudo update-alternatives --set c++ /usr/bin/g++<br />
</pre><br />
<br />
<pre><br />
update-alternatives --config gcc<br />
update-alternatives --config g++<br />
</pre><br />
<br />
==Realsense==<br />
<pre><br />
sudo apt-key adv --keyserver keys.gnupg.net --recv-key C8B3A55A6F3EFCDE || sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key C8B3A55A6F3EFCDE<br />
sudo add-apt-repository "deb http://realsense-hw-public.s3.amazonaws.com/Debian/apt-repo bionic main" -u<br />
<br />
apt install librealsense2=2.38.1-0~realsense0.3378<br />
apt-mark hold librealsense2<br />
<br />
optinal<br />
<br />
sudo apt-get install librealsense2-dbg<br />
</pre><br />
<br />
==MRPT==<br />
<pre><br />
add-apt-repository ppa:joseluisblancoc/mrpt-stable<br />
apt install libmrpt-dev<br />
(optional) apt install mrpt-apps<br />
</pre><br />
<br />
==Change Lid Close Action==<br />
<pre><br />
echo "HandleLidSwitch=ignore" >> /etc/systemd/logind.conf<br />
systemctl restart systemd-logind.service<br />
</pre><br />
<br />
==Journal gateway==<br />
<pre><br />
apt-get install systemd-journal-remote<br />
systemctl enable systemd-journal-gatewayd.service<br />
</pre><br />
<br />
==/etc/systemd/journald.conf==<br />
<pre><br />
SystemMaxUse=100M<br />
</pre><br />
<br />
==COBOTTA==<br />
<pre><br />
apt install python3-pip python3-psycopg2<br />
python3 -m pip install flask flask_cors<br />
</pre><br />
<br />
==Node-RED==<br />
<pre><br />
apt update<br />
apt install nodejs<br />
apt install npm<br />
npm install –g --unsafe-perm node-red<br />
</pre><br />
<br />
'''Node-RED Pakete'''<br />
<pre><br />
npm install -g node-red-dashboard<br />
npm install -g --unsafe-perm node-red-contrib-iiot-opcua<br />
<br />
Zugriffsrechte für Zertifikate anpassen:<br />
chown -R robotino:robotino /usr/local/lib/node_modules/node-red-contrib-iiot-opcua<br />
</pre><br />
<br />
<br />
==DHCLIENT==<br />
timeout time ;<br />
<br />
The timeout statement determines the amount of time that must pass between the time that the client begins to try to determine its address and the time that it decides that it's not going to be able to contact a server. By default, this timeout is sixty seconds. After the timeout has passed, if there are any static leases defined in the configuration file, or any leases remaining in the lease database that have not yet expired, the client will loop through these leases attempting to validate them, and if it finds one that appears to be valid, it will use that lease's address. If there are no valid static leases or unexpired leases in the lease database, the client will restart the protocol after the defined retry interval. <br />
<br />
retry time;<br />
<br />
The retry statement determines the time that must pass after the client has determined that there is no DHCP server present before it tries again to contact a DHCP server. By default, this is five minutes. <br />
<br />
<pre><br />
timeout 10;<br />
retry 5;<br />
</pre><br />
<br />
==plymouth==<br />
<pre><br />
apt remove plymouth<br />
</pre></div>Verbeekhttps://wiki.openrobotino.org/index.php?title=Ubuntu_20_04_modifications&diff=4647Ubuntu 20 04 modifications2021-10-19T08:19:59Z<p>Verbeek: /* DHCLIENT */</p>
<hr />
<div>Minimum Ubuntu Desktop install<br />
<br />
<pre><br />
sudo su<br />
<br />
passwd<br />
dorp6<br />
<br />
apt install openssh-server vim net-tools<br />
<br />
vim /etc/ssh/sshd_config<br />
PermitRootLogin yes<br />
systemctl restart ssh<br />
<br />
vim /etc/default/grub<br />
GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=0 biosdevname=0 i8042.noaux=1"<br />
GRUB_CMDLINE_LINUX_DEFAULT="noresume"<br />
update-grub<br />
</pre><br />
<br />
<pre><br />
cat << EOF > /root/remove_old_kernels.sh<br />
#!/bin/bash<br />
dpkg -l 'linux-[ihs]*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\([-0-9]*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | tee zu_entfernende_Kernel<br />
cat zu_entfernende_Kernel | xargs sudo apt-get -y purge<br />
rm zu_entfernende_Kernel<br />
EOF<br />
chmod +x /root/remove_old_kernels.sh<br />
</pre><br />
<br />
<pre><br />
e2fsck -f /dev/sda1<br />
tune2fs -U f6fec0c6-bc88-46d3-b125-e450709f1956 /dev/sda1<br />
<br />
replace UUID by f6fec0c6-bc88-46d3-b125-e450709f1956 in /boot/grub/grub.cfg<br />
<br />
echo "RESUME=none" > /etc/initramfs-tools/conf.d/resume<br />
<br />
wget -qO - http://packages.openrobotino.org/keyFile | sudo apt-key add -<br />
echo "deb http://packages2.openrobotino.org focal main" > /etc/apt/sources.list.d/openrobotino.list<br />
<br />
apt install vino<br />
<br />
**** run this as user robotino !!!<br />
gsettings set org.gnome.Vino require-encryption false<br />
<br />
apt install qdirstat gdebi<br />
<br />
add-apt-repository ppa:open62541-team/ppa<br />
apt install libopen62541-1-dev<br />
<br />
sed -i -e 's/enabled=1/enabled=0/g' /etc/default/apport<br />
<br />
apt-get remove unattended-upgrades<br />
apt-get remove update-notifier<br />
</pre><br />
<br />
==cleandist==<br />
<pre><br />
cat << EOF > /root/cleandist.sh<br />
#!/bin/bash<br />
<br />
sed -i "/^lasertype=/c\lasertype=realsense" /etc/robotino/smartsoft_slave.conf<br />
sed -i "/^RobotinoIP=/c\RobotinoIP=192.168.0.1" /etc/robotino/smartsoft_slave.conf<br />
<br />
rm -Rf /var/log/*<br />
apt-get clean<br />
<br />
rm -Rf /home/robotino/.cache<br />
rm /root/*.deb<br />
<br />
history -c<br />
rm /home/robotino/.bash_history<br />
<br />
rm /root/.ssh/authorized_keys<br />
rm /root/.ssh/known_hosts<br />
<br />
rm -Rf /opt/smartsoft/data_master/maps<br />
rm -Rf /opt/smartsoft/data/maps<br />
<br />
rm -f /etc/NetworkManager/system-connections/*<br />
<br />
cat << EOF2 > /etc/NetworkManager/system-connections/eth0<br />
[connection]<br />
id=eth0<br />
uuid=03d1fb6f-efcf-3f57-85e1-85b9cdb9ab9d<br />
type=ethernet<br />
autoconnect-priority=-999<br />
interface-name=eth0<br />
permissions=<br />
secondaries=<br />
timestamp=1547803650<br />
<br />
[ethernet]<br />
duplex=full<br />
mac-address=<br />
mac-address-blacklist=<br />
<br />
[ipv6]<br />
addr-gen-mode=stable-privacy<br />
dns-search=<br />
ip6-privacy=0<br />
method=auto<br />
<br />
[ipv4]<br />
method=auto<br />
address1=<br />
dns=<br />
address2=192.168.0.1/24,0.0.0.0<br />
dns-search=<br />
EOF2<br />
EOF<br />
chmod +x /root/cleandist.sh<br />
</pre><br />
<br />
==gcc==<br />
Wenn kein gcc installiert ist<br />
<pre><br />
apt install gcc-7 g++-7<br />
</pre><br />
<br />
Wenn gcc-9 installiert ist:<br />
<pre><br />
update-alternatives --remove-all gcc <br />
update-alternatives --remove-all g++<br />
<br />
apt install gcc-7 g++-7 gcc-9 g++-9<br />
<br />
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 10<br />
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 20<br />
<br />
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 10<br />
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 20<br />
<br />
sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc 30<br />
sudo update-alternatives --set cc /usr/bin/gcc<br />
<br />
sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++ 30<br />
sudo update-alternatives --set c++ /usr/bin/g++<br />
</pre><br />
<br />
<pre><br />
update-alternatives --config gcc<br />
update-alternatives --config g++<br />
</pre><br />
<br />
==Realsense==<br />
<pre><br />
sudo apt-key adv --keyserver keys.gnupg.net --recv-key C8B3A55A6F3EFCDE || sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key C8B3A55A6F3EFCDE<br />
sudo add-apt-repository "deb http://realsense-hw-public.s3.amazonaws.com/Debian/apt-repo bionic main" -u<br />
<br />
apt install librealsense2=2.38.1-0~realsense0.3378<br />
apt-mark hold librealsense2<br />
<br />
optinal<br />
<br />
sudo apt-get install librealsense2-dbg<br />
</pre><br />
<br />
==MRPT==<br />
<pre><br />
add-apt-repository ppa:joseluisblancoc/mrpt-stable<br />
apt install libmrpt-dev<br />
(optional) apt install mrpt-apps<br />
</pre><br />
<br />
==Change Lid Close Action==<br />
<pre><br />
echo "HandleLidSwitch=ignore" >> /etc/systemd/logind.conf<br />
systemctl restart systemd-logind.service<br />
</pre><br />
<br />
==Journal gateway==<br />
<pre><br />
apt-get install systemd-journal-remote<br />
systemctl enable systemd-journal-gatewayd.service<br />
</pre><br />
<br />
==/etc/systemd/journald.conf==<br />
<pre><br />
SystemMaxUse=100M<br />
</pre><br />
<br />
==COBOTTA==<br />
<pre><br />
apt install python3-pip python3-psycopg2<br />
python3 -m pip install flask flask_cors<br />
</pre><br />
<br />
==Node-RED==<br />
<pre><br />
apt update<br />
apt install nodejs<br />
apt install npm<br />
npm install –g --unsafe-perm node-red<br />
</pre><br />
<br />
'''Node-RED Pakete'''<br />
<pre><br />
npm install -g node-red-dashboard<br />
npm install -g --unsafe-perm node-red-contrib-iiot-opcua<br />
<br />
Zugriffsrechte für Zertifikate anpassen:<br />
chown -R robotino:robotino /usr/local/lib/node_modules/node-red-contrib-iiot-opcua<br />
</pre><br />
<br />
<br />
==DHCLIENT==<br />
timeout time ;<br />
<br />
The timeout statement determines the amount of time that must pass between the time that the client begins to try to determine its address and the time that it decides that it's not going to be able to contact a server. By default, this timeout is sixty seconds. After the timeout has passed, if there are any static leases defined in the configuration file, or any leases remaining in the lease database that have not yet expired, the client will loop through these leases attempting to validate them, and if it finds one that appears to be valid, it will use that lease's address. If there are no valid static leases or unexpired leases in the lease database, the client will restart the protocol after the defined retry interval. <br />
<br />
retry time;<br />
<br />
The retry statement determines the time that must pass after the client has determined that there is no DHCP server present before it tries again to contact a DHCP server. By default, this is five minutes. <br />
<br />
<pre><br />
timeout 10;<br />
retry 5;<br />
</pre><br />
<br />
==plymouth==<br />
<pre><br />
apt remove plymouth<br />
</pre></div>Verbeekhttps://wiki.openrobotino.org/index.php?title=Robotino4_images&diff=4646Robotino4 images2021-10-01T08:15:14Z<p>Verbeek: Created page with "{| border="1" !Name !OS !Image !MD5 |- |[https://doc.openrobotino.org/ChangeLog/images/imageinfo.php?image=4.20.4-smartsoft-3.1.3 4.20.4-smartsoft-3.1.3] |Ubuntu 20.04 |[https..."</p>
<hr />
<div>{| border="1"<br />
!Name<br />
!OS<br />
!Image<br />
!MD5<br />
|-<br />
|[https://doc.openrobotino.org/ChangeLog/images/imageinfo.php?image=4.20.4-smartsoft-3.1.3 4.20.4-smartsoft-3.1.3]<br />
|Ubuntu 20.04<br />
|[https://doc.openrobotino.org/download/tinycore/robotino4image/robotino4-4.20.4-smartsoft-3.1.3.fsa part1] [https://doc.openrobotino.org/download/tinycore/robotino4image/robotino4-4.20.4-smartsoft-3.1.3.f01 part2]<br />
|[https://doc.openrobotino.org/download/tinycore/robotino4image/robotino4-4.20.4-smartsoft-3.1.3.md5sum md5]<br />
|}</div>Verbeekhttps://wiki.openrobotino.org/index.php?title=Robotino_OS&diff=4645Robotino OS2021-10-01T08:12:11Z<p>Verbeek: /* Robotino 3 */</p>
<hr />
<div>==Introduction==<br />
{|class="wikitable" cellpadding="20" vertical-align="top"<br />
|-<br />
|[[Image:cfcard_64.png]]<br />
|Robotino is powered by Linux (Ubuntu). But it is also possible to install Microsoft Windows on Robotino.<br />
|}<br />
<br />
==Packages==<br />
In addition to the standard Ubuntu operating system there are packages installed that make up the Robotino infrastructure. These packages can be installed from the [[Debrepository|Robotino repository]].<br />
<br />
{|class="wikitable" cellpadding="20"<br />
!Package<br />
!Description<br />
!Changelog<br />
!16.04<br />
!18.04<br />
!20.04<br />
!win<br />
|-<br />
|-<br />
|robotino-daemons<br />
|Contains apps for hardware abstraction and communication to the hardware<br />
|[https://doc.openrobotino.org/ChangeLog/daemons.txt Changelog]<br />
|[https://packages2.openrobotino.org/pool/xenial/main/r/robotino-daemons/ link]<br />
|[https://packages2.openrobotino.org/pool/bionic/main/r/robotino-daemons/ link]<br />
|[https://packages2.openrobotino.org/pool/focal/main/r/robotino-daemons/ link]<br />
|[https://packages.openrobotino.org/windows/robotino-daemons/ link]<br />
|-<br />
|robotino-dev<br />
|Robotino specific communication library<br />
|[https://doc.openrobotino.org/ChangeLog/dev.txt Changelog]<br />
|[https://packages2.openrobotino.org/pool/xenial/main/r/robotino-dev/ link]<br />
|[https://packages2.openrobotino.org/pool/bionic/main/r/robotino-dev/ link]<br />
|[https://packages2.openrobotino.org/pool/focal/main/r/robotino-dev/ link]<br />
|na<br />
|-<br />
|rec-rpc<br />
|General communication library<br />
|[https://doc.openrobotino.org/ChangeLog/rec_rpc.txt Changelog]<br />
|[https://packages2.openrobotino.org/pool/xenial/main/r/rec-rpc/ link]<br />
|[https://packages2.openrobotino.org/pool/bionic/main/r/rec-rpc/ link]<br />
|[https://packages2.openrobotino.org/pool/focal/main/r/rec-rpc/ link]<br />
|na<br />
|-<br />
|robotino-api2<br />
|[[API2|C/C++ programming library]]<br />
|[https://doc.openrobotino.org/ChangeLog/api2.txt Changelog]<br />
|[https://packages2.openrobotino.org/pool/xenial/main/r/robotino-api2/ link]<br />
|[https://packages2.openrobotino.org/pool/bionic/main/r/robotino-api2/ link]<br />
|[https://packages2.openrobotino.org/pool/focal/main/r/robotino-api2/ link]<br />
|[https://packages.openrobotino.org/windows/robotino-api2/ link]<br />
|<br />
|-<br />
|robview4<br />
|[https://www.festo-didactic.com/int-en/services/robotino/programming/robotino-view Graphical programming of Robotino]<br />
|[https://doc.openrobotino.org/ChangeLog/RobotinoView.txt Changelog]<br />
|na<br />
|[https://packages2.openrobotino.org/pool/bionic/main/r/robview4/ link]<br />
|[https://packages2.openrobotino.org/pool/focal/main/r/robview4/ link]<br />
|[https://packages.openrobotino.org/windows/robview/ link]<br />
|-<br />
|robfactory<br />
|Setup and control utility for Robotino in industrial environments<br />
|[https://doc.openrobotino.org/ChangeLog/RobotinoFactory.txt Changelog]<br />
|[https://packages2.openrobotino.org/pool/xenial/main/r/robfactory/ link]<br />
|[https://packages2.openrobotino.org/pool/bionic/main/r/robfactory/ link]<br />
|[https://packages2.openrobotino.org/pool/focal/main/r/robfactory/ link]<br />
|[https://packages.openrobotino.org/windows/robfactory/ link]<br />
|}<br />
<br />
==Network interfaces==<br />
{|class="wikitable" cellpadding="20"<br />
!Port<br />
!Description<br />
|-<br />
|80<br />
|Web-Interface and [[Rest api|REST-API]]<br />
|-<br />
|8153<br />
|[[SmartRobotinoMasterRPCBridge]]<br />
|-<br />
|8154<br />
|[[SmartRobotinoRPCBridge]]<br />
|-<br />
|8155<br />
|[[SmartPurePursuitNavigation]]<br />
|-<br />
|8156<br />
|[[SmartNavigationPlanner]]<br />
|-<br />
|8160<br />
|SmartSoftMasterVersion service<br />
|-<br />
|8180<br />
|SmartFestoFleetCom [[SmartJobCenter|REST-API]] service<br />
|-<br />
|8280<br />
|COBOTTA [[COBOTTA_Rest_API|REST-API]]<br />
|-<br />
|12080<br />
|rpcd interface for C++ [[API2|API]]<br />
|-<br />
|19531<br />
|Journal of Robotino<br />
|}<br />
<br />
==Robotino 4==<br />
*[[Robotino4_images|OS Images]]<br />
<br />
==Robotino 3==<br />
*[[robotino3_usb_restore|Restore from bootable USB stick]]<br />
*[[robotino3_usb_create_image|Create image for bootable USB stick]]<br />
*[[Ubuntu_12_04_modifications|Ubuntu 12.04 modifications]]<br />
*[[Ubuntu_16_04_modifications|Ubuntu 16.04 modifications]]<br />
*[[Ubuntu_18_04_modifications|Ubuntu 18.04 modifications]]<br />
*[[Ubuntu_20_04_modifications|Ubuntu 20.04 modifications]]<br />
*[[Raspbian_Lite|Raspbian Lite]]<br />
*[[robotino3_wiki_local_install|Install wiki.openrobotino.org locally on Robotino]]<br />
*[[Robotino3_images|OS Images]]<br />
*[[Robotino3_language|OS language]]<br />
*[[cutom_tinycore|Create custom tinycore image]]<br />
<br />
==Robotino 2==<br />
* [[CF card]]<br />
<br />
==Windows==<br />
A subset of Robotino's functionality is provided by the [http://packages.openrobotino.org/windows/robotino-daemons/ robotino-daemons for Windows] installer. It includes<br />
*rpcd: Robotino's central message dispatcher<br />
*controld3: Access to Robotino's Motors and IOs.<br />
*laserd: Support for Hokuyo URG laser rangefinders.<br />
*restapid: Robotino's web-interface and Robotino's [[Rest_api|REST-API]].<br />
The main reason for running Windows on Robotino is to run Matlab or LabView directly on Robotino. This gives you fast access to the Robotino platform and local access to other devices that are handled directly by Matlab or LabView.<br />
<br />
On Windows 10 you have to disable ''Signed Driver Enforcement'':<br />
<pre><br />
BCDEDIT -Set LoadOptions DDISABLE_INTEGRITY_CHECKS<br />
BCDEDIT -Set TESTSIGNING ON<br />
</pre><br />
After installing the daemons package you can reenable it:<br />
<pre><br />
BCDEDIT –Set LoadOptions EENABLE_INTEGRITY_CHECKS<br />
BCDEDIT –Set TESTSIGNING OFF<br />
</pre><br />
<br />
You also have to disable Microsoft BallPoint driver. If not USB devices might be detected as serial mouse:<br />
<pre><br />
REG ADD "HKLM\SYSTEM\CurrentControlSet\Services\sermouse" /V Start /T REG_DWORD /F /D 4<br />
</pre></div>Verbeekhttps://wiki.openrobotino.org/index.php?title=Robotino3_images&diff=4644Robotino3 images2021-10-01T08:09:51Z<p>Verbeek: </p>
<hr />
<div>{| border="1"<br />
!Name<br />
!OS<br />
!Image<br />
!MD5<br />
|-<br />
|[https://doc.openrobotino.org/ChangeLog/images/imageinfo.php?image=4.0.11-smartsoft-2.5.3 4.0.11-smartsoft-2.5.3]<br />
|Ubuntu 18.04<br />
|[https://doc.openrobotino.org/download/tinycore/robotino4image/robotino4-4.0.11-smartsoft-2.5.3.fsa image]<br />
|[https://doc.openrobotino.org/download/tinycore/robotino4image/robotino4-4.0.11-smartsoft-2.5.3.fsa.md5sum md5]<br />
|-<br />
|[https://doc.openrobotino.org/ChangeLog/images/imageinfo.php?image=4.0.10-smartsoft-2.5.1 4.0.10-smartsoft-2.5.1]<br />
|Ubuntu 18.04<br />
|[https://doc.openrobotino.org/download/tinycore/robotino4image/robotino4-4.0.10-smartsoft-2.5.1.fsa image]<br />
|[https://doc.openrobotino.org/download/tinycore/robotino4image/robotino4-4.0.10-smartsoft-2.5.1.fsa.md5sum md5]<br />
|-<br />
|[https://doc.openrobotino.org/ChangeLog/images/imageinfo.php?image=4.0.9-smartsoft-2.5.0 4.0.9-smartsoft-2.5.0]<br />
|Ubuntu 18.04<br />
|[https://doc.openrobotino.org/download/tinycore/robotino4image/robotino4-4.0.9-smartsoft-2.5.0.fsa part1] [https://doc.openrobotino.org/download/tinycore/robotino4image/robotino4-4.0.9-smartsoft-2.5.0.f01 part2]<br />
|[https://doc.openrobotino.org/download/tinycore/robotino4image/robotino4-4.0.9-smartsoft-2.5.0.md5sum md5]<br />
|-<br />
|[https://doc.openrobotino.org/ChangeLog/images/imageinfo.php?image=4.0.8-smartsoft-2.4.7 4.0.8-smartsoft-2.4.7]<br />
|Ubuntu 18.04<br />
|[https://doc.openrobotino.org/download/tinycore/robotino4image/robotino4-4.0.8-smartsoft-2.4.7.fsa image]<br />
|[https://doc.openrobotino.org/download/tinycore/robotino4image/robotino4-4.0.8-smartsoft-2.4.7.fsa.md5sum md5]<br />
|-<br />
|[https://doc.openrobotino.org/ChangeLog/images/imageinfo.php?image=4.0.7-smartsoft-2.4.5 4.0.7-smartsoft-2.4.5]<br />
|Ubuntu 18.04<br />
|[https://doc.openrobotino.org/download/tinycore/robotino4image/robotino4-4.0.7-smartsoft-2.4.5.fsa image]<br />
|[https://doc.openrobotino.org/download/tinycore/robotino4image/robotino4-4.0.7-smartsoft-2.4.5.fsa.md5sum md5]<br />
|-<br />
|[https://doc.openrobotino.org/ChangeLog/images/imageinfo.php?image=4.0.6-smartsoft-2.4.4 4.0.6-smartsoft-2.4.4]<br />
|Ubuntu 18.04<br />
|[https://doc.openrobotino.org/download/tinycore/robotino4image/robotino4-4.0.6-smartsoft-2.4.4.fsa image]<br />
|[https://doc.openrobotino.org/download/tinycore/robotino4image/robotino4-4.0.6-smartsoft-2.4.4.fsa.md5sum md5]<br />
|-<br />
|[https://doc.openrobotino.org/ChangeLog/images/imageinfo.php?image=4.0.5-smartsoft-2.4.4 4.0.5-smartsoft-2.4.4]<br />
|Ubuntu 18.04<br />
|[https://doc.openrobotino.org/download/tinycore/robotino4image/robotino4-4.0.5-smartsoft-2.4.4.fsa image]<br />
|[https://doc.openrobotino.org/download/tinycore/robotino4image/robotino4-4.0.5-smartsoft-2.4.4.fsa.md5sum md5]<br />
|-<br />
|[https://doc.openrobotino.org/ChangeLog/images/imageinfo.php?image=4.0.4-smartsoft-2.4.4 4.0.4-smartsoft-2.4.4]<br />
|Ubuntu 18.04<br />
|[https://doc.openrobotino.org/download/tinycore/robotino4image/robotino4-4.0.4-smartsoft-2.4.4.fsa image]<br />
|[https://doc.openrobotino.org/download/tinycore/robotino4image/robotino4-4.0.4-smartsoft-2.4.4.fsa.md5sum md5]<br />
|-<br />
|[https://doc.openrobotino.org/ChangeLog/images/imageinfo.php?image=4.0.3 4.0.3]<br />
|Ubuntu 18.04<br />
|[https://doc.openrobotino.org/download/tinycore/robotino4image/robotino4-4.0.3.fsa image]<br />
|[https://doc.openrobotino.org/download/tinycore/robotino4image/robotino4-4.0.3.fsa.md5sum md5]<br />
|-<br />
|[https://doc.openrobotino.org/ChangeLog/images/imageinfo.php?image=4.0.2-smartsoft-2.4.3 4.0.2-smartsoft-2.4.3]<br />
|Ubuntu 18.04<br />
|[https://doc.openrobotino.org/download/tinycore/robotino4image/robotino4-4.0.2-smartsoft-2.4.3.fsa image]<br />
|[https://doc.openrobotino.org/download/tinycore/robotino4image/robotino4-4.0.2-smartsoft-2.4.3.fsa.md5sum md5]<br />
|-<br />
|[https://doc.openrobotino.org/ChangeLog/images/imageinfo.php?image=4.0.2 4.0.2]<br />
|Ubuntu 18.04<br />
|[https://doc.openrobotino.org/download/tinycore/robotino4image/robotino4-4.0.2.fsa image]<br />
|[https://doc.openrobotino.org/download/tinycore/robotino4image/robotino4-4.0.2.fsa.md5sum md5]<br />
|-<br />
|[https://doc.openrobotino.org/ChangeLog/images/imageinfo.php?image=4.0.1 4.0.1]<br />
|Ubuntu 18.04<br />
|[https://doc.openrobotino.org/download/tinycore/robotino4image/robotino4-4.0.1.fsa image]<br />
|[https://doc.openrobotino.org/download/tinycore/robotino4image/robotino4-4.0.1.fsa.md5sum md5]<br />
|-<br />
|[https://doc.openrobotino.org/ChangeLog/images/imageinfo.php?image=4.0.0-smartsoft-2.4.2 4.0.0-smartsoft-2.4.2]<br />
|Ubuntu 18.04<br />
|[https://doc.openrobotino.org/download/tinycore/robotino4image/robotino4-4.0.0-smartsoft-2.4.2.fsa image]<br />
|[https://doc.openrobotino.org/download/tinycore/robotino4image/robotino4-4.0.0-smartsoft-2.4.2.fsa.md5sum md5]<br />
|-<br />
|[https://doc.openrobotino.org/ChangeLog/images/imageinfo.php?image=4.0.0 4.0.0]<br />
|Ubuntu 18.04<br />
|[https://doc.openrobotino.org/download/tinycore/robotino4image/robotino4-4.0.0.fsa image]<br />
|[https://doc.openrobotino.org/download/tinycore/robotino4image/robotino4-4.0.0.fsa.md5sum md5]<br />
|-<br />
|[https://doc.openrobotino.org/ChangeLog/images/imageinfo.php?image=3.1.6-smartsoft-2.3.4 3.1.6-smartsoft-2.3.4]<br />
|Ubuntu 16.04<br />
|[https://doc.openrobotino.org/download/tinycore/robotino3image/robotino3-3.1.6-smartsoft-2.3.4.fsa image]<br />
|[https://doc.openrobotino.org/download/tinycore/robotino3image/robotino3-3.1.6-smartsoft-2.3.4.fsa.md5sum md5]<br />
|-<br />
|[https://doc.openrobotino.org/ChangeLog/images/imageinfo.php?image=3.1.5-smartsoft-2.3.3 3.1.5-smartsoft-2.3.3]<br />
|Ubuntu 16.04<br />
|[https://doc.openrobotino.org/download/tinycore/robotino3image/robotino3-3.1.5-smartsoft-2.3.3.fsa image]<br />
|[https://doc.openrobotino.org/download/tinycore/robotino3image/robotino3-3.1.5-smartsoft-2.3.3.fsa.md5sum md5]<br />
|-<br />
|3.1.5<br />
|Ubuntu 16.04<br />
|[https://doc.openrobotino.org/download/tinycore/robotino3image/robotino3-3.1.5.fsa image]<br />
|[https://doc.openrobotino.org/download/tinycore/robotino3image/robotino3-3.1.5.fsa.md5sum md5]<br />
|-<br />
|1.2.4<br />
|Ubuntu 12.04<br />
|[https://doc.openrobotino.org/download/tinycore/robotino3image/robotino3-1.2.4.fsa image]<br />
|<br />
|}</div>Verbeekhttps://wiki.openrobotino.org/index.php?title=Cutom_tinycore&diff=4640Cutom tinycore2021-09-22T09:25:08Z<p>Verbeek: /* Make ISO image */</p>
<hr />
<div>==Overview==<br />
Based on [https://fabianstumpf.de/articles/tinycore_images.htm]<br />
<br />
<pre><br />
sudo apt install qemu-utils qemu-system-x86 grub-pc-bin<br />
<br />
mkdir tinycore<br />
cd tinycore<br />
wget http://tinycorelinux.net/12.x/x86/release/TinyCore-current.iso<br />
<br />
qemu-img create -f qcow2 core-image.img 64M<br />
</pre><br />
<br />
==Mount the image==<br />
<pre><br />
sudo modprobe nbd max_part=8<br />
sudo qemu-nbd -c /dev/nbd0 core-image.img<br />
</pre><br />
<br />
<pre><br />
sudo mkdir /media/cdrom<br />
sudo mount TinyCore-current.iso /media/cdrom<br />
<br />
sudo fdisk /dev/nbd0<br />
n<br />
p<br />
1<br />
enter<br />
enter<br />
p<br />
w<br />
<br />
sudo mkfs.ext2 /dev/nbd0p1<br />
<br />
sudo mkdir /media/image<br />
sudo mount /dev/nbd0p1 /media/image<br />
<br />
sudo mkdir /media/image/boot<br />
sudo mkdir -p /media/image/tce/optional<br />
<br />
sudo cp /media/cdrom/boot/core.gz /media/image/boot/<br />
sudo cp /media/cdrom/boot/vmlinuz /media/image/boot/<br />
sudo touch /media/image/tce/onboot.lst<br />
<br />
sudo grub-install --boot-directory=/media/image/boot /dev/nbd0<br />
</pre><br />
<br />
==Unmount the image==<br />
<pre><br />
sudo umount /dev/nbd0p1<br />
sudo qemu-nbd -d /dev/nbd0<br />
</pre><br />
<br />
<pre><br />
qemu-system-i386 core-image.img<br />
<br />
linux (hd0,msdos1)/boot/vmlinuz<br />
initrd (hd0,msdos1)/boot/core.gz<br />
boot<br />
<br />
sudo qemu-nbd -c /dev/nbd0 core-image.img<br />
sudo mount /dev/nbd0p1 /media/image<br />
<br />
sudo bash -c "cat <<EOF > /media/image/boot/grub/grub.cfg<br />
set timeout=3<br />
set root='hd0,msdos1'<br />
menuentry 'Boot TinyCore' {<br />
linux /boot/vmlinuz waitusb=5 superuser<br />
initrd /boot/core.gz<br />
}<br />
EOF"<br />
<br />
</pre><br />
<br />
If you want to pass the boot process some arguments, append them after the path to the linux kernel. TinyCore supports a [http://distro.ibiblio.org/tinycorelinux/faq.html#bootcodes bunch of those], here are some of the more useful:<br />
<br />
{| border="1"<br />
!Parameter<br />
!Usage Example<br />
!Effect<br />
|-<br />
|waitusb<br />
|waitusb=5<br />
|Wait for USB devices to become ready before mounting. This might help if the image fails to load its extensions.<br />
|-<br />
|norestore<br />
|norestore<br />
|Do not restore from persistence file (explained later in this guide)<br />
|-<br />
|lst<br />
|lst=ext.lst<br />
|Load extensions specified by ext.lst<br />
|-<br />
|superuser<br />
|superuser<br />
|Start with a root shell<br />
|-<br />
|quiet<br />
|quiet<br />
|Suppress much of the debug information during boot<br />
|}<br />
<br />
==qemu networking==<br />
<pre><br />
echo "allow virbr0" > /etc/qemu/bridge.conf<br />
<br />
sudo qemu-system-i386 core-image.img -net bridge,br=virbr0 -net nic,model=virtio<br />
</pre><br />
<br />
Use nm-connection-editor to configure virbr0<br />
<br />
==robotinorestore==<br />
<pre><br />
tce-load -wi compiletc squashfs-tools submitqc<br />
</pre><br />
<br />
==Setup permissions==<br />
<pre><br />
cd /tmp/robotinorestore<br />
chown -R root:root .<br />
chown tc:staff usr/local/tce.installed/robotinorestore<br />
chmod 755 usr/local/etc/profile.d/robotinorestore.sh<br />
chmod 755 usr/local/tce.installed/robotinorestore<br />
find -L . \<br />
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \<br />
-o -perm 511 \) -exec chmod 755 {} \; -o \<br />
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \<br />
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;<br />
chown root:staff usr/local/tce.installed<br />
chmod 775 usr/local/tce.installed<br />
</pre><br />
<br />
==Build extension==<br />
<pre><br />
mksquashfs /tmp/robotinorestore/ /tmp/robotinorestore.tcz<br />
</pre><br />
<br />
==Make ISO image==<br />
<pre><br />
wget https://mirrors.edge.kernel.org/pub/linux/utils/boot/syslinux/syslinux-6.03.tar.gz<br />
tar xvf syslinux-6.03.tar.gz<br />
mkdir tinycore-cdrom<br />
<br />
cp syslinux-6.03/bios/core/isolinux.bin tinycore-cdrom/isolinux/<br />
cp syslinux-6.03/bios/com32/elflink/ldlinux/ldlinux.c32 tinycore-cdrom/isolinux/<br />
<br />
cat <<EOF > tinycore-cdrom/isolinux/isolinux.cfg<br />
display boot.msg<br />
default microcore<br />
label microcore<br />
kernel /boot/vmlinuz<br />
initrd /boot/core.gz<br />
append loglevel=3 nofstab<br />
<br />
label mc<br />
kernel /boot/vmlinuz<br />
append initrd=/boot/core.gz loglevel=3<br />
implicit 0 <br />
prompt 1 <br />
timeout 5<br />
F1 boot.msg<br />
F2 f2<br />
F3 f3<br />
F4 f4<br />
EOF<br />
<br />
xorriso -as mkisofs -iso-level 3 -full-iso9660-filenames -volid "Robotino4Inst" \<br />
-eltorito-boot isolinux/isolinux.bin -boot-load-size 4 \<br />
-eltorito-catalog isolinux/boot.cat -boot-info-table \<br />
-no-emul-boot -output "CoreCustom20210922.iso" "tinycore-cdrom"<br />
</pre></div>Verbeekhttps://wiki.openrobotino.org/index.php?title=Cutom_tinycore&diff=4639Cutom tinycore2021-09-22T09:22:26Z<p>Verbeek: /* Make ISO image */</p>
<hr />
<div>==Overview==<br />
Based on [https://fabianstumpf.de/articles/tinycore_images.htm]<br />
<br />
<pre><br />
sudo apt install qemu-utils qemu-system-x86 grub-pc-bin<br />
<br />
mkdir tinycore<br />
cd tinycore<br />
wget http://tinycorelinux.net/12.x/x86/release/TinyCore-current.iso<br />
<br />
qemu-img create -f qcow2 core-image.img 64M<br />
</pre><br />
<br />
==Mount the image==<br />
<pre><br />
sudo modprobe nbd max_part=8<br />
sudo qemu-nbd -c /dev/nbd0 core-image.img<br />
</pre><br />
<br />
<pre><br />
sudo mkdir /media/cdrom<br />
sudo mount TinyCore-current.iso /media/cdrom<br />
<br />
sudo fdisk /dev/nbd0<br />
n<br />
p<br />
1<br />
enter<br />
enter<br />
p<br />
w<br />
<br />
sudo mkfs.ext2 /dev/nbd0p1<br />
<br />
sudo mkdir /media/image<br />
sudo mount /dev/nbd0p1 /media/image<br />
<br />
sudo mkdir /media/image/boot<br />
sudo mkdir -p /media/image/tce/optional<br />
<br />
sudo cp /media/cdrom/boot/core.gz /media/image/boot/<br />
sudo cp /media/cdrom/boot/vmlinuz /media/image/boot/<br />
sudo touch /media/image/tce/onboot.lst<br />
<br />
sudo grub-install --boot-directory=/media/image/boot /dev/nbd0<br />
</pre><br />
<br />
==Unmount the image==<br />
<pre><br />
sudo umount /dev/nbd0p1<br />
sudo qemu-nbd -d /dev/nbd0<br />
</pre><br />
<br />
<pre><br />
qemu-system-i386 core-image.img<br />
<br />
linux (hd0,msdos1)/boot/vmlinuz<br />
initrd (hd0,msdos1)/boot/core.gz<br />
boot<br />
<br />
sudo qemu-nbd -c /dev/nbd0 core-image.img<br />
sudo mount /dev/nbd0p1 /media/image<br />
<br />
sudo bash -c "cat <<EOF > /media/image/boot/grub/grub.cfg<br />
set timeout=3<br />
set root='hd0,msdos1'<br />
menuentry 'Boot TinyCore' {<br />
linux /boot/vmlinuz waitusb=5 superuser<br />
initrd /boot/core.gz<br />
}<br />
EOF"<br />
<br />
</pre><br />
<br />
If you want to pass the boot process some arguments, append them after the path to the linux kernel. TinyCore supports a [http://distro.ibiblio.org/tinycorelinux/faq.html#bootcodes bunch of those], here are some of the more useful:<br />
<br />
{| border="1"<br />
!Parameter<br />
!Usage Example<br />
!Effect<br />
|-<br />
|waitusb<br />
|waitusb=5<br />
|Wait for USB devices to become ready before mounting. This might help if the image fails to load its extensions.<br />
|-<br />
|norestore<br />
|norestore<br />
|Do not restore from persistence file (explained later in this guide)<br />
|-<br />
|lst<br />
|lst=ext.lst<br />
|Load extensions specified by ext.lst<br />
|-<br />
|superuser<br />
|superuser<br />
|Start with a root shell<br />
|-<br />
|quiet<br />
|quiet<br />
|Suppress much of the debug information during boot<br />
|}<br />
<br />
==qemu networking==<br />
<pre><br />
echo "allow virbr0" > /etc/qemu/bridge.conf<br />
<br />
sudo qemu-system-i386 core-image.img -net bridge,br=virbr0 -net nic,model=virtio<br />
</pre><br />
<br />
Use nm-connection-editor to configure virbr0<br />
<br />
==robotinorestore==<br />
<pre><br />
tce-load -wi compiletc squashfs-tools submitqc<br />
</pre><br />
<br />
==Setup permissions==<br />
<pre><br />
cd /tmp/robotinorestore<br />
chown -R root:root .<br />
chown tc:staff usr/local/tce.installed/robotinorestore<br />
chmod 755 usr/local/etc/profile.d/robotinorestore.sh<br />
chmod 755 usr/local/tce.installed/robotinorestore<br />
find -L . \<br />
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \<br />
-o -perm 511 \) -exec chmod 755 {} \; -o \<br />
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \<br />
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;<br />
chown root:staff usr/local/tce.installed<br />
chmod 775 usr/local/tce.installed<br />
</pre><br />
<br />
==Build extension==<br />
<pre><br />
mksquashfs /tmp/robotinorestore/ /tmp/robotinorestore.tcz<br />
</pre><br />
<br />
==Make ISO image==<br />
<pre><br />
wget https://mirrors.edge.kernel.org/pub/linux/utils/boot/syslinux/syslinux-6.03.tar.gz<br />
tar xvf syslinux-6.03.tar.gz<br />
mkdir tinycore-cdrom<br />
<br />
cp syslinux-6.03/bios/core/isolinux.bin tinycore-cdrom/isolinux/<br />
cp syslinux-6.03/bios/com32/elflink/ldlinux/ldlinux.c32 tinycore-cdrom/isolinux/<br />
<br />
cat <<EOF > tinycore-cdrom/isolinux/isolinux.cfg<br />
display boot.msg<br />
default microcore<br />
label microcore<br />
kernel /boot/vmlinuz<br />
append initrd /boot/core.gz loglevel=3 nofstab<br />
implicit 0 <br />
prompt 1 <br />
timeout 3<br />
EOF<br />
<br />
xorriso -as mkisofs -iso-level 3 -full-iso9660-filenames -volid "Robotino4Inst" \<br />
-eltorito-boot isolinux/isolinux.bin -boot-load-size 4 \<br />
-eltorito-catalog isolinux/boot.cat -boot-info-table \<br />
-no-emul-boot -output "CoreCustom20210922.iso" "tinycore-cdrom"<br />
</pre></div>Verbeekhttps://wiki.openrobotino.org/index.php?title=Cutom_tinycore&diff=4638Cutom tinycore2021-09-22T09:13:56Z<p>Verbeek: /* Make ISO image */</p>
<hr />
<div>==Overview==<br />
Based on [https://fabianstumpf.de/articles/tinycore_images.htm]<br />
<br />
<pre><br />
sudo apt install qemu-utils qemu-system-x86 grub-pc-bin<br />
<br />
mkdir tinycore<br />
cd tinycore<br />
wget http://tinycorelinux.net/12.x/x86/release/TinyCore-current.iso<br />
<br />
qemu-img create -f qcow2 core-image.img 64M<br />
</pre><br />
<br />
==Mount the image==<br />
<pre><br />
sudo modprobe nbd max_part=8<br />
sudo qemu-nbd -c /dev/nbd0 core-image.img<br />
</pre><br />
<br />
<pre><br />
sudo mkdir /media/cdrom<br />
sudo mount TinyCore-current.iso /media/cdrom<br />
<br />
sudo fdisk /dev/nbd0<br />
n<br />
p<br />
1<br />
enter<br />
enter<br />
p<br />
w<br />
<br />
sudo mkfs.ext2 /dev/nbd0p1<br />
<br />
sudo mkdir /media/image<br />
sudo mount /dev/nbd0p1 /media/image<br />
<br />
sudo mkdir /media/image/boot<br />
sudo mkdir -p /media/image/tce/optional<br />
<br />
sudo cp /media/cdrom/boot/core.gz /media/image/boot/<br />
sudo cp /media/cdrom/boot/vmlinuz /media/image/boot/<br />
sudo touch /media/image/tce/onboot.lst<br />
<br />
sudo grub-install --boot-directory=/media/image/boot /dev/nbd0<br />
</pre><br />
<br />
==Unmount the image==<br />
<pre><br />
sudo umount /dev/nbd0p1<br />
sudo qemu-nbd -d /dev/nbd0<br />
</pre><br />
<br />
<pre><br />
qemu-system-i386 core-image.img<br />
<br />
linux (hd0,msdos1)/boot/vmlinuz<br />
initrd (hd0,msdos1)/boot/core.gz<br />
boot<br />
<br />
sudo qemu-nbd -c /dev/nbd0 core-image.img<br />
sudo mount /dev/nbd0p1 /media/image<br />
<br />
sudo bash -c "cat <<EOF > /media/image/boot/grub/grub.cfg<br />
set timeout=3<br />
set root='hd0,msdos1'<br />
menuentry 'Boot TinyCore' {<br />
linux /boot/vmlinuz waitusb=5 superuser<br />
initrd /boot/core.gz<br />
}<br />
EOF"<br />
<br />
</pre><br />
<br />
If you want to pass the boot process some arguments, append them after the path to the linux kernel. TinyCore supports a [http://distro.ibiblio.org/tinycorelinux/faq.html#bootcodes bunch of those], here are some of the more useful:<br />
<br />
{| border="1"<br />
!Parameter<br />
!Usage Example<br />
!Effect<br />
|-<br />
|waitusb<br />
|waitusb=5<br />
|Wait for USB devices to become ready before mounting. This might help if the image fails to load its extensions.<br />
|-<br />
|norestore<br />
|norestore<br />
|Do not restore from persistence file (explained later in this guide)<br />
|-<br />
|lst<br />
|lst=ext.lst<br />
|Load extensions specified by ext.lst<br />
|-<br />
|superuser<br />
|superuser<br />
|Start with a root shell<br />
|-<br />
|quiet<br />
|quiet<br />
|Suppress much of the debug information during boot<br />
|}<br />
<br />
==qemu networking==<br />
<pre><br />
echo "allow virbr0" > /etc/qemu/bridge.conf<br />
<br />
sudo qemu-system-i386 core-image.img -net bridge,br=virbr0 -net nic,model=virtio<br />
</pre><br />
<br />
Use nm-connection-editor to configure virbr0<br />
<br />
==robotinorestore==<br />
<pre><br />
tce-load -wi compiletc squashfs-tools submitqc<br />
</pre><br />
<br />
==Setup permissions==<br />
<pre><br />
cd /tmp/robotinorestore<br />
chown -R root:root .<br />
chown tc:staff usr/local/tce.installed/robotinorestore<br />
chmod 755 usr/local/etc/profile.d/robotinorestore.sh<br />
chmod 755 usr/local/tce.installed/robotinorestore<br />
find -L . \<br />
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \<br />
-o -perm 511 \) -exec chmod 755 {} \; -o \<br />
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \<br />
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;<br />
chown root:staff usr/local/tce.installed<br />
chmod 775 usr/local/tce.installed<br />
</pre><br />
<br />
==Build extension==<br />
<pre><br />
mksquashfs /tmp/robotinorestore/ /tmp/robotinorestore.tcz<br />
</pre><br />
<br />
==Make ISO image==<br />
<pre><br />
wget https://mirrors.edge.kernel.org/pub/linux/utils/boot/syslinux/syslinux-6.03.tar.gz<br />
tar xvf syslinux-6.03.tar.gz<br />
mkdir tinycore-cdrom<br />
<br />
cp syslinux-6.03/bios/core/isolinux.bin tinycore-cdrom/isolinux/<br />
cp syslinux-6.03/bios/com32/elflink/ldlinux/ldlinux.c32 tinycore-cdrom/isolinux/<br />
<br />
cat <<EOF > tinycore-cdrom/isolinux/isolinux.cfg<br />
display boot.msg<br />
default microcore<br />
label microcore<br />
kernel /boot/vmlinuz<br />
append initrd /boot/core.gz loglevel=3 nofstab<br />
<br />
label mc<br />
kernel /boot/vmlinuz<br />
append initrd=/boot/core.gz loglevel=3<br />
implicit 0 <br />
prompt 1 <br />
timeout 30<br />
F1 boot.msg<br />
F2 f2<br />
F3 f3<br />
F4 f4<br />
EOF<br />
<br />
xorriso -as mkisofs -iso-level 3 -full-iso9660-filenames -volid "Robotino4Inst" \<br />
-eltorito-boot isolinux/isolinux.bin -boot-load-size 4 \<br />
-eltorito-catalog isolinux/boot.cat -boot-info-table \<br />
-no-emul-boot -output "CoreCustom20210922.iso" "tinycore-cdrom"<br />
</pre></div>Verbeekhttps://wiki.openrobotino.org/index.php?title=Cutom_tinycore&diff=4637Cutom tinycore2021-09-22T08:57:35Z<p>Verbeek: /* Make ISO image */</p>
<hr />
<div>==Overview==<br />
Based on [https://fabianstumpf.de/articles/tinycore_images.htm]<br />
<br />
<pre><br />
sudo apt install qemu-utils qemu-system-x86 grub-pc-bin<br />
<br />
mkdir tinycore<br />
cd tinycore<br />
wget http://tinycorelinux.net/12.x/x86/release/TinyCore-current.iso<br />
<br />
qemu-img create -f qcow2 core-image.img 64M<br />
</pre><br />
<br />
==Mount the image==<br />
<pre><br />
sudo modprobe nbd max_part=8<br />
sudo qemu-nbd -c /dev/nbd0 core-image.img<br />
</pre><br />
<br />
<pre><br />
sudo mkdir /media/cdrom<br />
sudo mount TinyCore-current.iso /media/cdrom<br />
<br />
sudo fdisk /dev/nbd0<br />
n<br />
p<br />
1<br />
enter<br />
enter<br />
p<br />
w<br />
<br />
sudo mkfs.ext2 /dev/nbd0p1<br />
<br />
sudo mkdir /media/image<br />
sudo mount /dev/nbd0p1 /media/image<br />
<br />
sudo mkdir /media/image/boot<br />
sudo mkdir -p /media/image/tce/optional<br />
<br />
sudo cp /media/cdrom/boot/core.gz /media/image/boot/<br />
sudo cp /media/cdrom/boot/vmlinuz /media/image/boot/<br />
sudo touch /media/image/tce/onboot.lst<br />
<br />
sudo grub-install --boot-directory=/media/image/boot /dev/nbd0<br />
</pre><br />
<br />
==Unmount the image==<br />
<pre><br />
sudo umount /dev/nbd0p1<br />
sudo qemu-nbd -d /dev/nbd0<br />
</pre><br />
<br />
<pre><br />
qemu-system-i386 core-image.img<br />
<br />
linux (hd0,msdos1)/boot/vmlinuz<br />
initrd (hd0,msdos1)/boot/core.gz<br />
boot<br />
<br />
sudo qemu-nbd -c /dev/nbd0 core-image.img<br />
sudo mount /dev/nbd0p1 /media/image<br />
<br />
sudo bash -c "cat <<EOF > /media/image/boot/grub/grub.cfg<br />
set timeout=3<br />
set root='hd0,msdos1'<br />
menuentry 'Boot TinyCore' {<br />
linux /boot/vmlinuz waitusb=5 superuser<br />
initrd /boot/core.gz<br />
}<br />
EOF"<br />
<br />
</pre><br />
<br />
If you want to pass the boot process some arguments, append them after the path to the linux kernel. TinyCore supports a [http://distro.ibiblio.org/tinycorelinux/faq.html#bootcodes bunch of those], here are some of the more useful:<br />
<br />
{| border="1"<br />
!Parameter<br />
!Usage Example<br />
!Effect<br />
|-<br />
|waitusb<br />
|waitusb=5<br />
|Wait for USB devices to become ready before mounting. This might help if the image fails to load its extensions.<br />
|-<br />
|norestore<br />
|norestore<br />
|Do not restore from persistence file (explained later in this guide)<br />
|-<br />
|lst<br />
|lst=ext.lst<br />
|Load extensions specified by ext.lst<br />
|-<br />
|superuser<br />
|superuser<br />
|Start with a root shell<br />
|-<br />
|quiet<br />
|quiet<br />
|Suppress much of the debug information during boot<br />
|}<br />
<br />
==qemu networking==<br />
<pre><br />
echo "allow virbr0" > /etc/qemu/bridge.conf<br />
<br />
sudo qemu-system-i386 core-image.img -net bridge,br=virbr0 -net nic,model=virtio<br />
</pre><br />
<br />
Use nm-connection-editor to configure virbr0<br />
<br />
==robotinorestore==<br />
<pre><br />
tce-load -wi compiletc squashfs-tools submitqc<br />
</pre><br />
<br />
==Setup permissions==<br />
<pre><br />
cd /tmp/robotinorestore<br />
chown -R root:root .<br />
chown tc:staff usr/local/tce.installed/robotinorestore<br />
chmod 755 usr/local/etc/profile.d/robotinorestore.sh<br />
chmod 755 usr/local/tce.installed/robotinorestore<br />
find -L . \<br />
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \<br />
-o -perm 511 \) -exec chmod 755 {} \; -o \<br />
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \<br />
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;<br />
chown root:staff usr/local/tce.installed<br />
chmod 775 usr/local/tce.installed<br />
</pre><br />
<br />
==Build extension==<br />
<pre><br />
mksquashfs /tmp/robotinorestore/ /tmp/robotinorestore.tcz<br />
</pre><br />
<br />
==Make ISO image==<br />
<pre><br />
wget https://mirrors.edge.kernel.org/pub/linux/utils/boot/syslinux/syslinux-6.03.tar.gz<br />
tar xvf syslinux-6.03.tar.gz<br />
mkdir tinycore-cdrom<br />
<br />
cp syslinux-6.03/bios/core/isolinux.bin tinycore-cdrom/isolinux/<br />
cp syslinux-6.03/bios/com32/elflink/ldlinux/ldlinux.c32 tinycore-cdrom/isolinux/<br />
<br />
cat <<EOF > tinycore-cdrom/isolinux/isolinux.cfg<br />
display boot.msg<br />
default microcore<br />
label microcore<br />
kernel /boot/vmlinuz<br />
append initrd /boot/core.gz loglevel=3 nofstab<br />
<br />
label mc<br />
kernel /boot/vmlinuz<br />
append initrd=/boot/core.gz loglevel=3<br />
implicit 0 <br />
prompt 1 <br />
timeout 30<br />
F1 boot.msg<br />
F2 f2<br />
F3 f3<br />
F4 f4<br />
EOF<br />
<br />
mkisofs -o CoreCustom20210921.iso \<br />
-b isolinux/isolinux.bin -c isolinux/boot.cat \<br />
-no-emul-boot -boot-load-size 4 -boot-info-table \<br />
tinycore-cdrom<br />
</pre></div>Verbeekhttps://wiki.openrobotino.org/index.php?title=Cutom_tinycore&diff=4636Cutom tinycore2021-09-22T08:36:47Z<p>Verbeek: /* Make ISO image */</p>
<hr />
<div>==Overview==<br />
Based on [https://fabianstumpf.de/articles/tinycore_images.htm]<br />
<br />
<pre><br />
sudo apt install qemu-utils qemu-system-x86 grub-pc-bin<br />
<br />
mkdir tinycore<br />
cd tinycore<br />
wget http://tinycorelinux.net/12.x/x86/release/TinyCore-current.iso<br />
<br />
qemu-img create -f qcow2 core-image.img 64M<br />
</pre><br />
<br />
==Mount the image==<br />
<pre><br />
sudo modprobe nbd max_part=8<br />
sudo qemu-nbd -c /dev/nbd0 core-image.img<br />
</pre><br />
<br />
<pre><br />
sudo mkdir /media/cdrom<br />
sudo mount TinyCore-current.iso /media/cdrom<br />
<br />
sudo fdisk /dev/nbd0<br />
n<br />
p<br />
1<br />
enter<br />
enter<br />
p<br />
w<br />
<br />
sudo mkfs.ext2 /dev/nbd0p1<br />
<br />
sudo mkdir /media/image<br />
sudo mount /dev/nbd0p1 /media/image<br />
<br />
sudo mkdir /media/image/boot<br />
sudo mkdir -p /media/image/tce/optional<br />
<br />
sudo cp /media/cdrom/boot/core.gz /media/image/boot/<br />
sudo cp /media/cdrom/boot/vmlinuz /media/image/boot/<br />
sudo touch /media/image/tce/onboot.lst<br />
<br />
sudo grub-install --boot-directory=/media/image/boot /dev/nbd0<br />
</pre><br />
<br />
==Unmount the image==<br />
<pre><br />
sudo umount /dev/nbd0p1<br />
sudo qemu-nbd -d /dev/nbd0<br />
</pre><br />
<br />
<pre><br />
qemu-system-i386 core-image.img<br />
<br />
linux (hd0,msdos1)/boot/vmlinuz<br />
initrd (hd0,msdos1)/boot/core.gz<br />
boot<br />
<br />
sudo qemu-nbd -c /dev/nbd0 core-image.img<br />
sudo mount /dev/nbd0p1 /media/image<br />
<br />
sudo bash -c "cat <<EOF > /media/image/boot/grub/grub.cfg<br />
set timeout=3<br />
set root='hd0,msdos1'<br />
menuentry 'Boot TinyCore' {<br />
linux /boot/vmlinuz waitusb=5 superuser<br />
initrd /boot/core.gz<br />
}<br />
EOF"<br />
<br />
</pre><br />
<br />
If you want to pass the boot process some arguments, append them after the path to the linux kernel. TinyCore supports a [http://distro.ibiblio.org/tinycorelinux/faq.html#bootcodes bunch of those], here are some of the more useful:<br />
<br />
{| border="1"<br />
!Parameter<br />
!Usage Example<br />
!Effect<br />
|-<br />
|waitusb<br />
|waitusb=5<br />
|Wait for USB devices to become ready before mounting. This might help if the image fails to load its extensions.<br />
|-<br />
|norestore<br />
|norestore<br />
|Do not restore from persistence file (explained later in this guide)<br />
|-<br />
|lst<br />
|lst=ext.lst<br />
|Load extensions specified by ext.lst<br />
|-<br />
|superuser<br />
|superuser<br />
|Start with a root shell<br />
|-<br />
|quiet<br />
|quiet<br />
|Suppress much of the debug information during boot<br />
|}<br />
<br />
==qemu networking==<br />
<pre><br />
echo "allow virbr0" > /etc/qemu/bridge.conf<br />
<br />
sudo qemu-system-i386 core-image.img -net bridge,br=virbr0 -net nic,model=virtio<br />
</pre><br />
<br />
Use nm-connection-editor to configure virbr0<br />
<br />
==robotinorestore==<br />
<pre><br />
tce-load -wi compiletc squashfs-tools submitqc<br />
</pre><br />
<br />
==Setup permissions==<br />
<pre><br />
cd /tmp/robotinorestore<br />
chown -R root:root .<br />
chown tc:staff usr/local/tce.installed/robotinorestore<br />
chmod 755 usr/local/etc/profile.d/robotinorestore.sh<br />
chmod 755 usr/local/tce.installed/robotinorestore<br />
find -L . \<br />
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \<br />
-o -perm 511 \) -exec chmod 755 {} \; -o \<br />
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \<br />
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;<br />
chown root:staff usr/local/tce.installed<br />
chmod 775 usr/local/tce.installed<br />
</pre><br />
<br />
==Build extension==<br />
<pre><br />
mksquashfs /tmp/robotinorestore/ /tmp/robotinorestore.tcz<br />
</pre><br />
<br />
==Make ISO image==<br />
<pre><br />
wget https://mirrors.edge.kernel.org/pub/linux/utils/boot/syslinux/syslinux-6.03.tar.gz<br />
tar xvf syslinux-6.03.tar.gz<br />
mkdir tinycore-cdrom<br />
<br />
cp syslinux-6.03/bios/core/isolinux.bin tinycore-cdrom/isolinux/<br />
cp syslinux-6.03/bios/com32/elflink/ldlinux/ldlinux.c32 tinycore-cdrom/isolinux/<br />
<br />
cat <<EOF > tinycore-cdrom/isolinux/isolinux.cfg<br />
display boot.msg<br />
default microcore<br />
label microcore<br />
kernel /boot/vmlinuz waitusb=5 superuser<br />
append initrd /boot/core.gz loglevel=3 nofstab<br />
<br />
label mc<br />
kernel /boot/vmlinuz<br />
append initrd=/boot/core.gz loglevel=3<br />
implicit 0 <br />
prompt 1 <br />
timeout 30<br />
F1 boot.msg<br />
F2 f2<br />
F3 f3<br />
F4 f4<br />
EOF<br />
<br />
mkisofs -o CoreCustom20210921.iso \<br />
-b isolinux/isolinux.bin -c isolinux/boot.cat \<br />
-no-emul-boot -boot-load-size 4 -boot-info-table \<br />
tinycore-cdrom<br />
</pre></div>Verbeekhttps://wiki.openrobotino.org/index.php?title=Cutom_tinycore&diff=4635Cutom tinycore2021-09-22T08:34:10Z<p>Verbeek: /* Make ISO image */</p>
<hr />
<div>==Overview==<br />
Based on [https://fabianstumpf.de/articles/tinycore_images.htm]<br />
<br />
<pre><br />
sudo apt install qemu-utils qemu-system-x86 grub-pc-bin<br />
<br />
mkdir tinycore<br />
cd tinycore<br />
wget http://tinycorelinux.net/12.x/x86/release/TinyCore-current.iso<br />
<br />
qemu-img create -f qcow2 core-image.img 64M<br />
</pre><br />
<br />
==Mount the image==<br />
<pre><br />
sudo modprobe nbd max_part=8<br />
sudo qemu-nbd -c /dev/nbd0 core-image.img<br />
</pre><br />
<br />
<pre><br />
sudo mkdir /media/cdrom<br />
sudo mount TinyCore-current.iso /media/cdrom<br />
<br />
sudo fdisk /dev/nbd0<br />
n<br />
p<br />
1<br />
enter<br />
enter<br />
p<br />
w<br />
<br />
sudo mkfs.ext2 /dev/nbd0p1<br />
<br />
sudo mkdir /media/image<br />
sudo mount /dev/nbd0p1 /media/image<br />
<br />
sudo mkdir /media/image/boot<br />
sudo mkdir -p /media/image/tce/optional<br />
<br />
sudo cp /media/cdrom/boot/core.gz /media/image/boot/<br />
sudo cp /media/cdrom/boot/vmlinuz /media/image/boot/<br />
sudo touch /media/image/tce/onboot.lst<br />
<br />
sudo grub-install --boot-directory=/media/image/boot /dev/nbd0<br />
</pre><br />
<br />
==Unmount the image==<br />
<pre><br />
sudo umount /dev/nbd0p1<br />
sudo qemu-nbd -d /dev/nbd0<br />
</pre><br />
<br />
<pre><br />
qemu-system-i386 core-image.img<br />
<br />
linux (hd0,msdos1)/boot/vmlinuz<br />
initrd (hd0,msdos1)/boot/core.gz<br />
boot<br />
<br />
sudo qemu-nbd -c /dev/nbd0 core-image.img<br />
sudo mount /dev/nbd0p1 /media/image<br />
<br />
sudo bash -c "cat <<EOF > /media/image/boot/grub/grub.cfg<br />
set timeout=3<br />
set root='hd0,msdos1'<br />
menuentry 'Boot TinyCore' {<br />
linux /boot/vmlinuz waitusb=5 superuser<br />
initrd /boot/core.gz<br />
}<br />
EOF"<br />
<br />
</pre><br />
<br />
If you want to pass the boot process some arguments, append them after the path to the linux kernel. TinyCore supports a [http://distro.ibiblio.org/tinycorelinux/faq.html#bootcodes bunch of those], here are some of the more useful:<br />
<br />
{| border="1"<br />
!Parameter<br />
!Usage Example<br />
!Effect<br />
|-<br />
|waitusb<br />
|waitusb=5<br />
|Wait for USB devices to become ready before mounting. This might help if the image fails to load its extensions.<br />
|-<br />
|norestore<br />
|norestore<br />
|Do not restore from persistence file (explained later in this guide)<br />
|-<br />
|lst<br />
|lst=ext.lst<br />
|Load extensions specified by ext.lst<br />
|-<br />
|superuser<br />
|superuser<br />
|Start with a root shell<br />
|-<br />
|quiet<br />
|quiet<br />
|Suppress much of the debug information during boot<br />
|}<br />
<br />
==qemu networking==<br />
<pre><br />
echo "allow virbr0" > /etc/qemu/bridge.conf<br />
<br />
sudo qemu-system-i386 core-image.img -net bridge,br=virbr0 -net nic,model=virtio<br />
</pre><br />
<br />
Use nm-connection-editor to configure virbr0<br />
<br />
==robotinorestore==<br />
<pre><br />
tce-load -wi compiletc squashfs-tools submitqc<br />
</pre><br />
<br />
==Setup permissions==<br />
<pre><br />
cd /tmp/robotinorestore<br />
chown -R root:root .<br />
chown tc:staff usr/local/tce.installed/robotinorestore<br />
chmod 755 usr/local/etc/profile.d/robotinorestore.sh<br />
chmod 755 usr/local/tce.installed/robotinorestore<br />
find -L . \<br />
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \<br />
-o -perm 511 \) -exec chmod 755 {} \; -o \<br />
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \<br />
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;<br />
chown root:staff usr/local/tce.installed<br />
chmod 775 usr/local/tce.installed<br />
</pre><br />
<br />
==Build extension==<br />
<pre><br />
mksquashfs /tmp/robotinorestore/ /tmp/robotinorestore.tcz<br />
</pre><br />
<br />
==Make ISO image==<br />
<pre><br />
wget https://mirrors.edge.kernel.org/pub/linux/utils/boot/syslinux/syslinux-6.03.tar.gz<br />
tar xvf syslinux-6.03.tar.gz<br />
mkdir tinycore-cdrom<br />
<br />
cp syslinux-6.03/bios/core/isolinux.bin tinycore-cdrom/isolinux/<br />
cp syslinux-6.03/bios/com32/elflink/ldlinux/ldlinux.c32 tinycore-cdrom/isolinux/<br />
<br />
cat <<EOF > tinycore-cdrom/isolinux/isolinux.cfg<br />
display boot.msg<br />
default microcore<br />
label microcore<br />
kernel /boot/vmlinuz waitusb=5 superuser<br />
append initrd /boot/core.gz loglevel=3 nofstab<br />
<br />
label mc<br />
kernel /boot/vmlinuz<br />
append initrd=/boot/core.gz loglevel=3<br />
implicit 0 <br />
prompt 1 <br />
timeout 30<br />
F1 boot.msg<br />
F2 f2<br />
F3 f3<br />
F4 f4<br />
EOF<br />
</pre></div>Verbeekhttps://wiki.openrobotino.org/index.php?title=Cutom_tinycore&diff=4634Cutom tinycore2021-09-22T08:32:24Z<p>Verbeek: /* Make ISO image */</p>
<hr />
<div>==Overview==<br />
Based on [https://fabianstumpf.de/articles/tinycore_images.htm]<br />
<br />
<pre><br />
sudo apt install qemu-utils qemu-system-x86 grub-pc-bin<br />
<br />
mkdir tinycore<br />
cd tinycore<br />
wget http://tinycorelinux.net/12.x/x86/release/TinyCore-current.iso<br />
<br />
qemu-img create -f qcow2 core-image.img 64M<br />
</pre><br />
<br />
==Mount the image==<br />
<pre><br />
sudo modprobe nbd max_part=8<br />
sudo qemu-nbd -c /dev/nbd0 core-image.img<br />
</pre><br />
<br />
<pre><br />
sudo mkdir /media/cdrom<br />
sudo mount TinyCore-current.iso /media/cdrom<br />
<br />
sudo fdisk /dev/nbd0<br />
n<br />
p<br />
1<br />
enter<br />
enter<br />
p<br />
w<br />
<br />
sudo mkfs.ext2 /dev/nbd0p1<br />
<br />
sudo mkdir /media/image<br />
sudo mount /dev/nbd0p1 /media/image<br />
<br />
sudo mkdir /media/image/boot<br />
sudo mkdir -p /media/image/tce/optional<br />
<br />
sudo cp /media/cdrom/boot/core.gz /media/image/boot/<br />
sudo cp /media/cdrom/boot/vmlinuz /media/image/boot/<br />
sudo touch /media/image/tce/onboot.lst<br />
<br />
sudo grub-install --boot-directory=/media/image/boot /dev/nbd0<br />
</pre><br />
<br />
==Unmount the image==<br />
<pre><br />
sudo umount /dev/nbd0p1<br />
sudo qemu-nbd -d /dev/nbd0<br />
</pre><br />
<br />
<pre><br />
qemu-system-i386 core-image.img<br />
<br />
linux (hd0,msdos1)/boot/vmlinuz<br />
initrd (hd0,msdos1)/boot/core.gz<br />
boot<br />
<br />
sudo qemu-nbd -c /dev/nbd0 core-image.img<br />
sudo mount /dev/nbd0p1 /media/image<br />
<br />
sudo bash -c "cat <<EOF > /media/image/boot/grub/grub.cfg<br />
set timeout=3<br />
set root='hd0,msdos1'<br />
menuentry 'Boot TinyCore' {<br />
linux /boot/vmlinuz waitusb=5 superuser<br />
initrd /boot/core.gz<br />
}<br />
EOF"<br />
<br />
</pre><br />
<br />
If you want to pass the boot process some arguments, append them after the path to the linux kernel. TinyCore supports a [http://distro.ibiblio.org/tinycorelinux/faq.html#bootcodes bunch of those], here are some of the more useful:<br />
<br />
{| border="1"<br />
!Parameter<br />
!Usage Example<br />
!Effect<br />
|-<br />
|waitusb<br />
|waitusb=5<br />
|Wait for USB devices to become ready before mounting. This might help if the image fails to load its extensions.<br />
|-<br />
|norestore<br />
|norestore<br />
|Do not restore from persistence file (explained later in this guide)<br />
|-<br />
|lst<br />
|lst=ext.lst<br />
|Load extensions specified by ext.lst<br />
|-<br />
|superuser<br />
|superuser<br />
|Start with a root shell<br />
|-<br />
|quiet<br />
|quiet<br />
|Suppress much of the debug information during boot<br />
|}<br />
<br />
==qemu networking==<br />
<pre><br />
echo "allow virbr0" > /etc/qemu/bridge.conf<br />
<br />
sudo qemu-system-i386 core-image.img -net bridge,br=virbr0 -net nic,model=virtio<br />
</pre><br />
<br />
Use nm-connection-editor to configure virbr0<br />
<br />
==robotinorestore==<br />
<pre><br />
tce-load -wi compiletc squashfs-tools submitqc<br />
</pre><br />
<br />
==Setup permissions==<br />
<pre><br />
cd /tmp/robotinorestore<br />
chown -R root:root .<br />
chown tc:staff usr/local/tce.installed/robotinorestore<br />
chmod 755 usr/local/etc/profile.d/robotinorestore.sh<br />
chmod 755 usr/local/tce.installed/robotinorestore<br />
find -L . \<br />
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \<br />
-o -perm 511 \) -exec chmod 755 {} \; -o \<br />
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \<br />
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;<br />
chown root:staff usr/local/tce.installed<br />
chmod 775 usr/local/tce.installed<br />
</pre><br />
<br />
==Build extension==<br />
<pre><br />
mksquashfs /tmp/robotinorestore/ /tmp/robotinorestore.tcz<br />
</pre><br />
<br />
==Make ISO image==<br />
<pre><br />
wget https://mirrors.edge.kernel.org/pub/linux/utils/boot/syslinux/syslinux-6.03.tar.gz<br />
tar xvf syslinux-6.03.tar.gz<br />
mkdir tinycore-cdrom<br />
<br />
cp syslinux-6.03/bios/core/isolinux.bin tinycore-cdrom/isolinux/<br />
cp syslinux-6.03/bios/com32/elflink/ldlinux/ldlinux.c32 tinycore-cdrom/isolinux/<br />
<br />
cat <<EOF > tinycore-cdrom/isolinux/isolinux.cfg<br />
display boot.msg<br />
default microcore<br />
label microcore<br />
kernel /boot/vmlinuz waitusb=5 superuser<br />
initrd /boot/core.gz<br />
append loglevel=3 nofstab<br />
<br />
label mc<br />
kernel /boot/vmlinuz<br />
append initrd=/boot/core.gz loglevel=3<br />
implicit 0 <br />
prompt 1 <br />
timeout 30<br />
F1 boot.msg<br />
F2 f2<br />
F3 f3<br />
F4 f4<br />
EOF<br />
</pre></div>Verbeekhttps://wiki.openrobotino.org/index.php?title=Cutom_tinycore&diff=4633Cutom tinycore2021-09-22T08:32:08Z<p>Verbeek: /* Make ISO image */</p>
<hr />
<div>==Overview==<br />
Based on [https://fabianstumpf.de/articles/tinycore_images.htm]<br />
<br />
<pre><br />
sudo apt install qemu-utils qemu-system-x86 grub-pc-bin<br />
<br />
mkdir tinycore<br />
cd tinycore<br />
wget http://tinycorelinux.net/12.x/x86/release/TinyCore-current.iso<br />
<br />
qemu-img create -f qcow2 core-image.img 64M<br />
</pre><br />
<br />
==Mount the image==<br />
<pre><br />
sudo modprobe nbd max_part=8<br />
sudo qemu-nbd -c /dev/nbd0 core-image.img<br />
</pre><br />
<br />
<pre><br />
sudo mkdir /media/cdrom<br />
sudo mount TinyCore-current.iso /media/cdrom<br />
<br />
sudo fdisk /dev/nbd0<br />
n<br />
p<br />
1<br />
enter<br />
enter<br />
p<br />
w<br />
<br />
sudo mkfs.ext2 /dev/nbd0p1<br />
<br />
sudo mkdir /media/image<br />
sudo mount /dev/nbd0p1 /media/image<br />
<br />
sudo mkdir /media/image/boot<br />
sudo mkdir -p /media/image/tce/optional<br />
<br />
sudo cp /media/cdrom/boot/core.gz /media/image/boot/<br />
sudo cp /media/cdrom/boot/vmlinuz /media/image/boot/<br />
sudo touch /media/image/tce/onboot.lst<br />
<br />
sudo grub-install --boot-directory=/media/image/boot /dev/nbd0<br />
</pre><br />
<br />
==Unmount the image==<br />
<pre><br />
sudo umount /dev/nbd0p1<br />
sudo qemu-nbd -d /dev/nbd0<br />
</pre><br />
<br />
<pre><br />
qemu-system-i386 core-image.img<br />
<br />
linux (hd0,msdos1)/boot/vmlinuz<br />
initrd (hd0,msdos1)/boot/core.gz<br />
boot<br />
<br />
sudo qemu-nbd -c /dev/nbd0 core-image.img<br />
sudo mount /dev/nbd0p1 /media/image<br />
<br />
sudo bash -c "cat <<EOF > /media/image/boot/grub/grub.cfg<br />
set timeout=3<br />
set root='hd0,msdos1'<br />
menuentry 'Boot TinyCore' {<br />
linux /boot/vmlinuz waitusb=5 superuser<br />
initrd /boot/core.gz<br />
}<br />
EOF"<br />
<br />
</pre><br />
<br />
If you want to pass the boot process some arguments, append them after the path to the linux kernel. TinyCore supports a [http://distro.ibiblio.org/tinycorelinux/faq.html#bootcodes bunch of those], here are some of the more useful:<br />
<br />
{| border="1"<br />
!Parameter<br />
!Usage Example<br />
!Effect<br />
|-<br />
|waitusb<br />
|waitusb=5<br />
|Wait for USB devices to become ready before mounting. This might help if the image fails to load its extensions.<br />
|-<br />
|norestore<br />
|norestore<br />
|Do not restore from persistence file (explained later in this guide)<br />
|-<br />
|lst<br />
|lst=ext.lst<br />
|Load extensions specified by ext.lst<br />
|-<br />
|superuser<br />
|superuser<br />
|Start with a root shell<br />
|-<br />
|quiet<br />
|quiet<br />
|Suppress much of the debug information during boot<br />
|}<br />
<br />
==qemu networking==<br />
<pre><br />
echo "allow virbr0" > /etc/qemu/bridge.conf<br />
<br />
sudo qemu-system-i386 core-image.img -net bridge,br=virbr0 -net nic,model=virtio<br />
</pre><br />
<br />
Use nm-connection-editor to configure virbr0<br />
<br />
==robotinorestore==<br />
<pre><br />
tce-load -wi compiletc squashfs-tools submitqc<br />
</pre><br />
<br />
==Setup permissions==<br />
<pre><br />
cd /tmp/robotinorestore<br />
chown -R root:root .<br />
chown tc:staff usr/local/tce.installed/robotinorestore<br />
chmod 755 usr/local/etc/profile.d/robotinorestore.sh<br />
chmod 755 usr/local/tce.installed/robotinorestore<br />
find -L . \<br />
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \<br />
-o -perm 511 \) -exec chmod 755 {} \; -o \<br />
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \<br />
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;<br />
chown root:staff usr/local/tce.installed<br />
chmod 775 usr/local/tce.installed<br />
</pre><br />
<br />
==Build extension==<br />
<pre><br />
mksquashfs /tmp/robotinorestore/ /tmp/robotinorestore.tcz<br />
</pre><br />
<br />
==Make ISO image==<br />
<pre><br />
wget https://mirrors.edge.kernel.org/pub/linux/utils/boot/syslinux/syslinux-6.03.tar.gz<br />
tar xvf syslinux-6.03.tar.gz<br />
mkdir tinycore-cdrom<br />
<br />
cp syslinux-6.03/bios/core/isolinux.bin tinycore-cdrom/isolinux/<br />
cp syslinux-6.03/bios/com32/elflink/ldlinux/ldlinux.c32 tinycore-cdrom/isolinux/<br />
<br />
sudo bash -c "cat <<EOF > tinycore-cdrom/isolinux/isolinux.cfg<br />
display boot.msg<br />
default microcore<br />
label microcore<br />
kernel /boot/vmlinuz waitusb=5 superuser<br />
initrd /boot/core.gz<br />
append loglevel=3 nofstab<br />
<br />
label mc<br />
kernel /boot/vmlinuz<br />
append initrd=/boot/core.gz loglevel=3<br />
implicit 0 <br />
prompt 1 <br />
timeout 30<br />
F1 boot.msg<br />
F2 f2<br />
F3 f3<br />
F4 f4<br />
EOF"<br />
</pre></div>Verbeekhttps://wiki.openrobotino.org/index.php?title=Cutom_tinycore&diff=4632Cutom tinycore2021-09-22T08:30:33Z<p>Verbeek: /* Make ISO image */</p>
<hr />
<div>==Overview==<br />
Based on [https://fabianstumpf.de/articles/tinycore_images.htm]<br />
<br />
<pre><br />
sudo apt install qemu-utils qemu-system-x86 grub-pc-bin<br />
<br />
mkdir tinycore<br />
cd tinycore<br />
wget http://tinycorelinux.net/12.x/x86/release/TinyCore-current.iso<br />
<br />
qemu-img create -f qcow2 core-image.img 64M<br />
</pre><br />
<br />
==Mount the image==<br />
<pre><br />
sudo modprobe nbd max_part=8<br />
sudo qemu-nbd -c /dev/nbd0 core-image.img<br />
</pre><br />
<br />
<pre><br />
sudo mkdir /media/cdrom<br />
sudo mount TinyCore-current.iso /media/cdrom<br />
<br />
sudo fdisk /dev/nbd0<br />
n<br />
p<br />
1<br />
enter<br />
enter<br />
p<br />
w<br />
<br />
sudo mkfs.ext2 /dev/nbd0p1<br />
<br />
sudo mkdir /media/image<br />
sudo mount /dev/nbd0p1 /media/image<br />
<br />
sudo mkdir /media/image/boot<br />
sudo mkdir -p /media/image/tce/optional<br />
<br />
sudo cp /media/cdrom/boot/core.gz /media/image/boot/<br />
sudo cp /media/cdrom/boot/vmlinuz /media/image/boot/<br />
sudo touch /media/image/tce/onboot.lst<br />
<br />
sudo grub-install --boot-directory=/media/image/boot /dev/nbd0<br />
</pre><br />
<br />
==Unmount the image==<br />
<pre><br />
sudo umount /dev/nbd0p1<br />
sudo qemu-nbd -d /dev/nbd0<br />
</pre><br />
<br />
<pre><br />
qemu-system-i386 core-image.img<br />
<br />
linux (hd0,msdos1)/boot/vmlinuz<br />
initrd (hd0,msdos1)/boot/core.gz<br />
boot<br />
<br />
sudo qemu-nbd -c /dev/nbd0 core-image.img<br />
sudo mount /dev/nbd0p1 /media/image<br />
<br />
sudo bash -c "cat <<EOF > /media/image/boot/grub/grub.cfg<br />
set timeout=3<br />
set root='hd0,msdos1'<br />
menuentry 'Boot TinyCore' {<br />
linux /boot/vmlinuz waitusb=5 superuser<br />
initrd /boot/core.gz<br />
}<br />
EOF"<br />
<br />
</pre><br />
<br />
If you want to pass the boot process some arguments, append them after the path to the linux kernel. TinyCore supports a [http://distro.ibiblio.org/tinycorelinux/faq.html#bootcodes bunch of those], here are some of the more useful:<br />
<br />
{| border="1"<br />
!Parameter<br />
!Usage Example<br />
!Effect<br />
|-<br />
|waitusb<br />
|waitusb=5<br />
|Wait for USB devices to become ready before mounting. This might help if the image fails to load its extensions.<br />
|-<br />
|norestore<br />
|norestore<br />
|Do not restore from persistence file (explained later in this guide)<br />
|-<br />
|lst<br />
|lst=ext.lst<br />
|Load extensions specified by ext.lst<br />
|-<br />
|superuser<br />
|superuser<br />
|Start with a root shell<br />
|-<br />
|quiet<br />
|quiet<br />
|Suppress much of the debug information during boot<br />
|}<br />
<br />
==qemu networking==<br />
<pre><br />
echo "allow virbr0" > /etc/qemu/bridge.conf<br />
<br />
sudo qemu-system-i386 core-image.img -net bridge,br=virbr0 -net nic,model=virtio<br />
</pre><br />
<br />
Use nm-connection-editor to configure virbr0<br />
<br />
==robotinorestore==<br />
<pre><br />
tce-load -wi compiletc squashfs-tools submitqc<br />
</pre><br />
<br />
==Setup permissions==<br />
<pre><br />
cd /tmp/robotinorestore<br />
chown -R root:root .<br />
chown tc:staff usr/local/tce.installed/robotinorestore<br />
chmod 755 usr/local/etc/profile.d/robotinorestore.sh<br />
chmod 755 usr/local/tce.installed/robotinorestore<br />
find -L . \<br />
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \<br />
-o -perm 511 \) -exec chmod 755 {} \; -o \<br />
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \<br />
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;<br />
chown root:staff usr/local/tce.installed<br />
chmod 775 usr/local/tce.installed<br />
</pre><br />
<br />
==Build extension==<br />
<pre><br />
mksquashfs /tmp/robotinorestore/ /tmp/robotinorestore.tcz<br />
</pre><br />
<br />
==Make ISO image==<br />
<pre><br />
wget https://mirrors.edge.kernel.org/pub/linux/utils/boot/syslinux/syslinux-6.03.tar.gz<br />
tar xvf syslinux-6.03.tar.gz<br />
mkdir tinycore-cdrom<br />
<br />
cp syslinux-6.03/bios/core/isolinux.bin tinycore-cdrom/isolinux/<br />
cp syslinux-6.03/bios/com32/elflink/ldlinux/ldlinux.c32 tinycore-cdrom/isolinux/<br />
<br />
"display boot.msg<br />
default microcore<br />
label microcore<br />
kernel /boot/vmlinuz<br />
initrd /boot/core.gz<br />
append loglevel=3 nofstab<br />
<br />
label mc<br />
kernel /boot/vmlinuz<br />
append initrd=/boot/core.gz loglevel=3<br />
implicit 0 <br />
prompt 1 <br />
timeout 30<br />
F1 boot.msg<br />
F2 f2<br />
F3 f3<br />
F4 f4<br />
"<br />
</pre></div>Verbeekhttps://wiki.openrobotino.org/index.php?title=Cutom_tinycore&diff=4631Cutom tinycore2021-09-22T08:28:51Z<p>Verbeek: /* Make ISO image */</p>
<hr />
<div>==Overview==<br />
Based on [https://fabianstumpf.de/articles/tinycore_images.htm]<br />
<br />
<pre><br />
sudo apt install qemu-utils qemu-system-x86 grub-pc-bin<br />
<br />
mkdir tinycore<br />
cd tinycore<br />
wget http://tinycorelinux.net/12.x/x86/release/TinyCore-current.iso<br />
<br />
qemu-img create -f qcow2 core-image.img 64M<br />
</pre><br />
<br />
==Mount the image==<br />
<pre><br />
sudo modprobe nbd max_part=8<br />
sudo qemu-nbd -c /dev/nbd0 core-image.img<br />
</pre><br />
<br />
<pre><br />
sudo mkdir /media/cdrom<br />
sudo mount TinyCore-current.iso /media/cdrom<br />
<br />
sudo fdisk /dev/nbd0<br />
n<br />
p<br />
1<br />
enter<br />
enter<br />
p<br />
w<br />
<br />
sudo mkfs.ext2 /dev/nbd0p1<br />
<br />
sudo mkdir /media/image<br />
sudo mount /dev/nbd0p1 /media/image<br />
<br />
sudo mkdir /media/image/boot<br />
sudo mkdir -p /media/image/tce/optional<br />
<br />
sudo cp /media/cdrom/boot/core.gz /media/image/boot/<br />
sudo cp /media/cdrom/boot/vmlinuz /media/image/boot/<br />
sudo touch /media/image/tce/onboot.lst<br />
<br />
sudo grub-install --boot-directory=/media/image/boot /dev/nbd0<br />
</pre><br />
<br />
==Unmount the image==<br />
<pre><br />
sudo umount /dev/nbd0p1<br />
sudo qemu-nbd -d /dev/nbd0<br />
</pre><br />
<br />
<pre><br />
qemu-system-i386 core-image.img<br />
<br />
linux (hd0,msdos1)/boot/vmlinuz<br />
initrd (hd0,msdos1)/boot/core.gz<br />
boot<br />
<br />
sudo qemu-nbd -c /dev/nbd0 core-image.img<br />
sudo mount /dev/nbd0p1 /media/image<br />
<br />
sudo bash -c "cat <<EOF > /media/image/boot/grub/grub.cfg<br />
set timeout=3<br />
set root='hd0,msdos1'<br />
menuentry 'Boot TinyCore' {<br />
linux /boot/vmlinuz waitusb=5 superuser<br />
initrd /boot/core.gz<br />
}<br />
EOF"<br />
<br />
</pre><br />
<br />
If you want to pass the boot process some arguments, append them after the path to the linux kernel. TinyCore supports a [http://distro.ibiblio.org/tinycorelinux/faq.html#bootcodes bunch of those], here are some of the more useful:<br />
<br />
{| border="1"<br />
!Parameter<br />
!Usage Example<br />
!Effect<br />
|-<br />
|waitusb<br />
|waitusb=5<br />
|Wait for USB devices to become ready before mounting. This might help if the image fails to load its extensions.<br />
|-<br />
|norestore<br />
|norestore<br />
|Do not restore from persistence file (explained later in this guide)<br />
|-<br />
|lst<br />
|lst=ext.lst<br />
|Load extensions specified by ext.lst<br />
|-<br />
|superuser<br />
|superuser<br />
|Start with a root shell<br />
|-<br />
|quiet<br />
|quiet<br />
|Suppress much of the debug information during boot<br />
|}<br />
<br />
==qemu networking==<br />
<pre><br />
echo "allow virbr0" > /etc/qemu/bridge.conf<br />
<br />
sudo qemu-system-i386 core-image.img -net bridge,br=virbr0 -net nic,model=virtio<br />
</pre><br />
<br />
Use nm-connection-editor to configure virbr0<br />
<br />
==robotinorestore==<br />
<pre><br />
tce-load -wi compiletc squashfs-tools submitqc<br />
</pre><br />
<br />
==Setup permissions==<br />
<pre><br />
cd /tmp/robotinorestore<br />
chown -R root:root .<br />
chown tc:staff usr/local/tce.installed/robotinorestore<br />
chmod 755 usr/local/etc/profile.d/robotinorestore.sh<br />
chmod 755 usr/local/tce.installed/robotinorestore<br />
find -L . \<br />
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \<br />
-o -perm 511 \) -exec chmod 755 {} \; -o \<br />
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \<br />
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;<br />
chown root:staff usr/local/tce.installed<br />
chmod 775 usr/local/tce.installed<br />
</pre><br />
<br />
==Build extension==<br />
<pre><br />
mksquashfs /tmp/robotinorestore/ /tmp/robotinorestore.tcz<br />
</pre><br />
<br />
==Make ISO image==<br />
<pre><br />
wget https://mirrors.edge.kernel.org/pub/linux/utils/boot/syslinux/syslinux-6.03.tar.gz<br />
tar xvf syslinux-6.03.tar.gz<br />
mkdir tinycore-cdrom<br />
<br />
cp syslinux-6.03/bios/core/isolinux.bin tinycore-cdrom/isolinux/<br />
cp syslinux-6.03/bios/com32/elflink/ldlinux/ldlinux.c32 tinycore-cdrom/isolinux/<br />
</pre></div>Verbeekhttps://wiki.openrobotino.org/index.php?title=Cutom_tinycore&diff=4630Cutom tinycore2021-09-22T08:25:22Z<p>Verbeek: /* Make ISO image */</p>
<hr />
<div>==Overview==<br />
Based on [https://fabianstumpf.de/articles/tinycore_images.htm]<br />
<br />
<pre><br />
sudo apt install qemu-utils qemu-system-x86 grub-pc-bin<br />
<br />
mkdir tinycore<br />
cd tinycore<br />
wget http://tinycorelinux.net/12.x/x86/release/TinyCore-current.iso<br />
<br />
qemu-img create -f qcow2 core-image.img 64M<br />
</pre><br />
<br />
==Mount the image==<br />
<pre><br />
sudo modprobe nbd max_part=8<br />
sudo qemu-nbd -c /dev/nbd0 core-image.img<br />
</pre><br />
<br />
<pre><br />
sudo mkdir /media/cdrom<br />
sudo mount TinyCore-current.iso /media/cdrom<br />
<br />
sudo fdisk /dev/nbd0<br />
n<br />
p<br />
1<br />
enter<br />
enter<br />
p<br />
w<br />
<br />
sudo mkfs.ext2 /dev/nbd0p1<br />
<br />
sudo mkdir /media/image<br />
sudo mount /dev/nbd0p1 /media/image<br />
<br />
sudo mkdir /media/image/boot<br />
sudo mkdir -p /media/image/tce/optional<br />
<br />
sudo cp /media/cdrom/boot/core.gz /media/image/boot/<br />
sudo cp /media/cdrom/boot/vmlinuz /media/image/boot/<br />
sudo touch /media/image/tce/onboot.lst<br />
<br />
sudo grub-install --boot-directory=/media/image/boot /dev/nbd0<br />
</pre><br />
<br />
==Unmount the image==<br />
<pre><br />
sudo umount /dev/nbd0p1<br />
sudo qemu-nbd -d /dev/nbd0<br />
</pre><br />
<br />
<pre><br />
qemu-system-i386 core-image.img<br />
<br />
linux (hd0,msdos1)/boot/vmlinuz<br />
initrd (hd0,msdos1)/boot/core.gz<br />
boot<br />
<br />
sudo qemu-nbd -c /dev/nbd0 core-image.img<br />
sudo mount /dev/nbd0p1 /media/image<br />
<br />
sudo bash -c "cat <<EOF > /media/image/boot/grub/grub.cfg<br />
set timeout=3<br />
set root='hd0,msdos1'<br />
menuentry 'Boot TinyCore' {<br />
linux /boot/vmlinuz waitusb=5 superuser<br />
initrd /boot/core.gz<br />
}<br />
EOF"<br />
<br />
</pre><br />
<br />
If you want to pass the boot process some arguments, append them after the path to the linux kernel. TinyCore supports a [http://distro.ibiblio.org/tinycorelinux/faq.html#bootcodes bunch of those], here are some of the more useful:<br />
<br />
{| border="1"<br />
!Parameter<br />
!Usage Example<br />
!Effect<br />
|-<br />
|waitusb<br />
|waitusb=5<br />
|Wait for USB devices to become ready before mounting. This might help if the image fails to load its extensions.<br />
|-<br />
|norestore<br />
|norestore<br />
|Do not restore from persistence file (explained later in this guide)<br />
|-<br />
|lst<br />
|lst=ext.lst<br />
|Load extensions specified by ext.lst<br />
|-<br />
|superuser<br />
|superuser<br />
|Start with a root shell<br />
|-<br />
|quiet<br />
|quiet<br />
|Suppress much of the debug information during boot<br />
|}<br />
<br />
==qemu networking==<br />
<pre><br />
echo "allow virbr0" > /etc/qemu/bridge.conf<br />
<br />
sudo qemu-system-i386 core-image.img -net bridge,br=virbr0 -net nic,model=virtio<br />
</pre><br />
<br />
Use nm-connection-editor to configure virbr0<br />
<br />
==robotinorestore==<br />
<pre><br />
tce-load -wi compiletc squashfs-tools submitqc<br />
</pre><br />
<br />
==Setup permissions==<br />
<pre><br />
cd /tmp/robotinorestore<br />
chown -R root:root .<br />
chown tc:staff usr/local/tce.installed/robotinorestore<br />
chmod 755 usr/local/etc/profile.d/robotinorestore.sh<br />
chmod 755 usr/local/tce.installed/robotinorestore<br />
find -L . \<br />
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \<br />
-o -perm 511 \) -exec chmod 755 {} \; -o \<br />
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \<br />
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;<br />
chown root:staff usr/local/tce.installed<br />
chmod 775 usr/local/tce.installed<br />
</pre><br />
<br />
==Build extension==<br />
<pre><br />
mksquashfs /tmp/robotinorestore/ /tmp/robotinorestore.tcz<br />
</pre><br />
<br />
==Make ISO image==<br />
<pre><br />
wget https://mirrors.edge.kernel.org/pub/linux/utils/boot/syslinux/syslinux-6.03.tar.gz<br />
tar xvf syslinux-6.03.tar.gz<br />
mkdir tinycore-cdrom<br />
</pre></div>Verbeek