Warning: Undefined array key "type" in /srv/www/dokuwiki/code/lib/plugins/hidden/syntax.php on line 166

Warning: Undefined array key "type" in /srv/www/dokuwiki/code/lib/plugins/hidden/syntax.php on line 166

Warning: Undefined array key "type" in /srv/www/dokuwiki/code/lib/plugins/hidden/syntax.php on line 166

Warning: Undefined array key "type" in /srv/www/dokuwiki/code/lib/plugins/hidden/syntax.php on line 166

Warning: Undefined array key "type" in /srv/www/dokuwiki/code/lib/plugins/hidden/syntax.php on line 166

Warning: Undefined array key "type" in /srv/www/dokuwiki/code/lib/plugins/hidden/syntax.php on line 166

Warning: Undefined array key "type" in /srv/www/dokuwiki/code/lib/plugins/hidden/syntax.php on line 166

Warning: Undefined array key "type" in /srv/www/dokuwiki/code/lib/plugins/hidden/syntax.php on line 166

Warning: Undefined array key "type" in /srv/www/dokuwiki/code/lib/plugins/hidden/syntax.php on line 166

Warning: Undefined array key "type" in /srv/www/dokuwiki/code/lib/plugins/hidden/syntax.php on line 166

Warning: Undefined array key "type" in /srv/www/dokuwiki/code/lib/plugins/hidden/syntax.php on line 166

Warning: Undefined array key "type" in /srv/www/dokuwiki/code/lib/plugins/hidden/syntax.php on line 166

Warning: Undefined array key "type" in /srv/www/dokuwiki/code/lib/plugins/hidden/syntax.php on line 166

Warning: Undefined array key "type" in /srv/www/dokuwiki/code/lib/plugins/hidden/syntax.php on line 166

Warning: Undefined array key "type" in /srv/www/dokuwiki/code/lib/plugins/hidden/syntax.php on line 166

Warning: Undefined array key "type" in /srv/www/dokuwiki/code/lib/plugins/hidden/syntax.php on line 166

Warning: Undefined array key "type" in /srv/www/dokuwiki/code/lib/plugins/hidden/syntax.php on line 166

Warning: Undefined array key "type" in /srv/www/dokuwiki/code/lib/plugins/hidden/syntax.php on line 166

Warning: Undefined array key "type" in /srv/www/dokuwiki/code/lib/plugins/hidden/syntax.php on line 166

Warning: Undefined array key "type" in /srv/www/dokuwiki/code/lib/plugins/hidden/syntax.php on line 166

Warning: Undefined array key "type" in /srv/www/dokuwiki/code/lib/plugins/hidden/syntax.php on line 166

Warning: Undefined array key "type" in /srv/www/dokuwiki/code/lib/plugins/hidden/syntax.php on line 166

Warning: Undefined array key "type" in /srv/www/dokuwiki/code/lib/plugins/hidden/syntax.php on line 166

Warning: Undefined array key "type" in /srv/www/dokuwiki/code/lib/plugins/hidden/syntax.php on line 166

Driftsinformasjon for sanntidssalen

Se endringsloggen nederst på siden.

For symptomer og løsninger på (vanglige?) problem, se løsninger

Arbeidsplassene

Maskinene har Windows 7 og Ubuntu Trusty Tahr (14.04). Brukeren velger hvilket OS som skal bootes via en GRUB-meny. OS-valget huskes som standardvalg neste boot.

I tillegg til de to OS-ene nevnt over ligger også Linux Mint-installasjonen fra høsten 2014 sitt image på «/home»-partisjonen til Ubuntu. Ubuntu sin GRUB legger til Mint i listen i over bootbare OS-er når man kjører «sudo update-grub» fra Ubuntu. For mere info om Mint-installasjonen, se Linux Mint på sanntidssalen.

Testing av utstyr

Heismodellen (Linux)

Her er koden til en gruppe som fikk 10 poeng i ferdigkompilert form: heis-test.tar.gz

Bruk ved å kjøre disse kommandoene i terminalen:

wget https://www.itk.ntnu.no/_media/itdrift/heis-test.tar.gz -qO- | tar xz && rm -r heis-test | heis-test/heis

Eller (funket når jeg skrev dette):

wget -qO- itk.ntnu.no/heis.sh | sh

Windows

