星期六, 3月 03, 2018

Yast2 with openSUSE Leap 42.3 in Azure 小記

20180302

Yast2 with openSUSE Leap 42.3 in Azure 小記

OS: openSUSE Leap 42.3 in Azure

我想 openSUSE / SUSE 與其他 linux 一個很大的不同點就是

他有 yast2 的圖形管理介面



文字管理介面 yast 很方便
但是有時候針對一些要選取的 item 很多的時候, 例如軟體管理, 或是伺服器管理
那真的是圖形介面比較好用.


想到系統是否用圖形介面, 大家會如何判斷呢?

早期在 System V 的時代, 大家應該是用 runlevel 指令吧

# runlevel
N 5

上面的指令會告訴我們目前是使用 runlevel 5 來運作, 所以會判斷可能是有圖形環境的
我也是在 Azure 上面下了 runlevel 指令, 加上下面會談到的認知, 產生錯覺, 以為 Azure 上面的 openSUSE VM 是有圖形環境的.


那目前在 systemd 的環境下如何判斷呢?
可以使用 ls -l 觀察  /etc/systemd/system/default.target
# ls  -l   /etc/systemd/system/default.target
lrwxrwxrwx 1 root root 40 Jul 21  2017 /etc/systemd/system/default.target -> /usr/lib/systemd/system/graphical.target

以我的桌機來說, 目前 default.target 就指向 graphical.target 也就是圖形介面
然後與原來 system v 對照可以觀察

# ls  -l   /usr/lib/systemd/system/runlevel*.target
lrwxrwxrwx 1 root root 15 Feb 28 19:44 /usr/lib/systemd/system/runlevel0.target -> poweroff.target
lrwxrwxrwx 1 root root 13 Feb 28 19:44 /usr/lib/systemd/system/runlevel1.target -> rescue.target
lrwxrwxrwx 1 root root 17 Feb 28 19:44 /usr/lib/systemd/system/runlevel2.target -> multi-user.target
lrwxrwxrwx 1 root root 17 Feb 28 19:44 /usr/lib/systemd/system/runlevel3.target -> multi-user.target
lrwxrwxrwx 1 root root 17 Feb 28 19:44 /usr/lib/systemd/system/runlevel4.target -> multi-user.target
lrwxrwxrwx 1 root root 16 Feb 28 19:44 /usr/lib/systemd/system/runlevel5.target -> graphical.target
lrwxrwxrwx 1 root root 13 Feb 28 19:44 /usr/lib/systemd/system/runlevel6.target -> reboot.target
所以我才會下了 runlevel 看到 5 就會以為是有圖形介面基礎的錯覺
但是人生就是很多 But
But in Azure ….. openSUSE Leap 42.3 VM
沒有 /etc/systemd/system/default.target

然後觀察 /etc/systemd/system/default.target.wants/ 指向兩個 service
 
# ls  -l  /etc/systemd/system/default.target.wants/
total 0
lrwxrwxrwx 1 root root 47 Jan 14 19:25 YaST2-Firstboot.service -> /usr/lib/systemd/system/YaST2-Firstboot.service
lrwxrwxrwx 1 root root 50 Jan 14 19:25 YaST2-Second-Stage.service -> /usr/lib/systemd/system/YaST2-Second-Stage.service

觀察他們的內容

# cat  /usr/lib/systemd/system/YaST2-Firstboot.service

[Unit]
Description=YaST2 Firstboot
After=apparmor.service local-fs.target plymouth-start.service YaST2-Second-Stage.service
Before=getty@tty1.service serial-getty@ttyS0.service serial-getty@ttyS1.service serial-getty@ttyS2.service
Before=display-manager.service
ConditionPathExists=/var/lib/YaST2/reconfig_system

[Service]
Type=oneshot
Environment=SYSTEMCTL_OPTIONS=--ignore-dependencies TERM=linux
ExecStartPre=-/usr/bin/plymouth quit
ExecStartPre=-/usr/bin/plymouth --wait
ExecStart=/usr/lib/YaST2/startup/YaST2.Firstboot
ExecStartPost=/usr/bin/rm -f /var/lib/YaST2/reconfig_system
ExecStartPost=/usr/bin/systemctl restart systemd-vconsole-setup.service
TimeoutSec=0
RemainAfterExit=true
StandardInput=tty

