えくすとらんのブログ

archupdateでカーネルバージョンアップが失敗する

カーネルアップデートするとエラーが出て

キーボード.マウスの入力を受け付けなくなる

問題ではどうやらcpioでの作成が

うまく行ってなかったのかなとおもう

アップデートの際
initramfs-linux-*.img
initramfs-linux-*-fallback.img
vmlinuz-linux*

というファイルが/bootにできているようですが

このファイルと実際のカーネルバージョンが違うと

エラーになるのかなぁ

なので...カーネルアップデートでエラーが出る場合は
(私の場合はインストールディスクを使ってchrootからやっています)


boot以下の
initramfs-linux-*.img
initramfs-linux-*-fallback.img
vmlinuz-linux*

を削除
もういちどカーネルとヘッダーをインストール
たぶんこの時点でmkinitcpioが行われているとおもうのだけれど失敗の場合は
mkinitcpioを手動で起動
新しく
initramfs-linux-*.img
vmlinuz-linux*
initramfs-linux-*-fallback.img


を作ればよいのではないかとおもっています(実行される方は自己責任にてお願いします えくすとらんは記事の実行によって起こったいかなるトラブルにも対処できません)

なぜアップデート時にimgやvmlinuzの作成が失敗するようになってしまったのか?とかどうやればもとに戻るのかなどと
疑問が残りますがひとまずカーネルアップデートはこの方法で最新にできるかなぁ








jigen2_4更新

  • コマンド実行日取得後の実行期間が30日はちょっとながいので7日くらいにしてみました(30日表示されると実行日が見えなかったので)
...このへんの設定はコンフィグファイルsave.txt作って直接編集にしたほうがよいのかもしれませんねぇ(編集可能な数値としてはsavetxtフォルダ階層情報・コマンド実行までの期間・実行日取得からの実行期間・起動してからのシャットダウンまでの時間.sudopass.シェルコマンド等...)

なんの計画もなしおもうがままにつくったので関数.classなども
使ってないですね(オブジェクト無思考・・・)
やはり関数など作っておくと後々”戻る”処理をするとき便利なのかもしれませんねぇ
次から考えてみよう...(直さないのか?)

今日はすずしくなったなぁ...






jigen2_3更新


とりあえず自分の環境ではうまく動作しているようですが

少し改良したほうが良さそうなところをみつけましたので