Programvare

  • Atmel Studio 6.2
    • Arduino IDE for Atmel Studio (lestes ned fra Extension Manager)
      • Kopier .addin-fila fra Visual Micro\Visual Micro for Arduino\Visual.Micro*.AS6.addin til Atmel Studio 6.2\Addins
      • Sjekk at File→New→Arduino Project er i menyen
      • Tools → Options Visual Micro → General: License Key (se Visual Micro)
      • Redigér \ProgramData\VMicro\Settings.xml (se under)
  • Oracle VM VirtualBox
  • git
  • svn
  • Matlab
  • ispLEVER Classic 1.8
    • Lattice har et skjema på nett der man kan fylle inn MAC-adresse og få en lisensfil tilsendt på epost. Bruker denne funksjonen.
  • Arduino (1.6.x)
  • Putty
  • Siemens Simatic/PLS
  • QNX Momentics + VM

Click to display ⇲

Click to hide ⇱

<Settings>
  <LicenseKey_10001>(se [[itdrift:sanntidssal:secret]])</LicenseKey_10001>
  <ActivationKey_10001>AAABZ-Z99BA-FN3FE-C77HF-4QBVJ</ActivationKey_10001>
  <ActivationHardwareId>C4NA3-A6EFC-CGP6Y-RBJFQ-JLEAA</ActivationHardwareId>
  <AutoRollout>1</AutoRollout>
  <Contributions>
    <key name="Contributions Path" value="C:\ArduinoContributions" />
  </Contributions>
  <Locations>
    <key name="Arduino 1.6.x Application" value="C:\Program Files (x86)\Arduino" />
    <key name="Arduino 1.6.x Sketchbook" value="" />
  </Locations>
</Settings>

Driftsinformasjon

I tillegg til programvaren over skal dette være installert:

  • PowerShell v4
    • For bedre støtte for auto-deploy-script
  • SCCM-klient for administrering gjenneom Configuration Manager
    • Utrulling av programvare
    • Reinstallering

Linux

Programvare

Her er en oversikt over programvare som skal være installert i Linux på sanntidssalen.

«behold (relativt) usikret nettverk for sanntidsprogrammering»

Kompilatorer

  • gcc >= 4.8 («kan 5.0 støttes?»)
  • g++
  • clang >= 3.5
  • golang >= 1.2
  • erlang
  • scala
  • java (openjdk-7-jdk)
  • gnat
  • nodejs
  • dmd (dlang) Digital Mars D compiler
  • mono (mono-devel)

Annet

  • git
  • avrdude
  • Matlab (må installeres fra progdist)
    • gfortran
    • openjdk-7-jdk
  • valgrind
  • vim
  • gdb
  • codeblocks
  • monodevelop
  • eclipse
  • libreoffice
  • libcomedi (libcomedi{0,-dev})
  • Xenomai

Active Directory-pålogging

Dokumenterer prosessen slik at det kan reproduseres lettere.

  1. Installer pakker
    • # apt-get install krb5-user libpam-krb5 samba winbind libpam-mount
  2. Rediger config, se innhold lenger ned
    • # nano /etc/krb5.conf
  3. Test oppsett
    • kinit BRUKERNAVN
    • klist
  4. Konfigurer samba, se innhold lenger ned
    • # nano /etc/samba/smb.conf
  5. Sett 129.241.0.200 og 129.241.0.201 som DNS-tjenere
  6. Mend maskinen inn i domenet
    • # net ads join -U BRUKERNAVN
  7. Konfigurer nsswitch, se innhold lenger ned
    • # nano /etc/nsswitch.conf
  8. Restart samba og winbind
    • # service winbind stop; service samba restart; service winbind start
  9. Tell hvor mange brukere som ligger i domenet
    • $ wbinfo -u|wc -l
  10. Konfigurer PAM
    • # pam-auth-update
    • Kryss av BARE * Unix authentication
      • Winbind …
      • Mount volumes for users
      • Register user sessions …
      • Inheritable Capabilities Management
  11. Restart winbind
    • # service winbind stop; service samba restart; service winbind start

krb5.conf

krb5.conf

 [libdefaults]
 default_realm = WIN.NTNU.NO
 ticket_lifetime = 24000
 [realms]
 WIN.NTNU.NO = {
    kdc = win-dc1.win.ntnu.no:88
    kdc = win-dc2.win.ntnu.no:88
    kdc = win-dc3.win.ntnu.no:88
    admin_server = win-dc1.win.ntnu.no
    default-domain = win.ntnu.no
 }
 [domain_realm]
 win.ntnu.no = WIN.NTNU.NO
 [logging]
 default = FILE:/var/log/krb5.log
 kdc = FILE:/var/log/krb5kdc.log

smb.conf