[Install]
WantedBy=default.target


# cat   /usr/lib/systemd/system/YaST2-Second-Stage.service | grep  -v  '^#'

[Unit]
Description=YaST2 Second Stage
After=apparmor.service local-fs.target plymouth-start.service
Before=getty@tty1.service serial-getty@ttyS0.service serial-getty@ttyS1.service serial-getty@ttyS2.service
Before=display-manager.service
ConditionPathExists=/var/lib/YaST2/runme_at_boot

[Service]
Type=oneshot
Environment=SYSTEMCTL_OPTIONS=--ignore-dependencies TERM=linux PX_MODULE_PATH=""
ExecStartPre=-/bin/sh -c 'if [ -x /usr/bin/plymouth ] ; then if [ `/usr/bin/systemctl get-default` = "multi-user.target" ];then /usr/bin/plymouth quit; else /usr/bin/plymouth deactivate --hide-splash; fi; fi'
ExecStart=/usr/lib/YaST2/startup/YaST2.Second-Stage
RemainAfterExit=yes
TimeoutSec=0
ExecStartPost=/bin/sh -c '/usr/bin/printf "\033c" > /dev/tty1'
ExecStartPost=/usr/bin/rm -f /var/lib/YaST2/runme_at_boot
ExecStartPost=/usr/bin/systemctl restart systemd-vconsole-setup.service
StandardInput=tty

[Install]
WantedBy=default.target

沒有啟動 display-manager.service 的念頭 ……..

另外也有可能從這邊發現到 ( 至少我是從這邊發現到的 …  )

使用 yast2 軟體管理功能( 目前當然只會出現文字介面 )
#yast2  sw_single

切換上面的 Filter 到 Patterns
就會發現 X Window System 根本沒有裝, 怎麼 yast2 ….



接下來就做個實驗吧
選取 GNOME Base System空白鍵 選取安裝
-- > 點選 Accept


接下來就會告知有一大堆相依性套件要安裝 -- >  OK



開始進行安裝( 933 packages?? ), 去喝杯咖啡吧 :)



點選 Finish 完成安裝 ( 總共花了 20分42秒 )



若是不想用這樣互動的方式安裝 ( 應該都不會想的 …  )
可以用指令指定 pattern 的方式安裝
想要知道有哪些 pattern 可以選, 可以使用 zypper 指令

# zypper   search  -t  pattern

Retrieving repository 'Python Modules (openSUSE_Leap_42.3)' metadata .....[done]
Building repository 'Python Modules (openSUSE_Leap_42.3)' cache ..........[done]
Retrieving repository 'editors' metadata ..................................................................................................[done]
Building repository 'editors' cache .......................................................................................................[done]
Loading repository data...
Reading installed packages...

S  | Name                 | Summary                             | Type   
---+----------------------+-------------------------------------+--------
  | 64bit                | 64-Bit Runtime Environment          | pattern
i  | apparmor             | AppArmor                            | pattern
i+ | base                 | Base System                         | pattern
  | books                | Documentation                       | pattern


上面就會列出所有的 pattern

所以要跟上面達成一樣的效果, 我們就可以用

# zypper  install  -t  pattern  gnome_basis

Loading repository data...
Reading installed packages...
Resolving package dependencies...

The following 18 applications are going to be installed:
 Documents "Firefox Web Browser" "GNOME Clocks" "GNOME Color Manager" "GNOME Control Center" "GNOME Package Updater" "GNOME Power Statistics" "GNOME
 Software" "LibreOffice Base" "LibreOffice Calc" "LibreOffice Draw" "LibreOffice Impress" "LibreOffice Writer" Nautilus NetworkManager "Print Settings"
 Terminal YaST

The following 933 NEW packages are going to be installed:
 AppStream Mesa-libGLESv2-2 ModemManager MozillaFirefox MozillaFirefox-branding-openSUSE NetworkManager NetworkManager-branding-openSUSE