なおしてみました

  • saveファイルの場所をきちんと記述しました(どうやらちゃんとかかないと起動の仕方によってファイルの作成場所がかわってしまうようです(デフォルトはデスクトップにしてありますので任意の場所をopen関数各所フルパスで記述していただけるとよいかとおもいます
  • 初回起動時notuchだとセーブファイルがないのでエラーがでるようなので例外処理をいれてみました
起動のたびにコマンド実行日が近くなりますのでお気をつけください
倉庫に一応いれておきました



どうかな...





自分専用jigenpy

jigen2pyを

外付けデバイス削除専用で更新してみました

ddコマンドでゼロ埋め処理をする(のはず)ようにしたので

デバイス名や実行日の入力を間違えると非常に危険です

55行目のsudopassをいれてください

デフォルトでsdb1が削除対象です

*実はまだ試していないのでコマンドが正常動作するのかどうなのかわかっていません(試すと今つけている外付けデバイスの中身がすべて消えるので他デバイスを用意しないと
だめですね^^;)

一応倉庫にjigen2_1.pyでおいてあります

えくすとらんはこのスクリプトによって起こったいかなる
トラブルにも対処できませんのであしからず...












jigen2py 更新

パソコンを自動起動させたところ

スクリプトの立ち上がりがあまりにも早く

デスクトップの環境が揃うまでにスクリプトが終わってしまう

ことに気づきました

#!/usr/bin/python3.7
# -*- coding: utf-8 -*-
import datetime
import time
import sys, select
import subprocess as sp
print("しばらくおまちください")
#立ち上がりのウエイト設定
time.sleep(5)
#今日を取得
today = datetime.date.today()
print(today)
print("実行日を更新しますか?(y or notuch is run):  ")
#インプット選択10秒間キー入力がなければマイナス一日
i, o, e = select.select( [sys.stdin], [], [], 10 )

if (i):
    print("input", sys.stdin.readline().strip())
    a = "y"
else:
    print("notuch key")
    a = "n"
if a == "y":
    global b
    global f
    b = input("何日後に設定しますか?:  ")
    print("実行日まであと{}日です".format(b))
    f = open('jigensave.txt','w')
    f.write(b)
    f.close()

elif a == "n":
    f = open('jigensave.txt','r')
    for b in f:
        b = int(b) - 1
        print("実行まであと{}日です".format(b))
        f = open('jigensave.txt','w')
        f.write(str(b))
        f.close()

#実行日を決定
future = today + datetime.timedelta(days=int(b))
#実行日から30日を取得(継続期間)

dur = future  +   datetime.timedelta(days=30)
#継続期間表示
for i in range((dur - future).days + 1):
    jikkou = future + datetime.timedelta(days = i)
    if today < jikkou:
        print(str(jikkou) + ":実行予定です")
    elif today > jikkou:
        print(str(jikkou) + ":過去へ戻ることはできません")
    elif today == jikkou:
        print("実行しました")
       #シェルコマンドを実行
        cmd = "ls "
        sp.call( cmd, shell=True  )
print("実行日でなければ5秒後にソフトをキルします")
#起動後5時間後にPCをシャットダウン
cmd2 = "shutdown -h +300"
sp.call( cmd2, shell=True  )
time.sleep(5)

たちあがりにウエイトをいれてみました
これでも早い場合は数字を変更してみてください
あと...savefileはpyfileと同じ階層にできるといっていたのですがどうやら/home/usrnameの下にできているようですので
一応訂正...ファイル名 .をつけて隠し属性にしたほうがいいのかなぁ?
まあ 必要なら...そのときに...




できた?!jigen2py

昨日の機能にシャットダウン機能を追加しました

#!/usr/bin/python3.7
# -*- coding: utf-8 -*-
import datetime
import time
import sys, select
import subprocess as sp

#今日を取得
today = datetime.date.today()
print(today)
print("実行日を更新しますか?(y or notuch is run):  ")
#インプット選択10秒間キー入力がなければマイナス一日
i, o, e = select.select( [sys.stdin], [], [], 10 )

if (i):
    print("input", sys.stdin.readline().strip())
    a = "y"
else:
    print("notuch key")
    a = "n"
if a == "y":
    global b
    global f
    b = input("何日後に設定しますか?:  ")
    print("実行日まであと{}日です".format(b))
    f = open('jigensave.txt','w')
    f.write(b)
    f.close()

elif a == "n":
    f = open('jigensave.txt')
    for b in f:
        b = int(b) - 1
        print("実行まであと{}日です".format(b))
        f = open('jigensave.txt','w')
        f.write(str(b))
        f.close()

#実行日を決定
future = today + datetime.timedelta(days=int(b))
#実行日から30日を取得(継続期間)

dur = future  +   datetime.timedelta(days=30)
#継続期間表示
for i in range((dur - future).days + 1):
    jikkou = future + datetime.timedelta(days = i)
    if today < jikkou:
        print(str(jikkou) + ":実行予定です")
    elif today > jikkou:
        print(str(jikkou) + ":過去へ戻ることはできません")
    elif today == jikkou:
        print("実行しました")
       #シェルコマンドを実行
        cmd = "ls "
        sp.call( cmd, shell=True  )
print("実行日でなければ5秒後にソフトをキルします")
#起動後5時間後にPCをシャットダウン
cmd2 = "shutdown -h +300"
sp.call( cmd2, shell=True  )
time.sleep(5)



これを一応デスクトップに置いているので

デスクトップエントリーに記述

[Desktop Entry]
Name=jigen2py
Exec=lxterminal -e python3.7 /home/xtoran/Desktop/jigen2.py
Type=Application

を/home/ユーザー名/.config/autostart
にjigen2py.desktopで保存(権限注意)

この設定ではスクリプト起動後5時間後にパソコンがシャットダウンします

えくすとらんの場合はbiostimer設定によって朝5時15分に
ブートしスクリプト初回手動起動30日後にコマンド実行の設定、
キー入力がなければ5時間後にシャットダウン・次の朝
オートでブート。スクリプト起動でキー入力なければ
29日後にコマンド実行と、コマンド実行日をマイナスしていきます
一応これでできたかなぁ^^
倉庫にpyファイルと記述済みデスクトップエントリーをいれておきました

もうすこし...

この前のpythonスクリプトを起動後パソコンのシャットダウンの

方法を考えていたのですが調べてみるといろいろあるようです

cronやatコマンドで時刻を設定する方法などがでてきました

しかし折角なのでスタートアップ登録した自動実行pyに

シャットダウンコマンド(起動時プラス時間で設定しておけば

オッケーなのかもと考えました

まだ実装と実験をしていませんのでうまく行くかどうかわかりませんが

うまくいけば勝手に起動・勝手にシャットダウン・決まった日にコマンド実行となり当初の計画どうりの挙動になるかとおもっています

最近ちょっと気になっているのはクリップボードマネージャ

なのですがもっと簡単に定型文が使えるソフトがあればいいのになぁなんて思っています(スニペットっていうのかなぁ)

クリップボード登録した定型文を右クリックから頭文字で候補出力!(まあえくすとらんにはつくれないでしょうけど・・・)

そんなのあるよって方はぜひ教えてください^^

 久しぶりの更新です 備忘録 使っているarchlinuxにnvidiaのドライバを入れたところドライバがあっていなかったのかxが起動せずこれをアンインストールしたがその後xf86-video-nouveauが入っているにもかかわらずxが起動しなくなったのでarchwikiにて調...