smb.conf

 [global]
 security = ads
 realm = WIN.NTNU.NO
 password server = 10.0.0.1
 workgroup = WIN-NTNU-NO
 idmap uid = 10000-20000
 idmap gid = 10000-20000
 winbind enum users = yes
 winbind enum groups = yes
 template homedir = /home/%U
 template shell = /bin/bash
 client use spnego = yes
 client ntlmv2 auth = yes
 encrypt passwords = yes
 winbind use default domain = yes
 restrict anonymous = 2
 domain master = no
 local master = no
 preferred master = no
 os level = 0

nsswitch.conf

nsswitch.conf

 # /etc/nsswitch.conf
 passwd:    compat winbind
 group:     compat winbind
 shadow:    compat winbind
 hosts:     files dns
 networks:  files
 protocols: db files
 services:  db files
 ethers:    db files
 rpc:       db files
 netgroup:  nis
 sudoers:   files

/etc/security/pam_mount.conf.xml

/etc/security/pam_mount.conf.xml

Denne konfigurasjonsfilen ble før brukt til auto-mount av studentens sambaad-mappe. Nå er den linjen som gjør det kommentert ut for å gjøre pålogging kjappere. Studenter må nå mounte sambaad manuelt med Nautilus.

  <?xml version="1.0" encoding="utf-8" ?>
  <!DOCTYPE pam_mount SYSTEM "pam_mount.conf.xml.dtd">
  <!--
  See pam_mount.conf(5) for a description.
  -->
  <pam_mount>
  <!-- debug should come before everything else,
  since this file is still processed in a single pass
  from top-to-bottom -->
  <debug enable="0" />
  <!-- Volume definitions -->
  <!-- pam_mount parameters: General tunables -->
  <!--
  <luserconf name=".pam_mount.conf.xml" />
  -->
  <!-- Note that commenting out mntoptions will give you the defaults.
  You will need to explicitly initialize it with the empty string
  to reset the defaults to nothing. -->
  <mntoptions allow="nosuid,nodev,noserverino,loop,encryption,fsck,nonempty,allow_root,allow_other" />
  <!--
  <mntoptions deny="suid,dev" />
  <mntoptions allow="*" />
  <mntoptions deny="*" />
  -->
  <mntoptions require="nosuid,nodev,noserverino" />
  <logout wait="0" hup="0" term="0" kill="0" />
  <!-- pam_mount parameters: Volume-related -->
  <mkmountpoint enable="1" remove="true" />
  <!-- <volume fstype="cifs" server="sambaad.stud.ntnu.no" path="%(USER)" mountpoint="/home/%(USER)/sambaad-%(USER)" options="defaults,noserverino" /> -->
  </pam_mount>

Brennemaskinen

Brennemaskinen er PC-en som brukes for å brenne logiske IC-er på sanntidssalen. PC-en kjører Windows, skal ikke være koblet på nettverket og har automatisk innlogging til en upriviligert bruker.

Programvare som er installert på brennemaskinen:

  • Dataman v3.10/11.2014

Endringslogg

Image: Win-Ubuntu-Sanntid

Rulles ut Sommer 2018

Partisjonstabell

Filsystem Størrelse Kommentarer
ntfs250gbWindows 7 Enterprise
ext4100gbLinux Ubuntu 16.04.1
ext3140gb/home
swap10gb swap

OS

Image: timelord-v2

Plan for andre image. Rulles ut før høstsemesteret 2015.

Partisjonstabell

Filsystem Størrelse Kommentar
ntfs ~250GB Windows 7 Enterprise 64-bit
ext3 ~100GB Ubuntu 14.04 LTS 64-bit
ext3 ~140GB /home
swap ~10GB Swap

OS

  • Windows 7 er nå 64-bits
    • Vi har nå Simatic som kan installeres på 64-bits (før var det bare for 32-bits)
  • (?) Windows rulles ut med SCCM
  • Linux-partisjonen ligger nå på EXT3-filesystem for at vi skal kunne ta image med Symantec Ghost i stedet for Clonezilla.
  • Linux-partisjonen deles opp i Ubuntu og /home for å gjøre det mulig å rulle ut nytt image uten å slette alle studentenes filer.
    • Research må gjøres for å få til utrulling av Windows uten å formatere Linux-partisjonen.

Utrulling

  • MAC <⇒ hostname bruker nå store bokstaver med bindestrek i stedet for små bokstaver med kolon:
    • AA-BB-CC-DD-EE hostname
  • (?) gjør at den prøver helt til den får til å koble til frigg (pga ustabilt nett eller hva enn det er)
    • setup.sh

* (?) Clonezilla hvis aktuelt *

Programvare (Windows)

Ny programvare i dette imaget:

Programvare (Linux)

Ny programvare i dette imaget:

Andre endringer i oppsettet:

  • Domenepålogging fjernes
  • Lokal (offline) bruker opprettes
    • med passord som er enkelt, men som tilfredsstiller NTNU ITs passordkrav

Image: timelord-v1.2.1

Første utrullede image. Rullet ut desember 2014.

Partisjonstabell:

Filsystem Størrelse Kommentar
ntfs ~250GB Windows 7 Enterprise 32-bit
ext4 ~240GB Ubuntu 14.04 LTS 64-bit
swap ~10GB Swap

Stikkord:

  • Domenepålogging
    • Bruk bare brukernavn, ikke «@ntnu.no»
  • Automounting av brukers sambaad-mappe til $HOME/sambaad-$USER
    • Fjernet; se patch 2015-02-17
  • Klokkesynkronisering mot ntp.uio.no med ntpd
  • Hjemmemappe opprettes ved brukers første pålogging på hver enkelte maskin
    • Først var det pam_mount.so som gjorde dette; etter patch 2015-02-18 er det pam_mkhomedir.so
  • [sikkert andre ting som jeg ikke kommer på…]

=== Patch: 2015-??-?? ==⇒ Dette er en plan for en mulig patch i løpet av (våren?) 2015. Hensikten med denne er å gjøre det enklere å kjøre fremtidige patcher.

Ny programvare:

  • inotify-tools
    • For å detektere når patcheminnepinnen er satt inn
  • qpatchd
    • Skript lagd av Åsmund
    • Skal være eid av root med 500-rettigheter
  • emacs
    • Ønsket av studenter

patch-qpatchd.sh

<code

=== Patch: 2015-??-?? ==⇒ Dette er en plan for en mulig patch i løpet av (våren?) 2015. Hensikten med denne er å gjøre det enklere å kjøre fremtidige patcher.

Ny programvare:

  • inotify-tools
    • For å detektere når patcheminnepinnen er satt inn
  • qpatchd
    • Skript lagd av Åsmund
    • Skal være eid av root med 500-rettigheter
  • emacs
    • Ønsket av studenter

patch-qpatchd.sh

<code

#!/bin/bash
if [ "$BASH_ARGV" != "" ]; then
    cp "$BASH_ARGV" /tmp/patch.sh
    chmod +x /tmp/patch.sh
    sudo /tmp/patch.sh
else
    apt-get -y install inotify-tools
    echo $?
    tail -n1 "$0"> /root/qpatchd
fi

</code>

=== Patch: 2015-02-18 ==⇒ Denne endringen var bare tillegg av én linje i /etc/pam.d/common-session:

<code

=== Patch: 2015-02-18 ==⇒ Denne endringen var bare tillegg av én linje i /etc/pam.d/common-session:

<code

session optional	pam_mkhomedir.so

</code>

Denne linjen måtte inn fordi forige patch fjernet auto-mounting av sambaad, og det var den prosessen opprettet hjemmemapper. Derfor fikk man ikke logget inn på maskiner som man ikke hadde logget inn på før.

patch_2015-02-18.sh

  #!/bin/bash

  if [ "$BASH_ARGV" != "" ]; then
      cp "$BASH_ARGV" /tmp/patch.sh
      chmod +x /tmp/patch.sh
      sudo /tmp/patch.sh
  else
      read -p "Copied and run."
      echo ''>> /etc/pam.d/common-session
      echo '# Make home direcotry for user. pam_mount.so was used before.'>> /etc/pam.d/common-session
      echo 'session optional  pam_mkhomedir.so'>> /etc/pam.d/common-session
      echo $?
  fi

=== Patch: 2014-02-17 ==⇒ Denne endringen ble gjort i form av et BASH-skript som ble kjørt på maskinene. Bortsett fra plassene 6, 8, 9, 10 og 11; patcher de senere.

Innhold i denne patchen:

  • Kommenterte ut linjen i /etc/security/pam_mount.conf.xml som auto-mountet sambaad.
    • Lagde backup av filen med navn pam_mount.conf.xml.bak
  • Installerte go 1.4.1 fra golang.org (tarball). Fjernet go 1.2 fra maskinen.
  • La til den nye go-installasjonen i PATH i /etc/bash.bashrc:
    • export PATH=$PATH:/usr/local/go/bin
  • Oppdaterte maskinnavn ⇐

=== Patch: 2014-02-17 ==⇒ Denne endringen ble gjort i form av et BASH-skript som ble kjørt på maskinene. Bortsett fra plassene 6, 8, 9, 10 og 11; patcher de senere.