安裝 GNOME 桌面基本環境

不管是用 #yast2  sw_single 還是 #zypper  install  -t  pattern  gnome_basis 安裝
安裝完成之後, 就可以來測試了

在 client 端:

使用 ssh 指令加上 -Y 來進行連線
  • -Y      Enables trusted X11 forwarding.  Trusted X11 forwardings are not subjected to the X11 SECURITY extension controls.


> ssh   -Y   -l  USER_NAME    SERVER_IP
Password:
openSUSE Leap 42.3 x86-64

As "root" use the:
 - zypper command for package management
 - yast command for configuration management

Have a lot of fun...
/usr/bin/xauth:  file /home/sakana/.Xauthority does not exist

這邊其實 ls -a  ~ 就會看到 ~/.Xauthority 有被建立起來

使用 sudo  su - 切換 root
> sudo su -
[sudo] password for sakana:

切換完成之後, 測試 yast2
# yast2


覺得傷心 ….. 為何還是文字介面 Orz…

此時想換條路走, 那如果用 root 直接連線呢?
畢竟有經過 sudo, 另外 openSUSE / SUSE 其實也不像 ubuntu 會停用 root 密碼

來設定一下 root 密碼
# passwd   root
New password:
Retype new password:
passwd: password updated successfully


使用 root 來連線測試看看

> ssh   -Y   -l  root    SERVER_IP

Password:
Last failed login: Fri Mar  2 11:15:23 UTC 2018 from 220.39.174.83 on ssh:notty
There were 6 failed login attempts since the last successful login.
openSUSE Leap 42.3 x86-64

As "root" use the:
 - zypper command for package management
 - yast command for configuration management

Have a lot of fun...
/usr/bin/xauth:  file /root/.Xauthority does not exist


再次執行 yast2
# yast2


終於成功了  ( 灑花 )

接下來順手處理一下 遠端桌面連線吧 :)
因為其實有 yast2 就很充足了
在 Azure, 官方建議是用 xrdp

安裝 xrdp 套件

# zypper  install   xrdp
正在載入套件庫資料...
正在讀取已安裝的套件...
正在解決套件相依性...

將會安裝下列 1 個新的套件:
 xrdp

1 要安裝的新套件.
全部下載大小:357.7 KiB。已快取:0 B。 完成操作後,將使用額外的 2.0 MiB。
要繼續嗎? [y/n/...? 顯示所有選項] (y):

觀察 xrdp 服務
# systemctl  status  xrdp
● xrdp.service - xrdp daemon
  Loaded: loaded (/usr/lib/systemd/system/xrdp.service; disabled; vendor preset: disabled)
  Active: inactive (dead)

啟動 xrdp
# systemctl  start  xrdp

觀察 xrdp 服務
# systemctl  status  xrdp
● xrdp.service - xrdp daemon
  Loaded: loaded (/usr/lib/systemd/system/xrdp.service; disabled; vendor preset: disabled)
  Active: active (running) since 五 2018-03-02 12:28:23 UTC; 3s ago
 Process: 52882 ExecStart=/etc/xrdp/xrdp.sh start (code=exited, status=0/SUCCESS)
Main PID: 52893 (xrdp)
   Tasks: 2 (limit: 512)
  CGroup: /system.slice/xrdp.service
          ├─52893 /usr/sbin/xrdp
          └─52895 /usr/sbin/xrdp-sesman


設定開機啟動
# systemctl  enable  xrdp
Created symlink from /etc/systemd/system/multi-user.target.wants/xrdp.service to /usr/lib/systemd/system/xrdp.service.


開啟 Azure 上面的 RDP ( port 3389 ) 防火牆設定 in Network Security Group

在 client 端:
使用 RDP 軟體來進行連線測試, 我是用 xfreerdp

> xfreerdp   -u   root  SERVER_IP

出現登入畫面, 輸入帳號密碼


大功告成



終於解了之前心理的一個小問題

~ enjoy it

Reference:

沒有留言: