2020.03.11

LinuxとWindowsで時計がズレるのを直す・・・(linuxbean)

Linux と Windows のデュアルブートでOSを行き来すると、時計が大きくずれる現象が発生する。これは Linux ではPCのハードウェア時計(RTC)が UTC(協定世界時)で動作しているのに対し、WindowsではRTCはローカルタイム(JST=日本標準時)で動作しているためである。
以前はLinuxでは、 /etc/default/rcS に UTC=no と記載することにより、RTCの設定がローカルタイムであることを設定できたが、いつの頃からか /etc/default/rcS は存在しなくなった。

それで、その修正方法を記述しておく。使用するコマンドは timedatectl コマンドである。

$ timedatectl status
      Local time: 水 2020-03-11 17:41:08 JST
  Universal time: 水 2020-03-11 08:41:08 UTC
        Timezone: Asia/Tokyo (JST, +0900)
     NTP enabled: yes
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a

最後から一つ上の行にRTCがローカルタイムゾーンか否かの記載がある。

$ timedatectl set-local-rtc true

とするとこの設定を変更することができる。root権限でなくても設定できる。疑問を感じるが。
設定変更後に再度設定状況を読み出すと、

$ timedatectl status
      Local time: 水 2020-03-11 17:42:03 JST
  Universal time: 水 2020-03-11 08:42:03 UTC
        Timezone: Asia/Tokyo (JST, +0900)
     NTP enabled: yes
NTP synchronized: no
 RTC in local TZ: yes
      DST active: n/a

Warning: The RTC is configured to maintain time in the local time zone. This
         mode is not fully supported and will create various problems with time
         zone changes and daylight saving adjustments. If at all possible use
         RTC in UTC, by calling 'timedatectl set-local-rtc 0'.

警告メッセージが出るが、RTC in local TZ:yesとなり、これで設定終了である。
 
設定は終了して確認すると

Windowsを終了してlinuxを立ち上げると、時刻は正しく表示されたが、linuxからWindowsに戻ると時刻がずれる。
タスクバーの右側の時刻表の上で右クリックで「日付と時刻の調整」を選んで「時刻を自フォウ的に設定する」で切り替えをオフ→オンとすると、時刻が正しく設定される。

 
“RTC in local TZ: no” のままが正解であるのか?? 色々調査の結果下記の結論を得た。
 
linuxbean 14.04では、”RTC in local TZ: no” のままが良く、linuxbean 16.04並びにUbuntu 20.04では、”RTC in local TZ: yes”とする必要があるのが分かった。これはlinux系のOSでは以前はJSTを基準としていたのに対し、近年になりRTCを基準とするように変わったためだと思われる。設定を試みる場合は、RTC in local TZ でyesとnoの両方を良く確かめておく必要がある。


2020.01.29

LinuxbeanでWI-U2-433DHP・・・(linuxbean)

コンパイルでエラーとなる時は(その2)を参照してください。
 
BuffaloのUSB接続のWi-FiアダプターWI-U2-433DHPを購入した。もちろんwindows 10では問題なく使えたが、Linuxbeanを立ち上げると、WI-U2-433DHBは認識しない。
そこで、googleで調べたら、いくつかのページが見つかったが、改めて使用できるよう行った内容を記すこととした。

まず最初にDKMS(Dynamic Kernel Module Support)をインストールする。

$ sudo apt-get update
$ sudo apt-get install dkms

ソースをダウンロード

$ git clone https://github.com/msharov/rtl8812au.git

作業するディレクトリーを作り、ダウンロードで得られたrtl8812auを移す。

$ cp -r rtl8812au /home/nakamura/temp

rtl8812auのディレクトリーに入って、作業に先立ちWI-U2-433DHPのデバイスIDを調べる。
WI-U2-433DHPを挿した状態で