Innhold i denne patchen:

  • Kommenterte ut linjen i /etc/security/pam_mount.conf.xml som auto-mountet sambaad.
    • Lagde backup av filen med navn pam_mount.conf.xml.bak
  • Installerte go 1.4.1 fra golang.org (tarball). Fjernet go 1.2 fra maskinen.
  • La til den nye go-installasjonen i PATH i /etc/bash.bashrc:
    • export PATH=$PATH:/usr/local/go/bin
  • Oppdaterte maskinnavn ⇐

MAC-adresse for maskinene (se http://itk.ntnu.no/api/mac-hostname)

  • Nye pakker:
    • vim
    • g++
    • gdb
    • codeblocks
    • valgrind
    • monodevelop
    • mono-devel
    • eclipse
  • Fjernede pakker:
    • golang
    • golang-go

patch_2015-02-17.sh

  #!/bin/bash

  #if [ $SHLVL -eq 1 ]; then
  if [ "$BASH_ARGV" != "" ]; then
      cp "$BASH_ARGV" /tmp/patch.sh
      chmod +x /tmp/patch.sh
      sudo /tmp/patch.sh
  else
      # Get MAC-address
      HWADDR=$(/root/get-hwaddr.sh)
      MACHINENAME=
      echo "Checking if MAC $HWADDR has a hostname..."
      HWADDR_HOSTNAME_LINE=$(wget -qO- http://itk.ntnu.no/api/mac-hostname | grep -m1 $HWADDR)
      if [ "$HWADDR_HOSTNAME_LINE" != "" ];then
          MACHINENAME=${HWADDR_HOSTNAME_LINE#* }
          echo "This machine already has a hostname: $MACHINENAME"
      else
          echo "Cound not find existing hostname assosiation."
          read -p "Enter this machine's name (e.g. itk-d651) (NOT itk-d651-ubuntu!)
     >> " MACHINENAME
          echo "==== Updating machine name assosiation..."
          echo "  $HWADDR => $MACHINENAME"
          wget -qO/dev/null "http://itk.ntnu.no/api/mac-hostname.php?0=$HWADDR $MACHINENAME"
          echo $?
      fi

      echo "Will now install go 1.4.1..."
      sleep 5
      echo "Removing old version..."
      apt-get -y remove golang golang-go
      echo "Downloading..."
      wget -q -O go.tar.gz https://storage.googleapis.com/golang/go1.4.1.linux-amd64.tar.gz
      echo "Extracting..."
      tar -C /usr/local -xzf go.tar.gz
      echo "Installing..."
      echo 'export PATH=$PATH:/usr/local/go/bin'>> /etc/bash.bashrc
      rm go.tar.gz

      echo "Next is system update. Sleeping for 5 sec..."
      sleep 5

      apt-get update
      apt-get -o Dpkg::Options::="--force-confold" --force-yes -y upgrade
      apt-get -y install vim g++ gdb codeblocks valgrind monodevelop mono-devel eclipse
      apt-get -y auroremove

      cp /etc/security/pam_mount.conf.xml /etc/security/pam_mount.conf.xml.bak
      echo '<?xml version="1.0" encoding="utf-8" ?>
  <!DOCTYPE pam_mount SYSTEM "pam_mount.conf.xml.dtd">
  <!--
      See pam_mount.conf(5) for a description.
  -->

  <pam_mount>

          <!-- debug should come before everything else,
          since this file is still processed in a single pass
          from top-to-bottom -->

  <debug enable="0" />

          <!-- Volume definitions -->

          <!-- pam_mount parameters: General tunables -->

  <!--
  <luserconf name=".pam_mount.conf.xml" />
  -->

  <!-- Note that commenting out mntoptions will give you the defaults.
       You will need to explicitly initialize it with the empty string
       to reset the defaults to nothing. -->
  <mntoptions allow="nosuid,nodev,noserverino,loop,encryption,fsck,nonempty,allow_root,allow_other" />
  <!--
  <mntoptions deny="suid,dev" />
  <mntoptions allow="*" />
  <mntoptions deny="*" />
  -->
  <mntoptions require="nosuid,nodev,noserverino" />

  <logout wait="0" hup="0" term="0" kill="0" />

          <!-- pam_mount parameters: Volume-related -->

  <mkmountpoint enable="1" remove="true" />

  <!-- <volume fstype="cifs" server="sambaad.stud.ntnu.no" path="%(USER)" mountpoint="/home/%(USER)/sambaad-%(USER)" options="defaults,noserverino" /> -->

  </pam_mount>'> /etc/security/pam_mount.conf.xml
      echo "Done"
      echo ""
      echo "Going to reboot in 10 seconds..."
      sleep 10
      reboot
  fi





2018/01/12 08:39, aasmunst