nakamura@Linux-host:~$ lsusb
libudev: udev_new: missing = in /etc/udev/udev.conf[8]; skip line
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 005: ID 03f0:2e4a Hewlett-Packard 
Bus 001 Device 004: ID 152d:0569 JMicron Technology Corp. / JMicron USA Technology Corp. 
Bus 001 Device 003: ID 03f0:094a Hewlett-Packard Optical Mouse [672662-001]
Bus 001 Device 002: ID 0411:029b BUFFALO INC. (formerly MelCo., Inc.) 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

BUFFALO INC.となっているものが目的のデバイスで、IDは0411:029bの部分である。
/os_dep/linux/usb_intf.c を開く。

nakamura@Linux-host:~$ vi /home/nakamura/temp/rtl8812au/os_dep/linux/usb_intf.c

#ifdef CONFIG_RTL8821A の中に {USB_DEVICE(0x0411, 0x029B),.driver_info = RTL8821}, /* Buffalo – WI-U2-433DHP */ を追加する
0x0411と0x029Bは先ほど調べたIDである。

#ifdef CONFIG_RTL8821A
        /*=== Realtek demoboard ===*/
   .......................................
   .......................................
   .......................................
    {USB_DEVICE(0x3823, 0x6249),.driver_info = RTL8821}, /* Obihai - OBiWiFi */
    {USB_DEVICE(0x0411, 0x029B),.driver_info = RTL8821}, /* Buffalo - WI-U2-433DHP */
#endif

そしてビルド

$ make
$ sudo insmod 8812au.ko

モジュールがロードされたことの確認。

$ lsmod

表示されたリストに8812auがあればOK

起動時にスタートさせるため/etc/udev/udev.confに8812auの記述行を追加。

しかし、linuxbeanを更新したら8812auが認識されなくなった。

やむなく、力技で下記を/etc/rc.localに追加

# cd /etc
vi rc.local

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

insmod /home/nakamura/temp/rtl8812au/8812au.ko      <==== 追加 (makeしたdirectry内の8812au.koを指定)

exit 0

これで再起動すれば、WI-U2-433DHPが認識され、使用可能となる。


2019.02.06

Linuxbeans 14.04 簡易NASへの接続・・・(etc)

最近のWi-Fiルーターには、USB端子にUSBメモリーやUSB接続のHDDを接続すると簡易的なNASとして使えるようになっているものがある。それで、我が家では百均で買ってきたUSB接続のメモリーカードリーダーに余っていたSDメモリーカードを挿入して簡易NASとして使っている。

これは、複数のPCやスマホとの間でチョットしたファイルのやり取りを行うのに便利である。それで、以前には非力となったPCにLinuxbeanの12.04版を入れて使っていたが、14.04版に上げたところ簡易NASに接続できなくなった。

NAS接続は/etc/fstabに下記の1行を書いて、自動マウントしていた。
//192.168.1.1/xxxxx /media/net cifs user=hogehoge,password=,uid=1000,uid=1000,default 0 0
しかし、linuxbeanの版数を14.04に上げたら接続できなくなり、色々調べたら下記のようにsec=ntmlを挿入する必要があった。
//192.168.1.1/xxxxx /media/net cifs user=hogehoge,password=,uid=1000,sec=ntlm 0 0

# mount -aを実行すると、fstabに記述したNASへの接続がなされ、# ls /media/netで接続が確認できた。

自動マウントを試みるために、再起動すると正しくNAS接続がなされたが、# dmesg | grep cifsで振る舞いを見る。

CIFS VFS: cifs_mount failed w/return code = -101

上記表示が5行続き、自動マウントに失敗している。しかし、ログインされた画面で確認すると、正しく接続されている。

いろいろ調べると、fstabが実行されるときには、まだネット接続は確率されておらず、その後にネット接続が確立された時点で、NAS接続もなされるようである。 いささか、気に入らないが、結果的には正しく接続されるので良しとする。

2015.10.14

Linux Bean 12.04 と無線LAN (WLI-UC-GNP)・・・(etc)

PCはwindows 10にアップグレードしたが、サーバーを閉じたのでFreeBSDも触れることがなくなり、Win以外ではClientはLinuxを弄ることになっている。それで、最近、軽いと評判のLinux BeanをUSBメモリーにインストールして遊んでいる。
インストールは特に記すこともなく、簡単に終わるが、例によってBuffaloのUSB無線LANアダプターのWLI-UC-GNPのドライバーをインストールする必要があった。以下はその手順である。 なお、Linux bean 14.04では、kernel headerの仕様が変わりコンパイルできなかった。

(1) コンパイル環境の構築

まず、コンパイル環境を整える。

$ sudo apt-get install make gcc libc6-dev

(2) ドライバーソースのダウンロード

Mediatekのページ(英語のページ)のMenu→Wi-Fi→related Linksと辿り、Downloads – Drivers and FirmwareをクリックしてLinux OSの欄にある、Parts Number:
RT8070/ RT3070/ RT3370/ RT3572/ RT5370/ RT5372/ RT5572 USB
をクリックしてダウンロードする。ダウンロードには名前とメールアドレスの入力を要求される。

(3) コンパイルの準備

$ mkdir temp     ・・・・作業用ディレクトリーの作成
$ bzip2 -d DPO_RT5572_LinuxSTA_2.6.1.3_20121022.tar.bz2
$ tar xvf  DPO_RT5572_LinuxSTA_2.6.1.3_20121022.tar
$ cd  DPO_RT5572_LinuxSTA_2.6.1.3_20121022
$ vi os/linux/config.mk
  その中の、56行目~60行目あたりの n を y に書き換える。
  
# Support Wpa_Supplicant
HAS_WPA_SUPPLICANT=y
# Support Native WpaSupplicant for Network Maganger
HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y

次にcommon/rtusb_dev_id.cの120行あたりのUSB_DEVICEの一覧の最後に
Vendor IDとProduct IDを追加する。GW-USMicronもついでに追加した。

$ vi common/rtusb_dev_id.c
    {USB_DEVICE(0x1EDA,0x2012)}, /* Airties */
    {USB_DEVICE(0x1EDA,0x2210)}, /* Airties */
 {USB_DEVICE(0x2019,0xED14)}, /* Planex GW-Usmicron */
    {USB_DEVICE(0x0411,0x019E)}, /* Buffalo WLI-UC-GNP */

(4) makeとinstall

ファイルの修正が済んだらmakeとinstallである。

$ sudo make     ・・・・パスワードを要求されたら入れる。
$ sudo install

再起動すれば、使えるようになっている。


2015.02.25

ubuntuにおけるwordpressでのmod_rewriteの重要性・・・(WordPress)

先に、wordpressで複数ブログの作成方法を書いたが、自分で別のubuntuで立てたサーバーにwordpressを入れ直した時、apache2のmod_rewriteを有効にするのをすっかり忘れていて、さんざんな目にあった。動いているwordpressをコピーして入れても複数ブログ作成で、新規に追加したブログのダッシュボードに行こうとするとNot Foundになる。
ネットで調べても、.htaccessやwp-config.phpの記述に関するものばかりで、どうしても分からず、まいったなあーと思っていたが、遂にapache2のmod_rewriteに行き着いた。
以下が、mod_rewriteを有効にした作業内容である・

(1) mod_rewriteがインストールされていることの確認

 # cat /etc/apache2/mods-available/rewrite.load
LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so

これで、mod_rewrite.soがLoadされていることが分かるが、これだけでは有効でない。

(2) mod_rewriteを有効にする

sudo a2enmod rewrite

実行すると以下の様なメッセージが出てくる。

Enabling module rewrite.
To activate the new configuration, you need to run:
  service apache2 restart

(3) apache2の再起動

sudo service apache2 restart

これで、正常に表示されるようになった。


« Previous | Next »